// Connected pawn bonus by opposed, phalanx, twice supported and rank
Score Connected[2][2][2][RANK_NB];
- // Doubled pawn penalty by file
- const Score Doubled[FILE_NB] = {
- S(11, 34), S(17, 38), S(19, 38), S(19, 38),
- S(19, 38), S(19, 38), S(17, 38), S(11, 34) };
+ // Doubled pawn penalty
+ const Score Doubled = S(18,38);
// Lever bonus by rank
const Score Lever[RANK_NB] = {
// either there is a stopper in the way on this rank, or there is a
// stopper on adjacent file which controls the way to that rank.
backward = (b | shift_bb<Up>(b & adjacent_files_bb(f))) & stoppers;
-
+
assert(!backward || !(pawn_attack_span(Them, s + Up) & neighbours));
}
score += Connected[opposed][!!phalanx][more_than_one(supported)][relative_rank(Us, s)];
if (doubled)
- score -= Doubled[f] / distance<Rank>(s, frontmost_sq(Us, doubled));
+ score -= Doubled / distance<Rank>(s, frontmost_sq(Us, doubled));
if (lever)
score += Lever[relative_rank(Us, s)];
{ },
{ // Pawn
{ S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0) },
- { S(-19, 5), S( 1,-4), S( 7, 8), S( 3,-2) },
- { S(-26,-6), S( -7,-5), S( 19, 5), S(24, 4) },
- { S(-25, 1), S(-14, 3), S( 20,-8), S(35,-3) },
- { S(-14, 6), S( 0, 9), S( 3, 7), S(21,-6) },
- { S(-14, 6), S(-13,-5), S( -6, 2), S(-2, 4) },
- { S(-12, 1), S( 15,-9), S( -8, 1), S(-4,18) },
- { S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0) }
+ { S(-16, 7), S( 1,-4), S( 7, 8), S( 3,-2) },
+ { S(-23,-4), S( -7,-5), S( 19, 5), S(24, 4) },
+ { S(-22, 3), S(-14, 3), S( 20,-8), S(35,-3) },
+ { S(-11, 8), S( 0, 9), S( 3, 7), S(21,-6) },
+ { S(-11, 8), S(-13,-5), S( -6, 2), S(-2, 4) },
+ { S( -9, 3), S( 15,-9), S( -8, 1), S(-4,18) }
},
{ // Knight
{ S(-143, -97), S(-96,-82), S(-80,-46), S(-73,-14) },