104 bool promoted,
int vertical,
int horizontal,
108 if(promoted) offset=9;
113 value += (xkingx_table[indexXKingX<Sign>(position, king, vertical,
true)]
114 + xkingx_table[indexXKingX<Sign>(position, king, horizontal,
false)]
115 + sumkingx_table[vertical + horizontal + 17*std::abs(king.
x()-position.
x())]
118 value+= (rook_vertical_table[vertical+offset]+
119 rook_horizontal_table[horizontal+offset] +
120 sum_table[vertical+horizontal+(promoted ? 17 : 0)] +
121 x_table[indexX(position, promoted, vertical,
true)] +
122 x_table[indexX(position, promoted, horizontal,
false)] +
123 y_table[indexY<Sign>(position, promoted, vertical,
true)] +
124 y_table[indexY<Sign>(position, promoted, horizontal,
false)]);
129 value -= (xkingx_table[indexXKingX<Sign>(position, king, vertical,
true)]
130 + xkingx_table[indexXKingX<Sign>(position, king, horizontal,
false)]
131 + sumkingx_table[vertical + horizontal + 17*std::abs(king.
x()-position.
x())]
134 value-= (rook_vertical_table[vertical+offset]+
135 rook_horizontal_table[horizontal+offset] +
136 sum_table[vertical+horizontal+(promoted ? 17 : 0)] +
137 x_table[indexX(position, promoted, vertical,
true)] +
138 x_table[indexX(position, promoted, horizontal,
false)] +
139 y_table[indexY<Sign>(position, promoted, vertical,
true)] +
140 y_table[indexY<Sign>(position, promoted, horizontal,
false)]);
149 i < PtypeTraits<ROOK>::indexLimit;
157 const int vertical = osl::mobility::RookMobility::countVerticalAll<BLACK>(state,i);
158 const int horizontal = osl::mobility::RookMobility::countHorizontalAll<BLACK>(
160 adjust<1>(state, rook.
isPromoted(), vertical, horizontal, rook.
square(), out);
164 const int vertical = osl::mobility::RookMobility::countVerticalAll<WHITE>(state,i);
165 const int horizontal = osl::mobility::RookMobility::countHorizontalAll<WHITE>(
167 adjust<-1>(state, rook.
isPromoted(), vertical, horizontal, rook.
square(), out);
212 value += (bishop_table[mobility1 + mobility2 + count] +
213 each_table[mobility1 + each_offset] +
214 each_table[mobility2 + each_offset]);
218 value -= (bishop_table[mobility1 + mobility2 + count] +
219 each_table[mobility1 + each_offset] +
220 each_table[mobility2 + each_offset]);
229 i < PtypeTraits<BISHOP>::indexLimit;
237 const int mobility1 =
238 mobility::BishopMobility::countAllDir<BLACK, UL>(state, bishop) +
239 mobility::BishopMobility::countAllDir<BLACK, DR>(state, bishop);
240 const int mobility2 =
241 mobility::BishopMobility::countAllDir<BLACK, UR>(state, bishop) +
242 mobility::BishopMobility::countAllDir<BLACK, DL>(state, bishop);
243 adjust<1>(bishop.
isPromoted(), mobility1, mobility2, out);
247 const int mobility1 =
248 mobility::BishopMobility::countAllDir<WHITE, UL>(state, bishop) +
249 mobility::BishopMobility::countAllDir<WHITE, DR>(state, bishop);
250 const int mobility2 =
251 mobility::BishopMobility::countAllDir<WHITE, UR>(state, bishop) +
252 mobility::BishopMobility::countAllDir<WHITE, DL>(state, bishop);
253 adjust<-1>(bishop.
isPromoted(), mobility1, mobility2, out);