/usr/include/osl/eval/piecePairKing.h is in libosl-dev 0.8.0-1.4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | /* piecePairKing.h
*/
#ifndef OSL_EVAL_ML_PIECEPAIRKING_H
#define OSL_EVAL_ML_PIECEPAIRKING_H
#include "osl/numEffectState.h"
namespace osl
{
namespace eval
{
namespace ml
{
struct Weights;
class PiecePairKing
{
public:
enum
{
ONE_DIM = 1488375,
DIM = ONE_DIM
};
static void setUp(const Weights &weights);
static CArray<int,2> eval(const NumEffectState&);
template <Player P>
static void evalWithUpdateBang(const NumEffectState& state, Move moved, CArray<int,2>& last_value);
template <Player King>
static int evalOne(const NumEffectState&);
private:
template <Player King>
static int add(const NumEffectState& state, Square to, Ptype ptype);
template <Player King>
static int sub(const NumEffectState& state, Square from, Ptype ptype);
template <Player King>
static int addSub(const NumEffectState& state, Square to, Ptype ptype, Square from);
static int composeIndex(int king, int i0, int i1)
{
return king + i0*45*7 + i1;
}
static int indexWhite(Square p)
{
return p.x()-1 + (p.y()-1)*9;
}
static int indexKing(Player owner, Square king, bool& flipx)
{
if (owner == BLACK)
king = king.rotate180();
assert(king.y() <= 3);
if (king.x() > 5)
{
king = king.flipHorizontal();
flipx = true;
}
else
flipx = false;
return (king.x()-1 + (king.y()-1)*5)*45*7*45*7;
}
template <bool FlipX>
static int indexPiece(Player owner, Square position, Ptype ptype)
{
assert(! isPromoted(ptype));
if (owner == BLACK)
position = position.rotate180();
if (FlipX)
position = position.flipHorizontal();
assert(position.y() <= 5);
return indexWhite(position)*7 + ptype-PTYPE_BASIC_MIN-1;
}
static osl::CArray<int16_t, ONE_DIM> table;
};
}
}
}
#endif /* OSL_EVAL_ML_PIECEPAIRKING_H */
// ;;; Local Variables:
// ;;; mode:c++
// ;;; c-basic-offset:2
// ;;; End:
|