home / fornax-v3-0 / src / eval_defs.h

eval_defs.h



//
//  eval_defs.h
//  fornax3
//
//  Created by Anders on 02/01/2021.
//

#ifndef eval_defs_h
#define eval_defs_h

typedef int16_t eval;

#define EVAL_NONE INT16_MIN
#define EVAL_CHECKMATE -10000
#define EVAL_ALPHASTART -12345
#define EVAL_BETASTART 12345

#define EVAL_PIECE_KINGS 2000
#define EVAL_PIECE_PAWNS 100
#define EVAL_PIECE_KNIGHTS 315
#define EVAL_PIECE_BISHOPS 320
#define EVAL_PIECE_ROOKS 510
#define EVAL_PIECE_QUEENS 940

#define EVAL_MATERIAL_VALUE_NULL_THRESHOLD 500
#define EVAL_MATERIAL_VALUE_EXTEND_CHECK_THRESHOLD 930

#define EVAL_QUIESCE_LIMIT_VALUE 500

#define EVAL_MOVEPICK_CAPTURE_BONUS 510
#define EVAL_MOVEPICK_KILLER_VALUE 400
#define EVAL_MOVEPICK_ENPASSANT_VALUE 610
#define EVAL_MOVEPICK_TT_VALUE 2000

#define EVAL_CONTEMPT_DEFAULT 0
#define EVAL_CONTEMPT_MIN -250
#define EVAL_CONTEMPT_MAX 250

static constexpr eval EVAL_PIECE[6] = {
  EVAL_PIECE_KINGS,
  EVAL_PIECE_QUEENS,
  EVAL_PIECE_ROOKS,
  EVAL_PIECE_BISHOPS,
  EVAL_PIECE_KNIGHTS,
  EVAL_PIECE_PAWNS
};

#define EVAL_PHASE_QUEENS 4
#define EVAL_PHASE_ROOKS 2
#define EVAL_PHASE_KNIGHTS 1
#define EVAL_PHASE_BISHOPS 1

static constexpr eval EVAL_PHASE[6] = {
  0,
  EVAL_PHASE_QUEENS,
  EVAL_PHASE_ROOKS,
  EVAL_PHASE_BISHOPS,
  EVAL_PHASE_KNIGHTS,
  0
};

#define PHASE_START ( \
EVAL_PHASE_QUEENS * 2\
+ EVAL_PHASE_ROOKS * 4\
+ EVAL_PHASE_BISHOPS * 4\
+ EVAL_PHASE_KNIGHTS * 4\
)

/* used to adjust piece attack counts*/
#define EVAL_ACTIVITY_KINGS 2
#define EVAL_ACTIVITY_QUEENS 1
#define EVAL_ACTIVITY_ROOKS 2
#define EVAL_ACTIVITY_KNIGHTS 4
#define EVAL_ACTIVITY_BISHOPS 4
#define EVAL_ACTIVITY_PAWNS 3
static constexpr eval ACTIVITYVALUE[6] = {
  EVAL_ACTIVITY_KINGS,
  EVAL_ACTIVITY_QUEENS,
  EVAL_ACTIVITY_ROOKS,
  EVAL_ACTIVITY_BISHOPS,
  EVAL_ACTIVITY_KNIGHTS,
  EVAL_ACTIVITY_PAWNS,
};

static constexpr eval THREAT_TABLE[6][6] = {
  {0, 0, 2, 3, 3, 4},
  {0, 0, 10, 6, 6, 4},
  {0, 24, 0, 6, 6, 4},
  {0, 26, 24, 12, 12, 4},
  {0, 26, 24, 12, 12, 4},
  {0, 28, 26, 24, 24, 0}
};


#endif /* eval_defs_h */