-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtranspositiontable.h
More file actions
72 lines (57 loc) · 2.2 KB
/
transpositiontable.h
File metadata and controls
72 lines (57 loc) · 2.2 KB
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
#ifndef TABLE_H
#define TABLE_H
// Values for yet unknown values
#define TT_NORMAL_UNKNOWN 0
#define TT_POPOUT_UNKNOWN INT_MIN
// Values for alpha-beta bounds
#define TT_UNKNOWNBOUND 0
#define TT_LOWERBOUND 1
#define TT_UPPERBOUND 2
// This will allocate one gigabyte of memory for the transposition table
#define TT_TABLESIZE 67108864
typedef struct {
Position key;
int8_t value, bounds;
short depth;
} HashtableEntry;
typedef struct {
Position normalKey, anvilKey, bombKey, wallKey, x2Key;
int8_t value;
short depth;
} PowerUp_HashtableEntry;
typedef struct {
union {
HashtableEntry *entries;
PowerUp_HashtableEntry *powerUpEntries;
};
long long size;
} TranspositionTable;
typedef struct {
Position position;
unsigned long long count;
} RepetitionTable_Entry;
typedef struct {
RepetitionTable_Entry *repetitionEntries;
unsigned size;
} RepetitionTable;
static unsigned tableSize;
bool bookEntryFound;
bool TranspositionTable_isPrime(long long);
long long TranspositionTable_isPrevNumPrime(long long);
bool TranspositionTable_initialize(TranspositionTable*, long long);
void TranspositionTable_reset(TranspositionTable*);
void TranspositionTable_resetZero(TranspositionTable*);
bool TranspositionTable_resize(TranspositionTable*, long long);
void TranspositionTable_destroy(TranspositionTable*);
void TranspositionTable_store(TranspositionTable*, Position, int8_t, short);
void TranspositionTable_storeBounds(TranspositionTable*, Position, int8_t, short, int8_t);
void TranspositionTable_storeWithoutDepth(TranspositionTable*, Position, int8_t);
void TranspositionTable_powerup_store(TranspositionTable*, Position, Position, Position, Position, Position, int8_t, short);
int TranspositionTable_normal_loadValue(TranspositionTable*, Position);
int TranspositionTable_popout_loadValue(TranspositionTable*, Position);
int TranspositionTable_popout_loadDepth(TranspositionTable*, Position);
int TranspositionTable_powerup_loadValue(TranspositionTable*, Position, Position, Position, Position, Position);
int TranspositionTable_loadBounds(TranspositionTable*, Position);
bool TranspositionTable_depthLessOrEqual(TranspositionTable*, Position, short);
int TranspositionTable_isUnique(TranspositionTable*, Position);
#endif