From 0c1055d7aa3eda7ecf5434943b4f257c8797ef67 Mon Sep 17 00:00:00 2001 From: Moritz Eigenauer Date: Tue, 18 Nov 2025 13:03:52 +0100 Subject: [PATCH] fixed eval wrong table orientation --- progress_tracking/progress.xlsx | Bin 5576 -> 5602 bytes src/eval/piece_square_tables.rs | 36 +++++++++++++++++--------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/progress_tracking/progress.xlsx b/progress_tracking/progress.xlsx index 8db78b772b48cc9c6479332e3e55dbedd4d25697..f28baa38f3b110df809a50a12df7a99c854fffa1 100644 GIT binary patch delta 1533 zcmZ9Mc{J1u6vt<=8-vEY(1>Iw3?`)FHAb%_#-wK%lzlACu{>GIkdd9?XX}xXtte(t zyews_tPQeO$jq?~&z_ei^?2v>PN)0NJ>Prp`QGnepDsq`>dS<6 z%SPMUEH^2sA|u&s{KIjg~Z5epdu<=v= zBaCp)QHJeiq!wf&D}mBH6N$n>Nsrc>CtPtlxTlS&s7U*%>kG)FwL>mNuxVf+Qkscb zwaYe(&h?=nYFOugABBzF@*3H?Q2(5B7veQ|$GZ4YnBcnu&~QZxfIhIQZ>azWHV`eV zWhQ1mYY@na#G2Gq7cO@C$X4Cy6j34fcxJUlo(VM^(|&@BRae#&;DFHv%Y<5f1M&IA zjdnHqHU5Gnl*&#@0lLQto95oJ!wJ#LPcOH=Nr_tz2`^)>7I7jLcIj^xImGBD#;bL> zcgeI0zsF11=dam!izO4+ z&S>{%VXSUz7{ttN!LX$fHwDJpyIcemCzfJ**W?5h$~ad7ie6WG@t3m%sy%3)CjBw_=TF-fg#>Q_>Eklo z2!6=1Iq}NdE~z3N@ynd?l+7jC_klu&w3cZJkp4EBX2{XP|s533s5Rd!<`BMy1eG{cdsm&_BIzYrSwF{uNmk2P1SGf z3X7-i=Rfy=Vz#Z}eNtjmK0Q)jb@zB4CU}4xduNoYQ*T}+?CPKBhem))_b4TBWf|kmMP-Dn$n32OvOi&4!6F`r82pS&*QiiZ8Ot90e9l>CarcAZ2uFA62}i6<#O= z1bQtB0*URR_IpKx2`~^S%wH!sB;4OKSUW7h-^LOQk%E5bG0-N30&f9RQnLFWKJST1 y;2`p_!oI2g5~s0h&xr>Hfn>is?)7M}vn1duiGu%RMM0v#XMh5via;7-|NLL1qqoQa delta 1468 zcmZ9Mc|6n!6u{?TjGLNCWsGr#Ay;D@i5!c@EyCnJHj#4WTK#MxsvYJiaA); zLii3XrCutAaK4rEBJ6;~dX`WVJF)>6_6{mzSFu{1HM;E&Q-!jg(m#CIDhGKjE+_ht zf|p)Ii-AC@8q}{6ngC)G>sRM8Q~bdEsWiN(T8l`p@y&giWmfQOgG;#uYzhD>#Jq!D zdn@i>7+B3yq~WAxUQ4EX`L%oWWox1$yUPis6%Z1TP@bQRdZ|NZ)N`9qyl<~qF ziosp|C@~3f9n!vrw{1JPMqaQEwvY|8W-WM?6e+!dY{4ShU8|0?Zhi+SkX5^}evy;lnPP@M%VZUho z#6c<)i37n-8-tTxvUSrVjjZ4$VJgGtksj=03=R1zlo(zOpKCUC=VnEU_k?+GzA5ZT zmViTpZ6B#XD%EcgB1)`s(#>G3Y+I|GEF61E?M9QLaCB#&Za~XUj}q>|!cl`zW;?tX zpZEDRcGiw(^f+~nW;&`Yg;IS|xre(HXP&+U#2n2T{OxMzITF975OCKXHkA~#p!dMa z!2pCKde|0x4NyiX|z2nuKLEB%FP( z*=5xjOVp+{UC{IO>Sz>9kN_MDK5+PEp@NsHlZo5gu#*KIT=ThF5*Wy(YCVputxbBV z(5Rr+y-($>!?UEH#~21j?$(^x%@Sa~Mgo~U__0QnnM91`sIQeX`+(b7qvmFFJ%XkZ zF+3!&DsBzZ`;Op2MWZszSA&~KB<1Rn4ot0}Xf`4mq- zlA+I`5|3@@1!FUFJ?R%M7j-ayXV~uw9b{to&lip@UwXPyiAOV?!&6sC){TvxIIEkH z$w<@jz-af_(p?#u*GpIE(f5i2>pRA;`r{H#U-lkLvA~6O7W=l#;^5PSq2q?Q^#j*q z{wx~;?n|h23qG9}00+Y^Hf;`TW}Y8Eqy4$9;7#Cb zpY=eOr#(%}%m+3l#`n&gTQDTK8WHncVCsxn^%B0nROoy=Qh#2&K4w)_U@>3b>zL$t z%GO_i`JzPoz*n!bTXTOhYxSe%T0>;2AP~DCiac*Cw=T(_0dG}mj3QTr?%Q1d#q#a@ z|C1qgb~|3QvI}AJfB8fs%te!G1PW|H?LeSJFpWT2PRW5lA&F6ONrrnx*^>ZL}p|&BlVaeM?yZ-=9 C(1`*7 diff --git a/src/eval/piece_square_tables.rs b/src/eval/piece_square_tables.rs index fd49870..d882e4e 100644 --- a/src/eval/piece_square_tables.rs +++ b/src/eval/piece_square_tables.rs @@ -130,47 +130,49 @@ pub const EG_KING_TABLE: [i32; 64] = [ -53, -34, -21, -11, -28, -14, -24, -43 ]; -/// Helper function to reverse the table at compile time -const fn reverse_psqt(table: [i32; 64]) -> [i32; 64] { - let mut reversed = [0; 64]; +/// Helper function to mirror the table vertically at compile time +const fn mirror_psqt(table: [i32; 64]) -> [i32; 64] { + let mut mirrored = [0; 64]; let mut i = 0; while i < 64 { - reversed[i] = table[63 - i]; + // XOR 56 maps rank 1 to 8, 2 to 7 etc, keeping files intact + mirrored[i] = table[i ^ 56]; i += 1; } - reversed + mirrored } // Type signature: [Piece (6)] -> [Color (2)] -> [Phase (2)] -> [Square (64)] pub const PSQT: [[[[i32; 64]; 2]; 2]; 6] = [ // 1. PAWN [ - [MG_PAWN_TABLE, EG_PAWN_TABLE], // White - [reverse_psqt(MG_PAWN_TABLE), reverse_psqt(EG_PAWN_TABLE)] // Black (Reversed) + [mirror_psqt(MG_PAWN_TABLE), mirror_psqt(EG_PAWN_TABLE)], // White (Muss geflippt werden!) + [MG_PAWN_TABLE, EG_PAWN_TABLE] // Black (Ist bereits korrekt für schwarze Indices) ], // 2. KNIGHT [ - [MG_KNIGHT_TABLE, EG_KNIGHT_TABLE], // White - [reverse_psqt(MG_KNIGHT_TABLE), reverse_psqt(EG_KNIGHT_TABLE)]// Black (Reversed) + [mirror_psqt(MG_KNIGHT_TABLE), mirror_psqt(EG_KNIGHT_TABLE)], // White + [MG_KNIGHT_TABLE, EG_KNIGHT_TABLE] // Black ], // 3. BISHOP [ - [MG_BISHOP_TABLE, EG_BISHOP_TABLE], // White - [reverse_psqt(MG_BISHOP_TABLE), reverse_psqt(EG_BISHOP_TABLE)]// Black (Reversed) + [mirror_psqt(MG_BISHOP_TABLE), mirror_psqt(EG_BISHOP_TABLE)], // White + [MG_BISHOP_TABLE, EG_BISHOP_TABLE] // Black ], // 4. ROOK [ - [MG_ROOK_TABLE, EG_ROOK_TABLE], // White - [reverse_psqt(MG_ROOK_TABLE), reverse_psqt(EG_ROOK_TABLE)] // Black (Reversed) + [mirror_psqt(MG_ROOK_TABLE), mirror_psqt(EG_ROOK_TABLE)], // White + [MG_ROOK_TABLE, EG_ROOK_TABLE] // Black ], // 5. QUEEN [ - [MG_QUEEN_TABLE, EG_QUEEN_TABLE], // White - [reverse_psqt(MG_QUEEN_TABLE), reverse_psqt(EG_QUEEN_TABLE)] // Black (Reversed) + [mirror_psqt(MG_QUEEN_TABLE), mirror_psqt(EG_QUEEN_TABLE)], // White + [MG_QUEEN_TABLE, EG_QUEEN_TABLE] // Black ], // 6. KING [ - [MG_KING_TABLE, EG_KING_TABLE], // White - [reverse_psqt(MG_KING_TABLE), reverse_psqt(EG_KING_TABLE)] // Black (Reversed) + [mirror_psqt(MG_KING_TABLE), mirror_psqt(EG_KING_TABLE)], // White + [MG_KING_TABLE, EG_KING_TABLE] // Black ], ]; +