|
37 | 37 | </tr> |
38 | 38 | <tr> |
39 | 39 | <td class="headerItem">Test Date:</td> |
40 | | - <td class="headerValue">2025-12-15 11:28:56</td> |
| 40 | + <td class="headerValue">2026-02-20 18:34:13</td> |
41 | 41 | <td></td> |
42 | 42 | <td class="headerItem">Functions:</td> |
43 | 43 | <td class="headerCovTableEntryMed">83.3 %</td> |
|
289 | 289 | <span id="L227"><span class="lineNum"> 227</span> <span class="tlaGNC"> 512 : rookMagic[from].mask = emptyBitBoard;</span></span> |
290 | 290 | <span id="L228"><span class="lineNum"> 228</span> <span class="tlaGNC"> 33280 : for (Square j = 0; j < 64; j++) {</span></span> |
291 | 291 | <span id="L229"><span class="lineNum"> 229</span> <span class="tlaGNC"> 32768 : if (from == j) continue;</span></span> |
292 | | -<span id="L230"><span class="lineNum"> 230</span> <span class="tlaGNC"> 2688 : if (SQRANK(from) == SQRANK(j) && !ISOUTERFILE(j)) rookMagic[from].mask |= SquareToBitboard(j);</span></span> |
| 292 | +<span id="L230"><span class="lineNum"> 230</span> <span class="tlaGNC"> 34944 : if (SQRANK(from) == SQRANK(j) && !ISOUTERFILE(j)) rookMagic[from].mask |= SquareToBitboard(j);</span></span> |
293 | 293 | <span id="L231"><span class="lineNum"> 231</span> <span class="tlaGNC"> 34944 : if (SQFILE(from) == SQFILE(j) && !PROMOTION_RANK(j)) rookMagic[from].mask |= SquareToBitboard(j);</span></span> |
294 | 294 | <span id="L232"><span class="lineNum"> 232</span> <span class="tlaGNC"> 32256 : if (abs(SQRANK(from) - SQRANK(j)) == abs(SQFILE(from) - SQFILE(j)) && !ISOUTERFILE(j) && !PROMOTION_RANK(j))</span></span> |
295 | 295 | <span id="L233"><span class="lineNum"> 233</span> <span class="tlaGNC"> 2912 : bishopMagic[from].mask |= SquareToBitboard(j);</span></span> |
|
313 | 313 | <span id="L251"><span class="lineNum"> 251</span> : </span> |
314 | 314 | <span id="L252"><span class="lineNum"> 252</span> : #endif // MAGIC</span> |
315 | 315 | <span id="L253"><span class="lineNum"> 253</span> : </span> |
316 | | -<span id="L254"><span class="lineNum"> 254</span> <span class="tlaGNC"> 195601108 : bool isAttackedBB(const Position &p, const Square s, const Color c) { ///@todo try to optimize order better ?</span></span> |
317 | | -<span id="L255"><span class="lineNum"> 255</span> <span class="tlaGNC"> 195601108 : assert(isValidSquare(s));</span></span> |
| 316 | +<span id="L254"><span class="lineNum"> 254</span> <span class="tlaGNC"> 204137474 : bool isAttackedBB(const Position &p, const Square s, const Color c) { ///@todo try to optimize order better ?</span></span> |
| 317 | +<span id="L255"><span class="lineNum"> 255</span> <span class="tlaGNC"> 204137474 : assert(isValidSquare(s));</span></span> |
318 | 318 | <span id="L256"><span class="lineNum"> 256</span> : const BitBoard occupancy = p.occupancy();</span> |
319 | | -<span id="L257"><span class="lineNum"> 257</span> <span class="tlaGNC"> 195601108 : if (c == Co_White)</span></span> |
320 | | -<span id="L258"><span class="lineNum"> 258</span> <span class="tlaGNC"> 80191817 : return attack<P_wb>(s, p.blackBishop() | p.blackQueen(), occupancy) ||</span></span> |
321 | | -<span id="L259"><span class="lineNum"> 259</span> <span class="tlaGNC"> 78965390 : attack<P_wr>(s, p.blackRook() | p.blackQueen(), occupancy) ||</span></span> |
322 | | -<span id="L260"><span class="lineNum"> 260</span> <span class="tlaGNC"> 32655904 : attack<P_wp>(s, p.blackPawn(), occupancy, Co_White) ||</span></span> |
323 | | -<span id="L261"><span class="lineNum"> 261</span> <span class="tlaGNC"> 74338662 : attack<P_wn>(s, p.blackKnight()) ||</span></span> |
| 319 | +<span id="L257"><span class="lineNum"> 257</span> <span class="tlaGNC"> 204137474 : if (c == Co_White)</span></span> |
| 320 | +<span id="L258"><span class="lineNum"> 258</span> <span class="tlaGNC"> 88644881 : return attack<P_wb>(s, p.blackBishop() | p.blackQueen(), occupancy) ||</span></span> |
| 321 | +<span id="L259"><span class="lineNum"> 259</span> <span class="tlaGNC"> 87400134 : attack<P_wr>(s, p.blackRook() | p.blackQueen(), occupancy) ||</span></span> |
| 322 | +<span id="L260"><span class="lineNum"> 260</span> <span class="tlaGNC"> 35031338 : attack<P_wp>(s, p.blackPawn(), occupancy, Co_White) ||</span></span> |
| 323 | +<span id="L261"><span class="lineNum"> 261</span> <span class="tlaGNC"> 82121906 : attack<P_wn>(s, p.blackKnight()) ||</span></span> |
324 | 324 | <span id="L262"><span class="lineNum"> 262</span> : attack<P_wk>(s, p.blackKing());</span> |
325 | 325 | <span id="L263"><span class="lineNum"> 263</span> : else</span> |
326 | | -<span id="L264"><span class="lineNum"> 264</span> <span class="tlaGNC"> 309063222 : return attack<P_wb>(s, p.whiteBishop() | p.whiteQueen(), occupancy) ||</span></span> |
327 | | -<span id="L265"><span class="lineNum"> 265</span> <span class="tlaGNC"> 308025074 : attack<P_wr>(s, p.whiteRook() | p.whiteQueen(), occupancy) ||</span></span> |
328 | | -<span id="L266"><span class="lineNum"> 266</span> <span class="tlaGNC"> 135542960 : attack<P_wp>(s, p.whitePawn(), occupancy, Co_Black) ||</span></span> |
329 | | -<span id="L267"><span class="lineNum"> 267</span> <span class="tlaGNC"> 289902641 : attack<P_wn>(s, p.whiteKnight()) ||</span></span> |
| 326 | +<span id="L264"><span class="lineNum"> 264</span> <span class="tlaGNC"> 317438721 : return attack<P_wb>(s, p.whiteBishop() | p.whiteQueen(), occupancy) ||</span></span> |
| 327 | +<span id="L265"><span class="lineNum"> 265</span> <span class="tlaGNC"> 316346630 : attack<P_wr>(s, p.whiteRook() | p.whiteQueen(), occupancy) ||</span></span> |
| 328 | +<span id="L266"><span class="lineNum"> 266</span> <span class="tlaGNC"> 137970397 : attack<P_wp>(s, p.whitePawn(), occupancy, Co_Black) ||</span></span> |
| 329 | +<span id="L267"><span class="lineNum"> 267</span> <span class="tlaGNC"> 297329949 : attack<P_wn>(s, p.whiteKnight()) ||</span></span> |
330 | 330 | <span id="L268"><span class="lineNum"> 268</span> : attack<P_wk>(s, p.whiteKing());</span> |
331 | 331 | <span id="L269"><span class="lineNum"> 269</span> : }</span> |
332 | 332 | <span id="L270"><span class="lineNum"> 270</span> : </span> |
|
347 | 347 | <span id="L285"><span class="lineNum"> 285</span> <span class="tlaUNC"> 0 : attack<P_wk>(s, p.whiteKing());</span></span> |
348 | 348 | <span id="L286"><span class="lineNum"> 286</span> : }</span> |
349 | 349 | <span id="L287"><span class="lineNum"> 287</span> : </span> |
350 | | -<span id="L288"><span class="lineNum"> 288</span> <span class="tlaGNC tlaBgGNC"> 4034094 : BitBoard allAttackedBB(const Position &p, const Square s) {</span></span> |
351 | | -<span id="L289"><span class="lineNum"> 289</span> <span class="tlaGNC"> 4034094 : assert(isValidSquare(s));</span></span> |
| 350 | +<span id="L288"><span class="lineNum"> 288</span> <span class="tlaGNC tlaBgGNC"> 5663939 : BitBoard allAttackedBB(const Position &p, const Square s) {</span></span> |
| 351 | +<span id="L289"><span class="lineNum"> 289</span> <span class="tlaGNC"> 5663939 : assert(isValidSquare(s));</span></span> |
352 | 352 | <span id="L290"><span class="lineNum"> 290</span> : const BitBoard occupancy = p.occupancy();</span> |
353 | | -<span id="L291"><span class="lineNum"> 291</span> <span class="tlaGNC"> 8068188 : return attack<P_wb>(s, p.allBishop() | p.allQueen(), occupancy) |</span></span> |
354 | | -<span id="L292"><span class="lineNum"> 292</span> <span class="tlaGNC"> 8068188 : attack<P_wr>(s, p.allRook() | p.allQueen(), occupancy) |</span></span> |
355 | | -<span id="L293"><span class="lineNum"> 293</span> <span class="tlaGNC"> 4034094 : attack<P_wn>(s, p.allKnight()) |</span></span> |
356 | | -<span id="L294"><span class="lineNum"> 294</span> <span class="tlaGNC"> 4034094 : attack<P_wp>(s, p.blackPawn(), occupancy, Co_White) |</span></span> |
| 353 | +<span id="L291"><span class="lineNum"> 291</span> <span class="tlaGNC"> 11327878 : return attack<P_wb>(s, p.allBishop() | p.allQueen(), occupancy) |</span></span> |
| 354 | +<span id="L292"><span class="lineNum"> 292</span> <span class="tlaGNC"> 11327878 : attack<P_wr>(s, p.allRook() | p.allQueen(), occupancy) |</span></span> |
| 355 | +<span id="L293"><span class="lineNum"> 293</span> <span class="tlaGNC"> 5663939 : attack<P_wn>(s, p.allKnight()) |</span></span> |
| 356 | +<span id="L294"><span class="lineNum"> 294</span> <span class="tlaGNC"> 5663939 : attack<P_wp>(s, p.blackPawn(), occupancy, Co_White) |</span></span> |
357 | 357 | <span id="L295"><span class="lineNum"> 295</span> : attack<P_wp>(s, p.whitePawn(), occupancy, Co_Black) |</span> |
358 | | -<span id="L296"><span class="lineNum"> 296</span> <span class="tlaGNC"> 4034094 : attack<P_wk>(s, p.allKing());</span></span> |
| 358 | +<span id="L296"><span class="lineNum"> 296</span> <span class="tlaGNC"> 5663939 : attack<P_wk>(s, p.allKing());</span></span> |
359 | 359 | <span id="L297"><span class="lineNum"> 297</span> : }</span> |
360 | 360 | <span id="L298"><span class="lineNum"> 298</span> : </span> |
361 | | -<span id="L299"><span class="lineNum"> 299</span> <span class="tlaGNC"> 25820870 : BitBoard between(const Square sq1, const Square sq2){</span></span> |
| 361 | +<span id="L299"><span class="lineNum"> 299</span> <span class="tlaGNC"> 27197454 : BitBoard between(const Square sq1, const Square sq2){</span></span> |
362 | 362 | <span id="L300"><span class="lineNum"> 300</span> : #if !defined(WITH_SMALL_MEMORY)</span> |
363 | | -<span id="L301"><span class="lineNum"> 301</span> <span class="tlaGNC"> 25820870 : return mask[sq1].between[sq2];</span></span> |
| 363 | +<span id="L301"><span class="lineNum"> 301</span> <span class="tlaGNC"> 27197454 : return mask[sq1].between[sq2];</span></span> |
364 | 364 | <span id="L302"><span class="lineNum"> 302</span> : #else</span> |
365 | 365 | <span id="L303"><span class="lineNum"> 303</span> : constexpr BitBoard m1 {static_cast<BitBoard>(-1)};</span> |
366 | 366 | <span id="L304"><span class="lineNum"> 304</span> : constexpr BitBoard a2a7 {0x0001010101010100};</span> |
|
383 | 383 | <span id="L321"><span class="lineNum"> 321</span> <span class="tlaUNC tlaBgUNC"> 0 : bool isAttacked(const Position &p, const Square s){</span></span> |
384 | 384 | <span id="L322"><span class="lineNum"> 322</span> : //assert(isValidSquare(s)); ///@todo ?</span> |
385 | 385 | <span id="L323"><span class="lineNum"> 323</span> : START_TIMER</span> |
386 | | -<span id="L324"><span class="lineNum"> 324</span> <span class="tlaGNC tlaBgGNC"> 195601108 : const bool b = isValidSquare(s) && BBTools::isAttackedBB(p, s, p.c);</span></span> |
| 386 | +<span id="L324"><span class="lineNum"> 324</span> <span class="tlaGNC tlaBgGNC"> 204137474 : const bool b = isValidSquare(s) && BBTools::isAttackedBB(p, s, p.c);</span></span> |
387 | 387 | <span id="L325"><span class="lineNum"> 325</span> : STOP_AND_SUM_TIMER(IsAttacked);</span> |
388 | 388 | <span id="L326"><span class="lineNum"> 326</span> <span class="tlaUNC tlaBgUNC"> 0 : return b;</span></span> |
389 | 389 | <span id="L327"><span class="lineNum"> 327</span> : }</span> |
390 | 390 | <span id="L328"><span class="lineNum"> 328</span> : </span> |
391 | | -<span id="L329"><span class="lineNum"> 329</span> <span class="tlaGNC tlaBgGNC"> 194819412 : bool isPosInCheck(const Position& p){</span></span> |
| 391 | +<span id="L329"><span class="lineNum"> 329</span> <span class="tlaGNC tlaBgGNC"> 203225255 : bool isPosInCheck(const Position& p){</span></span> |
392 | 392 | <span id="L330"><span class="lineNum"> 330</span> : // handles chess variants</span> |
393 | 393 | <span id="L331"><span class="lineNum"> 331</span> : ///@todo some chess variant will always return false here, there is no such things as check</span> |
394 | | -<span id="L332"><span class="lineNum"> 332</span> <span class="tlaGNC"> 194819412 : return isAttacked(p, kingSquare(p));</span></span> |
| 394 | +<span id="L332"><span class="lineNum"> 332</span> <span class="tlaGNC"> 203225255 : return isAttacked(p, kingSquare(p));</span></span> |
395 | 395 | <span id="L333"><span class="lineNum"> 333</span> : }</span> |
396 | 396 | <span id="L334"><span class="lineNum"> 334</span> : </span> |
397 | | -<span id="L335"><span class="lineNum"> 335</span> <span class="tlaGNC"> 268696 : bool isAttacked(const Position &p, BitBoard bb) { // copy ///@todo should be done without iterating over Square !</span></span> |
398 | | -<span id="L336"><span class="lineNum"> 336</span> <span class="tlaGNC"> 1026328 : while (bb)</span></span> |
399 | | -<span id="L337"><span class="lineNum"> 337</span> <span class="tlaGNC"> 781696 : if (isAttacked(p, BB::popBit(bb))) return true;</span></span> |
| 397 | +<span id="L335"><span class="lineNum"> 335</span> <span class="tlaGNC"> 312420 : bool isAttacked(const Position &p, BitBoard bb) { // copy ///@todo should be done without iterating over Square !</span></span> |
| 398 | +<span id="L336"><span class="lineNum"> 336</span> <span class="tlaGNC"> 1199870 : while (bb)</span></span> |
| 399 | +<span id="L337"><span class="lineNum"> 337</span> <span class="tlaGNC"> 912219 : if (isAttacked(p, BB::popBit(bb))) return true;</span></span> |
400 | 400 | <span id="L338"><span class="lineNum"> 338</span> : return false;</span> |
401 | 401 | <span id="L339"><span class="lineNum"> 339</span> : }</span> |
402 | 402 | </pre> |
|
0 commit comments