Since NNUE is faster and better than classical evaluation,
use pure NNUE for all variants except 3check.
makpong STC
ELO: 94.32 +-43.1 (95%) LOS: 100.0%
Total: 200 W: 102 L: 49 D: 49
makpong LTC
ELO: 96.19 +-59.2 (95%) LOS: 100.0%
Total: 100 W: 49 L: 22 D: 29
minixiangqi STC
ELO: 75.88 +-34.3 (95%) LOS: 100.0%
Total: 200 W: 72 L: 29 D: 99
minixiangqi LTC
ELO: 70.44 +-49.4 (95%) LOS: 99.8%
Total: 100 W: 36 L: 16 D: 48
racingkings STC
ELO: 57.86 +-25.8 (95%) LOS: 100.0%
Total: 400 W: 147 L: 81 D: 172
racingkings LTC
ELO: 56.07 +-50.4 (95%) LOS: 98.7%
Total: 100 W: 35 L: 19 D: 46
losers STC
ELO: 63.23 +-65.5 (95%) LOS: 97.5%
Total: 100 W: 53 L: 35 D: 12
losers LTC
ELO: 31.35 +-65.9 (95%) LOS: 82.8%
Total: 100 W: 50 L: 41 D: 9
// If there is PSQ imbalance use classical eval, with small probability if it is small
Value psq = Value(abs(eg_value(pos.psq_score())));
int r50 = 16 + pos.rule50_count();
- bool pure = pos.capture_the_flag_piece() && pos.checking_permitted();
+ bool pure = !pos.check_counting();
bool largePsq = psq * 16 > (NNUEThreshold1 + pos.non_pawn_material() / 64) * r50 && !pure;
bool classical = largePsq || (psq > PawnValueMg / 4 && !(pos.this_thread()->nodes & 0xB) && !pure);