rename hyperbola functions to hq
This commit is contained in:
@@ -52,11 +52,11 @@ bool sq_is_attacked(const pos_t *pos, const bitboard_t occ, const square_t sq, c
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* bishop / queen */
|
/* bishop / queen */
|
||||||
if (hyperbola_bishop_moves(occ, sq) & (pos->bb[c][BISHOP] | pos->bb[c][QUEEN]))
|
if (hq_bishop_moves(occ, sq) & (pos->bb[c][BISHOP] | pos->bb[c][QUEEN]))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
/* rook / queen */
|
/* rook / queen */
|
||||||
if (hyperbola_rook_moves(occ, sq) & (pos->bb[c][ROOK] | pos->bb[c][QUEEN]))
|
if (hq_rook_moves(occ, sq) & (pos->bb[c][ROOK] | pos->bb[c][QUEEN]))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
/* knight */
|
/* knight */
|
||||||
@@ -137,7 +137,7 @@ bitboard_t sq_attackers(const pos_t *pos, const bitboard_t occ, const square_t s
|
|||||||
|
|
||||||
/* bishop / queen */
|
/* bishop / queen */
|
||||||
to = pos->bb[c][BISHOP] | pos->bb[c][QUEEN];
|
to = pos->bb[c][BISHOP] | pos->bb[c][QUEEN];
|
||||||
tmp = hyperbola_bishop_moves(occ, sq) & to;
|
tmp = hq_bishop_moves(occ, sq) & to;
|
||||||
attackers |= tmp;
|
attackers |= tmp;
|
||||||
# ifdef DEBUG_ATTACK_ATTACKERS
|
# ifdef DEBUG_ATTACK_ATTACKERS
|
||||||
bb_print("att bishop/queen", tmp);
|
bb_print("att bishop/queen", tmp);
|
||||||
@@ -145,7 +145,7 @@ bitboard_t sq_attackers(const pos_t *pos, const bitboard_t occ, const square_t s
|
|||||||
|
|
||||||
/* rook / queen */
|
/* rook / queen */
|
||||||
to = pos->bb[c][ROOK] | pos->bb[c][QUEEN];
|
to = pos->bb[c][ROOK] | pos->bb[c][QUEEN];
|
||||||
tmp = hyperbola_rook_moves(occ, sq) & to;
|
tmp = hq_rook_moves(occ, sq) & to;
|
||||||
attackers |= tmp;
|
attackers |= tmp;
|
||||||
# ifdef DEBUG_ATTACK_ATTACKERS
|
# ifdef DEBUG_ATTACK_ATTACKERS
|
||||||
bb_print("att rook/queen", tmp);
|
bb_print("att rook/queen", tmp);
|
||||||
|
@@ -95,7 +95,7 @@ void hyperbola_init()
|
|||||||
*
|
*
|
||||||
* @Return: bitboard of @piece available pseudo-moves.
|
* @Return: bitboard of @piece available pseudo-moves.
|
||||||
*/
|
*/
|
||||||
bitboard_t hyperbola_rank_moves(bitboard_t occ, square_t sq)
|
bitboard_t hq_rank_moves(bitboard_t occ, square_t sq)
|
||||||
{
|
{
|
||||||
u32 rank = sq & SQ_RANKMASK;
|
u32 rank = sq & SQ_RANKMASK;
|
||||||
u32 file = sq & SQ_FILEMASK;
|
u32 file = sq & SQ_FILEMASK;
|
||||||
@@ -122,7 +122,7 @@ bitboard_t hyperbola_rank_moves(bitboard_t occ, square_t sq)
|
|||||||
*
|
*
|
||||||
* @Return: bitboard of piece available pseudo-moves.
|
* @Return: bitboard of piece available pseudo-moves.
|
||||||
*/
|
*/
|
||||||
bitboard_t hyperbola_moves(const bitboard_t pieces, const square_t sq,
|
bitboard_t hq_moves(const bitboard_t pieces, const square_t sq,
|
||||||
const bitboard_t mask)
|
const bitboard_t mask)
|
||||||
{
|
{
|
||||||
bitboard_t o = pieces & mask;
|
bitboard_t o = pieces & mask;
|
||||||
@@ -141,9 +141,9 @@ bitboard_t hyperbola_moves(const bitboard_t pieces, const square_t sq,
|
|||||||
*
|
*
|
||||||
* @Return: bitboard of piece available pseudo-moves on its file.
|
* @Return: bitboard of piece available pseudo-moves on its file.
|
||||||
*/
|
*/
|
||||||
bitboard_t hyperbola_file_moves(const bitboard_t occ, const square_t sq)
|
bitboard_t hq_file_moves(const bitboard_t occ, const square_t sq)
|
||||||
{
|
{
|
||||||
return hyperbola_moves(occ, sq, bb_sqfile[sq]);
|
return hq_moves(occ, sq, bb_sqfile[sq]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -153,9 +153,9 @@ bitboard_t hyperbola_file_moves(const bitboard_t occ, const square_t sq)
|
|||||||
*
|
*
|
||||||
* @Return: bitboard of piece available pseudo-moves on its diagonal.
|
* @Return: bitboard of piece available pseudo-moves on its diagonal.
|
||||||
*/
|
*/
|
||||||
bitboard_t hyperbola_diag_moves(const bitboard_t occ, const square_t sq)
|
bitboard_t hq_diag_moves(const bitboard_t occ, const square_t sq)
|
||||||
{
|
{
|
||||||
return hyperbola_moves(occ, sq, bb_sqdiag[sq]);
|
return hq_moves(occ, sq, bb_sqdiag[sq]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -165,9 +165,9 @@ bitboard_t hyperbola_diag_moves(const bitboard_t occ, const square_t sq)
|
|||||||
*
|
*
|
||||||
* @Return: bitboard of piece available pseudo-moves on its anti-diagonal.
|
* @Return: bitboard of piece available pseudo-moves on its anti-diagonal.
|
||||||
*/
|
*/
|
||||||
bitboard_t hyperbola_anti_moves(const bitboard_t occ, const square_t sq)
|
bitboard_t hq_anti_moves(const bitboard_t occ, const square_t sq)
|
||||||
{
|
{
|
||||||
return hyperbola_moves(occ, sq, bb_sqanti[sq]);
|
return hq_moves(occ, sq, bb_sqanti[sq]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -177,9 +177,9 @@ bitboard_t hyperbola_anti_moves(const bitboard_t occ, const square_t sq)
|
|||||||
*
|
*
|
||||||
* @Return: bitboard of bishop available pseudo-moves.
|
* @Return: bitboard of bishop available pseudo-moves.
|
||||||
*/
|
*/
|
||||||
bitboard_t hyperbola_bishop_moves(const bitboard_t occ, const square_t sq)
|
bitboard_t hq_bishop_moves(const bitboard_t occ, const square_t sq)
|
||||||
{
|
{
|
||||||
return hyperbola_diag_moves(occ, sq) | hyperbola_anti_moves(occ, sq);
|
return hq_diag_moves(occ, sq) | hq_anti_moves(occ, sq);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -189,9 +189,9 @@ bitboard_t hyperbola_bishop_moves(const bitboard_t occ, const square_t sq)
|
|||||||
*
|
*
|
||||||
* @Return: bitboard of rook available pseudo-moves.
|
* @Return: bitboard of rook available pseudo-moves.
|
||||||
*/
|
*/
|
||||||
bitboard_t hyperbola_rook_moves(const bitboard_t occ, const square_t sq)
|
bitboard_t hq_rook_moves(const bitboard_t occ, const square_t sq)
|
||||||
{
|
{
|
||||||
return hyperbola_file_moves(occ, sq) | hyperbola_rank_moves(occ, sq);
|
return hq_file_moves(occ, sq) | hq_rank_moves(occ, sq);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -204,7 +204,7 @@ bitboard_t hyperbola_rook_moves(const bitboard_t occ, const square_t sq)
|
|||||||
*
|
*
|
||||||
* @Return: bitboard of queen available pseudo-moves.
|
* @Return: bitboard of queen available pseudo-moves.
|
||||||
*/
|
*/
|
||||||
bitboard_t hyperbola_queen_moves(const bitboard_t occ, const square_t sq)
|
bitboard_t hq_queen_moves(const bitboard_t occ, const square_t sq)
|
||||||
{
|
{
|
||||||
return hyperbola_bishop_moves(occ, sq) | hyperbola_rook_moves(occ, sq);
|
return hq_bishop_moves(occ, sq) | hq_rook_moves(occ, sq);
|
||||||
}
|
}
|
||||||
|
@@ -11,23 +11,23 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _HYPERBOLA_QUINTESSENCE_H
|
#ifndef _HQ_H
|
||||||
#define _HYPERBOLA_QUINTESSENCE_H
|
#define _HQ_H
|
||||||
|
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
#include "bitboard.h"
|
#include "bitboard.h"
|
||||||
|
|
||||||
void hyperbola_init(void);
|
void hyperbola_init(void);
|
||||||
|
|
||||||
bitboard_t hyperbola_rank_moves(const bitboard_t occ, const square_t sq);
|
bitboard_t hq_rank_moves(const bitboard_t occ, const square_t sq);
|
||||||
bitboard_t hyperbola_moves(const bitboard_t pieces, const square_t sq,
|
bitboard_t hq_moves(const bitboard_t pieces, const square_t sq,
|
||||||
const bitboard_t mask);
|
const bitboard_t mask);
|
||||||
bitboard_t hyperbola_file_moves(const bitboard_t occ, const square_t sq);
|
bitboard_t hq_file_moves(const bitboard_t occ, const square_t sq);
|
||||||
bitboard_t hyperbola_diag_moves(const bitboard_t occ, const square_t sq);
|
bitboard_t hq_diag_moves(const bitboard_t occ, const square_t sq);
|
||||||
bitboard_t hyperbola_anti_moves(const bitboard_t occ, const square_t sq);
|
bitboard_t hq_anti_moves(const bitboard_t occ, const square_t sq);
|
||||||
|
|
||||||
bitboard_t hyperbola_bishop_moves(const bitboard_t occ, const square_t sq);
|
bitboard_t hq_bishop_moves(const bitboard_t occ, const square_t sq);
|
||||||
bitboard_t hyperbola_rook_moves(const bitboard_t occ, const square_t sq);
|
bitboard_t hq_rook_moves(const bitboard_t occ, const square_t sq);
|
||||||
bitboard_t hyperbola_queen_moves(const bitboard_t occ, const square_t sq);
|
bitboard_t hq_queen_moves(const bitboard_t occ, const square_t sq);
|
||||||
|
|
||||||
#endif /* _HYPERBOLA_QUINTESSENCE_H */
|
#endif /* _HQ_H */
|
||||||
|
@@ -99,7 +99,7 @@ bool pseudo_is_legal(const pos_t *pos, const move_t move)
|
|||||||
bitboard_t exclude = BIT(ep + sq_up(them)) | BIT(from);
|
bitboard_t exclude = BIT(ep + sq_up(them)) | BIT(from);
|
||||||
bitboard_t rooks = (pos->bb[them][ROOK] | pos->bb[them][QUEEN]) & rank5;
|
bitboard_t rooks = (pos->bb[them][ROOK] | pos->bb[them][QUEEN]) & rank5;
|
||||||
|
|
||||||
return !(hyperbola_rank_moves(occ ^ exclude, kingsq) & rooks);
|
return !(hq_rank_moves(occ ^ exclude, kingsq) & rooks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -394,13 +394,13 @@ movelist_t *pos_gen_pseudo(pos_t *pos, movelist_t *movelist)
|
|||||||
from_bb = pos->bb[us][BISHOP] | pos->bb[us][QUEEN];
|
from_bb = pos->bb[us][BISHOP] | pos->bb[us][QUEEN];
|
||||||
while (from_bb) {
|
while (from_bb) {
|
||||||
from = bb_next(&from_bb);
|
from = bb_next(&from_bb);
|
||||||
to_bb = hyperbola_bishop_moves(occ, from) & dest_squares;
|
to_bb = hq_bishop_moves(occ, from) & dest_squares;
|
||||||
moves = moves_gen(moves, from, to_bb);
|
moves = moves_gen(moves, from, to_bb);
|
||||||
}
|
}
|
||||||
from_bb = pos->bb[us][ROOK] | pos->bb[us][QUEEN];
|
from_bb = pos->bb[us][ROOK] | pos->bb[us][QUEEN];
|
||||||
while (from_bb) {
|
while (from_bb) {
|
||||||
from = bb_next(&from_bb);
|
from = bb_next(&from_bb);
|
||||||
to_bb = hyperbola_rook_moves(occ, from) & dest_squares;
|
to_bb = hq_rook_moves(occ, from) & dest_squares;
|
||||||
moves = moves_gen(moves, from, to_bb);
|
moves = moves_gen(moves, from, to_bb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
src/move.c
12
src/move.c
@@ -152,15 +152,13 @@ move_t move_from_str(const char *str)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* move_find_in_movelist() - find a partial move in movelist.
|
* move_find_in_movelist() - find a partial move in movelist.
|
||||||
* @target: partial move
|
* @move: move (may be partial)
|
||||||
* @list: &movelist_t to search
|
* @movelist: &movelist_t to search
|
||||||
*
|
*
|
||||||
* Look for @target into @list. @target must at least contain from and
|
* Look for @target into @list, by comparing its from, to, and promotion
|
||||||
* to square, as well as promotion information - see move_from_str().
|
* information.
|
||||||
* If these three pieces of information match, the corresponding move in
|
|
||||||
* @list is returned.
|
|
||||||
*
|
*
|
||||||
* @return: move, or MOVE_NONE if error.
|
* @return: move in @movelist if match found, MOVE_NONE otherwise.
|
||||||
*/
|
*/
|
||||||
move_t move_find_in_movelist(move_t target, movelist_t *list)
|
move_t move_find_in_movelist(move_t target, movelist_t *list)
|
||||||
{
|
{
|
||||||
|
@@ -218,7 +218,7 @@ void pos_set_checkers_pinners_blockers(pos_t *pos)
|
|||||||
attackers = pos->bb[them][BISHOP] | pos->bb[them][QUEEN];
|
attackers = pos->bb[them][BISHOP] | pos->bb[them][QUEEN];
|
||||||
|
|
||||||
/* targets is all "target" pieces if K was a bishop */
|
/* targets is all "target" pieces if K was a bishop */
|
||||||
targets = hyperbola_bishop_moves(occ, king) & occ;
|
targets = hq_bishop_moves(occ, king) & occ;
|
||||||
|
|
||||||
/* checkers = only opponent B/Q */
|
/* checkers = only opponent B/Q */
|
||||||
tmpcheckers = targets & attackers;
|
tmpcheckers = targets & attackers;
|
||||||
@@ -229,7 +229,7 @@ void pos_set_checkers_pinners_blockers(pos_t *pos)
|
|||||||
|
|
||||||
/* we find second targets, by removing first ones (excl. checkers) */
|
/* we find second targets, by removing first ones (excl. checkers) */
|
||||||
if (maybeblockers) {
|
if (maybeblockers) {
|
||||||
targets = hyperbola_bishop_moves(occ ^ maybeblockers, king) ^ tmpcheckers;
|
targets = hq_bishop_moves(occ ^ maybeblockers, king) ^ tmpcheckers;
|
||||||
|
|
||||||
/* pinners = only B/Q */
|
/* pinners = only B/Q */
|
||||||
tmppinners = targets & attackers;
|
tmppinners = targets & attackers;
|
||||||
@@ -244,14 +244,14 @@ void pos_set_checkers_pinners_blockers(pos_t *pos)
|
|||||||
|
|
||||||
/* same for rook type */
|
/* same for rook type */
|
||||||
attackers = pos->bb[them][ROOK] | pos->bb[them][QUEEN];
|
attackers = pos->bb[them][ROOK] | pos->bb[them][QUEEN];
|
||||||
targets = hyperbola_rook_moves(occ, king) & occ;
|
targets = hq_rook_moves(occ, king) & occ;
|
||||||
|
|
||||||
tmpcheckers = targets & attackers;
|
tmpcheckers = targets & attackers;
|
||||||
checkers |= tmpcheckers;
|
checkers |= tmpcheckers;
|
||||||
|
|
||||||
maybeblockers = targets & ~tmpcheckers;
|
maybeblockers = targets & ~tmpcheckers;
|
||||||
if (maybeblockers) {
|
if (maybeblockers) {
|
||||||
targets = hyperbola_rook_moves(occ ^ maybeblockers, king) ^ tmpcheckers;
|
targets = hq_rook_moves(occ ^ maybeblockers, king) ^ tmpcheckers;
|
||||||
tmppinners = targets & attackers;
|
tmppinners = targets & attackers;
|
||||||
while (tmppinners) {
|
while (tmppinners) {
|
||||||
pinner = bb_next(&tmppinners);
|
pinner = bb_next(&tmppinners);
|
||||||
|
Reference in New Issue
Block a user