http://privat.bahnhof.se/wb432434/fentest.htm
I decided to examine the human judgements by comparison with extreme brute force analysis.
I have a linux machine with 64 cores in it, and so I though I would have a run at verification of the positional test suite.
I took the programs Asmfish (an optimized stockfish), Komodo, and DeepShredder and analyzed each position for an hour with multi-pv set to 1 and again with multi-pv set to 3, using 60 CPU cores.
I also ran Houdini 5 Tactical on a Windows machine for one hour with 12 cores to search of any surprising tactical shots.
I combined the results with this program:
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <string>
#include <iostream>
using namespace std;
struct trec {
const char *Epd;
const char *bmtag;
const char *bm;
const char *acdtag;
int acd;
const char *cetag;
int ce;
const char *c0tag;
int offset;
} reclist[] =
{
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "Rae8", "acd", 43, "ce", 68, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "Qe6", "acd", 31, "ce", 60, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "Rad8", "acd", 31, "ce", 56, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "b5", "acd", 36, "ce", 54, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "Bf6", "acd", 31, "ce", 52, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "Kh8", "acd", 31, "ce", 52, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "d5", "acd", 36, "ce", 52, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "a5", "acd", 35, "ce", 52, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "Rab8", "acd", 31, "ce", 48, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "Rac8", "acd", 31, "ce", 48, "c0", 0},
{"r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - -", "bm", "Rf7", "acd", 31, "ce", 44, "c0", 0},
{"r3r1k1/ppqbbpp1/2pp1nnp/3Pp3/2P1P3/5N1P/PPBN1PP1/R1BQR1K1 w - -", "bm", "a4", "acd", 41, "ce", 26, "c0", 0},
{"r3r1k1/ppqbbpp1/2pp1nnp/3Pp3/2P1P3/5N1P/PPBN1PP1/R1BQR1K1 w - -", "bm", "Bd3", "acd", 36, "ce", 14, "c0", 0},
{"r3r1k1/ppqbbpp1/2pp1nnp/3Pp3/2P1P3/5N1P/PPBN1PP1/R1BQR1K1 w - -", "bm", "Nb1", "acd", 36, "ce", 0, "c0", 0},
{"r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - -", "bm", "Rh4", "acd", 45, "ce", 79, "c0", 0},
{"r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - -", "bm", "Nf2", "acd", 39, "ce", 65, "c0", 0},
{"r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - -", "bm", "Kb1", "acd", 39, "ce", 40, "c0", 0},
{"r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - -", "bm", "Bh2", "acd", 31, "ce", 36, "c0", 0},
{"r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - -", "bm", "Qd2", "acd", 31, "ce", 24, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "f4", "acd", 54, "ce", 36, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "Ba6", "acd", 47, "ce", 33, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "c4", "acd", 44, "ce", 25, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "g4", "acd", 46, "ce", 22, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "a4", "acd", 45, "ce", 14, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "Rfd1", "acd", 36, "ce", 12, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "g3", "acd", 36, "ce", 12, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "Bb5", "acd", 36, "ce", 12, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "Bd3", "acd", 36, "ce", 8, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "f3", "acd", 36, "ce", 8, "c0", 0},
{"r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - -", "bm", "Rc2", "acd", 30, "ce", 3, "c0", 0},
{"r1bk1bnr/ppp2ppp/8/4n3/2P5/P3B3/1P3PPP/RN2KBNR w KQ - -", "bm", "Nd2", "acd", 40, "ce", 42, "c0", 0},
{"r1bk1bnr/ppp2ppp/8/4n3/2P5/P3B3/1P3PPP/RN2KBNR w KQ - -", "bm", "h3", "acd", 37, "ce", 30, "c0", 0},
{"r1bk1bnr/ppp2ppp/8/4n3/2P5/P3B3/1P3PPP/RN2KBNR w KQ - -", "bm", "Be2", "acd", 40, "ce", 27, "c0", 0},
{"r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - -", "bm", "Na4", "acd", 44, "ce", 113, "c0", 0},
{"r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - -", "bm", "b4", "acd", 40, "ce", 89, "c0", 0},
{"r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - -", "bm", "Kh2", "acd", 36, "ce", 81, "c0", 0},
{"r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - -", "bm", "Rb2", "acd", 32, "ce", 76, "c0", 0},
{"r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - -", "bm", "Bf1", "acd", 37, "ce", 72, "c0", 0},
{"r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - -", "bm", "Rd3", "acd", 32, "ce", 48, "c0", 0},
{"r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - -", "bm", "g4", "acd", 32, "ce", 36, "c0", 0},
{"r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - -", "bm", "Ne1", "acd", 32, "ce", 16, "c0", 0},
{"8/7p/3k2p1/6P1/4KP2/8/7P/8 w - -", "bm", "h4", "acd", 106, "ce", 12847, "c0", 0},
{"8/7p/3k2p1/6P1/4KP2/8/7P/8 w - -", "bm", "Kf3", "acd", 42, "ce", 194, "c0", 0},
{"8/7p/3k2p1/6P1/4KP2/8/7P/8 w - -", "bm", "Ke3", "acd", 42, "ce", 194, "c0", 0},
{"8/7p/3k2p1/6P1/4KP2/8/7P/8 w - -", "bm", "h3", "acd", 42, "ce", 194, "c0", 0},
{"8/7p/3k2p1/6P1/4KP2/8/7P/8 w - -", "bm", "f5", "acd", 42, "ce", 194, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "Kf2", "acd", 47, "ce", 55, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "a4", "acd", 33, "ce", 44, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "h3", "acd", 44, "ce", 41, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "h4", "acd", 33, "ce", 36, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "c4", "acd", 33, "ce", 36, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "Qf5", "acd", 43, "ce", 33, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "Kf1", "acd", 33, "ce", 32, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "Rxe7", "acd", 33, "ce", 32, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "Bc3", "acd", 39, "ce", 28, "c0", 0},
{"5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - -", "bm", "Re6", "acd", 40, "ce", 25, "c0", 0},
{"3r2k1/2p2ppp/1p1br3/pPn5/3PP3/P7/1B1N2PP/R3R1K1 w - -", "bm", "Re2", "acd", 46, "ce", -79, "c0", +165},
{"3r2k1/2p2ppp/1p1br3/pPn5/3PP3/P7/1B1N2PP/R3R1K1 w - -", "bm", "Rab1", "acd", 42, "ce", -124, "c0", 165},
{"3r2k1/2p2ppp/1p1br3/pPn5/3PP3/P7/1B1N2PP/R3R1K1 w - -", "bm", "Bc1", "acd", 40, "ce", -136, "c0", 165},
{"3r2k1/2p2ppp/1p1br3/pPn5/3PP3/P7/1B1N2PP/R3R1K1 w - -", "bm", "g3", "acd", 34, "ce", -165, "c0", 165},
{"3r1rk1/p1q2pbp/1np1p1p1/1p2P3/5P2/2N2Q1P/PPP3P1/3RRBK1 b - -", "bm", "Rxd1", "acd", 44, "ce", 8, "c0", 0},
{"3r1rk1/p1q2pbp/1np1p1p1/1p2P3/5P2/2N2Q1P/PPP3P1/3RRBK1 b - -", "bm", "Kh8", "acd", 33, "ce", 0, "c0", 0},
{"3r1rk1/p1q2pbp/1np1p1p1/1p2P3/5P2/2N2Q1P/PPP3P1/3RRBK1 b - -", "bm", "h5", "acd", 41, "ce", 0, "c0", 0},
{"3r1rk1/p1q2pbp/1np1p1p1/1p2P3/5P2/2N2Q1P/PPP3P1/3RRBK1 b - -", "bm", "g5", "acd", 33, "ce", 0, "c0", 0},
{"3r1rk1/p1q2pbp/1np1p1p1/1p2P3/5P2/2N2Q1P/PPP3P1/3RRBK1 b - -", "bm", "f5", "acd", 33, "ce", 0, "c0", 0},
{"3r1rk1/p1q2pbp/1np1p1p1/1p2P3/5P2/2N2Q1P/PPP3P1/3RRBK1 b - -", "bm", "Nd5", "acd", 41, "ce", 0, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "b4", "acd", 43, "ce", 257, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Rd3", "acd", 31, "ce", 96, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Nd4", "acd", 39, "ce", 93, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Qc1", "acd", 31, "ce", 84, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Qb4", "acd", 31, "ce", 84, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Qb2", "acd", 31, "ce", 84, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Rfe1", "acd", 31, "ce", 80, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Bf4", "acd", 31, "ce", 80, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Bd2", "acd", 38, "ce", 59, "c0", 0},
{"2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - -", "bm", "Ne1", "acd", 31, "ce", 56, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Qxc5", "acd", 49, "ce", 457, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "a5", "acd", 43, "ce", 331, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Ra1", "acd", 42, "ce", 315, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Qd2", "acd", 35, "ce", 185, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Rf1", "acd", 35, "ce", 161, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Rb1", "acd", 35, "ce", 161, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Rd1", "acd", 35, "ce", 161, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Rc1", "acd", 35, "ce", 161, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Kf1", "acd", 35, "ce", 153, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "h3", "acd", 35, "ce", 149, "c0", 0},
{"2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - -", "bm", "Re2", "acd", 31, "ce", 141, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Qe2", "acd", 44, "ce", 144, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "h4", "acd", 36, "ce", 70, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "g5", "acd", 36, "ce", 68, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Bd2", "acd", 32, "ce", 52, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Qd2", "acd", 31, "ce", 44, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Re1", "acd", 31, "ce", 44, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Nd2", "acd", 31, "ce", 40, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Rf2", "acd", 31, "ce", 36, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Qe1", "acd", 31, "ce", 32, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Qc2", "acd", 31, "ce", 32, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "f5", "acd", 31, "ce", 28, "c0", 0},
{"1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - -", "bm", "Ne4", "acd", 31, "ce", 20, "c0", 0},
{"1rN1r1k1/1pq2pp1/2p1nn1p/p2p1B2/3P4/4P2P/PPQ1NPP1/2R2RK1 b - -", "bm", "Rbxc8", "acd", 46, "ce", -15, "c0", +60},
{"1rN1r1k1/1pq2pp1/2p1nn1p/p2p1B2/3P4/4P2P/PPQ1NPP1/2R2RK1 b - -", "bm", "Rexc8", "acd", 40, "ce", -18, "c0", 60},
{"1rN1r1k1/1pq2pp1/2p1nn1p/p2p1B2/3P4/4P2P/PPQ1NPP1/2R2RK1 b - -", "bm", "Ra8", "acd", 40, "ce", -41, "c0", 60},
{"1rN1r1k1/1pq2pp1/2p1nn1p/p2p1B2/3P4/4P2P/PPQ1NPP1/2R2RK1 b - -", "bm", "Qxc8", "acd", 33, "ce", -60, "c0", 60},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Rbc8", "acd", 46, "ce", 0, "c0", +44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "h6", "acd", 40, "ce", 0, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "exf4", "acd", 40, "ce", -6, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Qc4", "acd", 32, "ce", 0, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Kh8", "acd", 31, "ce", -4, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Bc6", "acd", 31, "ce", -12, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Ra8", "acd", 31, "ce", -20, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Qc6", "acd", 31, "ce", -20, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Qc8", "acd", 31, "ce", -32, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Be6", "acd", 31, "ce", -40, "c0", 44},
{"1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - -", "bm", "Rec8", "acd", 31, "ce", -44, "c0", 44},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "b5", "acd", 42, "ce", 53, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "a5", "acd", 38, "ce", 46, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "h6", "acd", 37, "ce", 30, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "Qb6", "acd", 32, "ce", 64, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "Qc7", "acd", 32, "ce", 60, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "Rc8", "acd", 32, "ce", 56, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "Ra8", "acd", 32, "ce", 52, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "b6", "acd", 32, "ce", 52, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "a6", "acd", 32, "ce", 52, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "Be8", "acd", 32, "ce", 40, "c0", 0},
{"1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - -", "bm", "Ncxe5", "acd", 32, "ce", 36, "c0", 0},
{0,0,0,0,0,0,0,0,0}
};
int main(void)
{
std::string Epd, PreviousEpd = "";
int index;
double hiDepth = 0;
double hiScore = 0;
double Offset;
double Score;
for (index = 0; reclist[index].Epd; index++)
{
Epd = reclist[index].Epd;
if (index == 0)
{
hiDepth = reclist[index].acd;
Offset = reclist[index].offset;
hiScore = reclist[index].ce + Offset;
}
else if (strcmp(reclist[index].Epd, reclist[index-1].Epd) != 0)
{
PreviousEpd = reclist[index - 1].Epd;
hiDepth = reclist[index].acd;
Offset = reclist[index].offset;
hiScore = reclist[index].ce + Offset;
}
double ScoreRatio = (reclist[index].ce + Offset) / hiScore;
double DepthRatio = reclist[index].acd / hiDepth;
Score = floor(10.0 * ScoreRatio * DepthRatio + 0.5);
if (Score > 0)
std::cout << reclist[index].Epd << " " << reclist[index].bm << "=" << Score << std::endl;
}
return 0;
}
// Here is the output generated by the program:
/*
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - Rae8=10
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - Qe6=6
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - Rad8=6
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - b5=7
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - Bf6=6
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - Kh8=6
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - d5=6
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - a5=6
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - Rab8=5
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - Rac8=5
r4rk1/p2qn1bp/1pnp2p1/2p2p2/4PP1N/2PPB3/PP2QN1P/R4RK1 b - - Rf7=5
r3r1k1/ppqbbpp1/2pp1nnp/3Pp3/2P1P3/5N1P/PPBN1PP1/R1BQR1K1 w - - a4=10
r3r1k1/ppqbbpp1/2pp1nnp/3Pp3/2P1P3/5N1P/PPBN1PP1/R1BQR1K1 w - - Bd3=5
r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - - Rh4=10
r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - - Nf2=7
r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - - Kb1=4
r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - - Bh2=3
r3r1k1/1b1n1p2/1q1p1n1p/2p1p2P/p1P3p1/P1QNPPB1/1P2B1P1/2KR3R w - - Qd2=2
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - f4=10
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - Ba6=8
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - c4=6
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - g4=5
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - a4=3
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - Rfd1=2
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - g3=2
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - Bb5=2
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - Bd3=1
r2r2k1/p3ppbp/1p4p1/3p4/3P4/2P1P2P/P3BPP1/2R2RK1 w - - f3=1
r1bk1bnr/ppp2ppp/8/4n3/2P5/P3B3/1P3PPP/RN2KBNR w KQ - - Nd2=10
r1bk1bnr/ppp2ppp/8/4n3/2P5/P3B3/1P3PPP/RN2KBNR w KQ - - h3=7
r1bk1bnr/ppp2ppp/8/4n3/2P5/P3B3/1P3PPP/RN2KBNR w KQ - - Be2=6
r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - - Na4=10
r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - - b4=7
r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - - Kh2=6
r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - - Rb2=5
r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - - Bf1=5
r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - - Rd3=3
r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - - g4=2
r1b1r1k1/1p1n1pbp/2p1n1p1/q1P1p3/4P3/1PN1BNPP/2Q2PB1/1R1R2K1 w - - Ne1=1
8/7p/3k2p1/6P1/4KP2/8/7P/8 w - - h4=10
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - Kf2=10
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - a4=6
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - h3=7
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - h4=5
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - c4=5
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - Qf5=5
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - Kf1=4
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - Rxe7=4
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - Bc3=4
5r1k/1q2rnpp/p4p2/1pp5/6Q1/1P3P2/PBP3PP/3RR1K1 w - - Re6=4
3r2k1/2p2ppp/1p1br3/pPn5/3PP3/P7/1B1N2PP/R3R1K1 w - - Re2=10
3r2k1/2p2ppp/1p1br3/pPn5/3PP3/P7/1B1N2PP/R3R1K1 w - - Rab1=4
3r2k1/2p2ppp/1p1br3/pPn5/3PP3/P7/1B1N2PP/R3R1K1 w - - Bc1=3
3r1rk1/p1q2pbp/1np1p1p1/1p2P3/5P2/2N2Q1P/PPP3P1/3RRBK1 b - - Rxd1=10
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - b4=10
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Rd3=3
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Nd4=3
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Qc1=2
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Qb4=2
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Qb2=2
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Rfe1=2
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Bf4=2
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Bd2=2
2rq3r/pb1pbkpp/1p2pp2/n1P5/2P5/QP2BNPB/P3PP1P/3R1RK1 w - - Ne1=2
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Qxc5=10
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - a5=6
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Ra1=6
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Qd2=3
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Rf1=3
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Rb1=3
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Rd1=3
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Rc1=3
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Kf1=2
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - h3=2
2r2k2/5p2/2Bp1b1r/2qPp1pp/PpN1P3/1P2Q3/5PPP/4R1K1 w - - Re2=2
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Qe2=10
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - h4=4
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - g5=4
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Bd2=3
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Qd2=2
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Re1=2
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Nd2=2
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Rf2=2
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Qe1=2
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Qc2=2
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - f5=1
1rb1nrk1/2q1bppp/p1n1p3/2p1P3/2Pp1PP1/3P1NN1/P5BP/R1BQ1RK1 w - - Ne4=1
1rN1r1k1/1pq2pp1/2p1nn1p/p2p1B2/3P4/4P2P/PPQ1NPP1/2R2RK1 b - - Rbxc8=10
1rN1r1k1/1pq2pp1/2p1nn1p/p2p1B2/3P4/4P2P/PPQ1NPP1/2R2RK1 b - - Rexc8=8
1rN1r1k1/1pq2pp1/2p1nn1p/p2p1B2/3P4/4P2P/PPQ1NPP1/2R2RK1 b - - Ra8=4
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - Rbc8=10
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - h6=9
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - exf4=8
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - Qc4=7
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - Kh8=6
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - Bc6=5
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - Ra8=4
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - Qc6=4
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - Qc8=2
1r2r1k1/1pqbbppp/p2p1n2/4p3/P3PP2/2N1BB2/1PP2QPP/R4R1K b - - Be6=1
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - b5=10
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - a5=8
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - h6=5
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - Qb6=9
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - Qc7=9
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - Rc8=8
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - Ra8=7
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - b6=7
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - a6=7
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - Be8=6
1r1q1rk1/pp1bbppp/2n1p1n1/4P3/2BpN3/3P1N2/PP2QPPP/R1B1R1K1 b - - Ncxe5=5
*/
The purpose of the offset field is to simplify the math for positions for which the top score is negative. I take the most negative reasonable score from the position's analysis and use it negated as an offset.