Fix bug for incommensurate time odds
authorH.G. Muller <h.g.muller@hccnet.nl>
Fri, 8 Jan 2010 11:35:10 +0000 (12:35 +0100)
committerArun Persaud <arun@nubati.net>
Tue, 12 Jan 2010 04:03:35 +0000 (20:03 -0800)
After normalization (-timeOddsMode 1) the time odds factors can be
non-integer, and thus must be stored as float.

backend.c
backend.h

index 741a93b..e65421c 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -756,7 +756,7 @@ InitBackEnd1()
     /* [HGM] time odds: set factor for each machine */
     first.timeOdds  = appData.firstTimeOdds;
     second.timeOdds = appData.secondTimeOdds;
-    { int norm = 1;
+    { float norm = 1;
         if(appData.timeOddsMode) {
             norm = first.timeOdds;
             if(norm > second.timeOdds) norm = second.timeOdds;
@@ -12723,7 +12723,7 @@ SendTimeRemaining(cps, machineWhite)
     /* [HGM] translate opponent's time by time-odds factor */
     otime = (otime * cps->other->timeOdds) / cps->timeOdds;
     if (appData.debugMode) {
-        fprintf(debugFP, "time odds: %d %d \n", cps->timeOdds, cps->other->timeOdds);
+        fprintf(debugFP, "time odds: %f %f \n", cps->timeOdds, cps->other->timeOdds);
     }
 
     if (time <= 0) time = 1;
index e38297f..e310321 100644 (file)
--- a/backend.h
+++ b/backend.h
@@ -330,7 +330,7 @@ typedef struct _CPS {
     int hasOwnBookUCI;   /* [AS] 0=use GUI or Polyglot book, 1=has own book */
 
     /* [HGM] time odds */
-    int timeOdds;   /* factor through which we divide time for this engine  */
+    float timeOdds; /* factor through which we divide time for this engine  */
     int debug;      /* [HGM] ignore engine debug lines starting with '#'    */
     int maxNrOfSessions; /* [HGM] secondary TC: max args in 'level' command */
     int accumulateTC; /* [HGM] secondary TC: how to handle extra sessions   */