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>
Wed, 13 Jan 2010 03:31:40 +0000 (19:31 -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 4dab307..fa3e089 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -743,7 +743,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;
@@ -12602,7 +12602,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 9436347..cddf34b 100644 (file)
--- a/backend.h
+++ b/backend.h
@@ -325,7 +325,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   */