7 #define DFPN_AGE_MASK 0xffU
9 #define INF_1 0x7ffffeU
12 #define DFPN_ERRNO_MAXNODE -101
13 #define DFPN_ERRNO_MAXPLY -102
14 #define DFPN_ERRNO_SUMPHI -103
15 #define DFPN_ERRNO_DELTA2P -104
16 #define DFPN_ERRNO_SIGNAL -105
18 /* #define DFPN_HASH_MASK 0x00fffffU */ /* 24MByte */
19 /* #define DFPN_HASH_MASK 0x01fffffU */ /* 48MByte */
20 /* #define DFPN_HASH_MASK 0x03fffffU */ /* 96MByte */
21 /* #define DFPN_HASH_MASK 0x07fffffU */ /* 192MByte */
22 /* #define DFPN_HASH_MASK 0x0ffffffU */ /* 384MByte */
23 /* #define DFPN_HASH_MASK 0x1ffffffU */ /* 768MByte */
24 /* #define DFPN_HASH_MASK 0x3ffffffU */ /* 1536MByte */
25 #define DFPN_NODES_MASK UINT64_C(0x1fffffffffff)
26 #define DFPN_NUM_REHASH 32
31 # define DOut(ply,fmt,...) if ( dbg_flag && ply <= 64 ) out( "%-*d" fmt "\n", 2*ply, ply, __VA_ARGS__ )
36 /*#define DFPNSignKey(word1, word2, word3) word1 = ( word1 ^ word2 ^ word3 )*/
37 #define DFPNSignKey(word1, word2, word3)
39 typedef struct { uint64_t word1, word2, word3; } dfpn_hash_entry_t;
46 unsigned int min_hand_b;
50 unsigned int priority;
59 child_t * restrict children;
62 uint64_t new_expansion;
63 unsigned int min_hand_b;
68 unsigned int min_delta;
71 int nmove, turn, icurr_c;
79 unsigned int sum_phi_max;
80 child_t child_tbl[ MAX_NMOVE * PLY_MAX ];
81 node_t anode[ PLY_MAX ];
85 enum { weak_chuai = 1, weak_drop = 100 };
88 void CONV dfpn_hash_probe( const dfpn_tree_t * restrict pdfpn_tree,
89 child_t * restrict pchild, int ply, int turn );
90 void CONV dfpn_hash_store( const tree_t * restrict ptree,
91 dfpn_tree_t * restrict pdfpn_tree,
93 int CONV dfpn_detect_rep( const dfpn_tree_t * restrict pdfpn_tree,
94 uint64_t hash_key, unsigned int hand_b,
95 int ply, int * restrict ip );
96 unsigned int CONV dfpn_max_hand_b( unsigned int hand_b, unsigned hand_w );
97 unsigned int CONV dfpn_max_hand_w( unsigned int hand_b, unsigned hand_w );
98 float CONV dfpn_hash_sat( void );
100 extern dfpn_hash_entry_t * restrict dfpn_hash_tbl;
101 extern unsigned int dfpn_hash_mask;
102 extern unsigned int dfpn_hash_age;
103 extern const unsigned int hand_tbl[16];