Some clarifications:
Firstly, in the hashing section (6.1) I note that the first 8 bytes are used/ordered the same, and perhaps the reader might conclude the second 8 had nothing in common. This is not true, as both Fruit 2.1 and Rybka 1.0 Beta have min/max scores (2 bytes each) and min/max depths (1 byte each). It seems that this min/max split is quite rare (though not unseen) for a PVS engine, but I elided this item on the grounds that perhaps it was merely an "idea" from Fruit.
Secondly, in the evaluation section, I might emphasise that not only is the notion of mobility the same in Fruit 2.1 and Rybka 1.0 Beta (see footnote 4), but also the overall effect on the evaluation in both is
linear in the number of squares attacked. For comparison, here is the numerology from Pepito:
Code: Select all
static const int MOV_ALFIL[14] = {-10, -5, 2, 3, 5, 6, 7, 8, 10, 10, 10, 10, 10, 10};
//static const int MOV_ALFIL[14] = {-15, -5, 2, 3, 5, 10, 15, 15, 15, 15, 15, 15, 15, 15};
static const int MOV_TORRE[15] = {-5, - 3, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8};
//static const int MOV_CABALLO[9] = {-15, -4, 1, 2, 3, 4, 5, 7, 7};
Similarly for Phalanx XXII:
Code: Select all
int B_mobi[20] =
{ -36, -28, -20, -14, -6, -2, 1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8 };
int R_mobi[16] =
{ -9, -5, -2, 0, 2, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6 };
Also, for comparison to the 26-77-154-256/10-30-60-100 scaling for Fruit 2.1 and Rybka 1.0 Beta in passed/candidate pawns, here is Pepito:
Code: Select all
static const int PEON_PASADO[8] = {0, 5, 15, 30, 55, 75, 100, 0};
static const int PEON_PASADO_BLOQ[8] = {0, 5, 15, 20, 40, 60, 85, 0};
static const int REY_APOYA_PASADO[8] = {0, 0, 0, 0, 5, 20, 60, 100};
Another minor similarity is that Rybka 1.0 Beta and Fruit 2.1 both have constant penalties for pawn defects (isolated/backward/doubled), while some (certainly not all, maybe not even most) engines have rank- or file-based numerology for some of these. For instance, Phalanx XXII has, well, I'm not sure whether it's file or rank [the comments conflict], but it's something for isolated pawns:
Code: Select all
/* isolated pawn penalty by rank */
static const int isofile[10] =
{ 0, -4, -6, -8, -10, -10, -8, -6, -4, 0 };
/*** A B C D E F G H ***/
PS. 2451 downloads of the PDF!

[2454 by the time I finished editing!]