Dev Builds » 20140322-1030

Use this dev build

NCM plays each Stockfish dev build 20,000 times against Stockfish 15. This yields an approximate Elo difference and establishes confidence in the strength of the dev builds.

Summary

Host Duration Avg Base NPS Games WLD Standard Elo Ptnml(0-2) Gamepair Elo

Test Detail

ID Host Base NPS Games WLD Standard Elo Ptnml(0-2) Gamepair Elo CLI PGN

Commit

Commit ID 4eee60343323499d087709614d47e24f66437697
Author Marco Costalba
Date 2014-03-22 10:30:06 UTC
Fix a subtle bug in UCI options printing We want all the UCI options are printed in the order in which are assigned, so we use an index that, depending on Options.size(), increases after each option is added to the map. The problem is that, for instance, in the first assignment: o["Write Debug Log"] = Option(false, on_logger); Options.size() can value 0 or 1 according if the l-value (that increments the size) has been evaluated after or before the r-value (that uses the size value). The culprit is that assignment operator in C++ is not a sequence point: http://en.wikipedia.org/wiki/Sequence_point (Note: to be nitpick here we actually use std::map::operator=() that being a function can evaluate its arguments in any order) So there is no guarantee on what term is evaluated first and behavior is undefined by standard in this case. The net result is that in case r-value is evaluated after l-value the last idx is not size() - 1, but size() and in the printing loop we miss the last option! Bug was there since ages but only recently has been exposed by the removal of UCI_Analyze option so that the last one becomes UCI_Chess960 and when it is missing engine cannot play anymore Chess960. The fix is trivial (although a bit hacky): just increase the last loop index. Reported by Eric Mullins that found it on an ARM and MIPS platforms with gcc 4.7 No functional change.
Copyright 2011–2024 Next Chess Move LLC