The changes to eval.c you committed don't help for me. I still get the wrong results.

On the other hand, adding the g_print() in eval.c 1.376 does indeed work around the problem. So does the following change :

--- eval.c.orig    2009-07-10 21:32:52.000000000 +0200
+++ eval.c      2009-08-08 20:59:46.000000000 +0200
@@ -5765,7 +5765,7 @@
       float arInput[200];

       for(i = 0; i < ml.cMoves; i++) {
-       move* const pm = &ml.amMoves[i];
+       move* const volatile pm = &ml.amMoves[i];

        PositionFromKey(anBoardOut, pm->auch);
        SwapSides(anBoardOut);


On Sat, 8 Aug 2009, Christian Anthon wrote:

It was indeed a compiler issue. The following non-fix made the problem
disappear for me:

replace

          pm->rScore = UtilityME(arOutput, pci);
          if( i < nPruneMoves ) {

with

          pm->rScore = UtilityME(arOutput, pci);
         g_print("%f\n", pm->rScore)
          if( i < nPruneMoves ) {

around line 5811 in eval.c.

I attempted to fix the code. But my attempts made the code a bit
slower or did nothing. I ended up committing something that is much
simpler, but slightly slower than before. You are welcome to suggest
changes and test it for speed. In particular the sorting is a bit
overkill since we only need the 10 best pruned moves in no particular
order. And I'm not sure that the forced inline of eval_prune is an
advantage.



_______________________________________________
Bug-gnubg mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gnubg

Reply via email to