1 /* Copyright (C) 2007-2011 Vincent Ollivier
3 * Purple Haze is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
8 * Purple Haze is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
23 enum NodeType
: unsigned char { PV
, CUT
, ALL
};
25 // Adaptive Null-Move Pruning (Heinz 1999)
26 inline static int R_ADAPT(int d
, int n
)
28 return 2 + (d
> (6 + ((n
< 3) ? 2 : 0)));
31 static const int R
= 2;
32 static const int NMP_DEPTH
= 3; // depth > NMP_DEPTH
33 static const int LMR_DEPTH
= 2; // depth > LMR_DEPTH
34 static const int IID_DEPTH
= 3; // depth > IID_DEPTH
35 static const int FUTILITY_DEPTH
= 3; // depth <= FUTILITY_DEPTH
37 // Array of pruning margin values indexed by depth. Idea from Crafty
38 static const int FUTILITY_MARGINS
[FUTILITY_DEPTH
+ 1] = {
45 inline static int value_to_trans(int value
, int ply
)
47 if (value
< -INF
+ MAX_PLY
) {
49 } else if (value
> INF
- MAX_PLY
) {
55 inline static int value_from_trans(int value
, int ply
)
57 if (value
< -INF
+ MAX_PLY
) {
59 } else if (value
> INF
- MAX_PLY
) {
65 #endif /* !SEARCH_H */