+ // refine_eval() returns the transposition table score if
+ // possible otherwise falls back on static position evaluation.
+
+ Value refine_eval(const TTEntry* tte, Value defaultEval, int ply) {
+
+ if (!tte)
+ return defaultEval;
+
+ Value v = value_from_tt(tte->value(), ply);
+
+ if ( (is_lower_bound(tte->type()) && v >= defaultEval)
+ || (is_upper_bound(tte->type()) && v < defaultEval))
+ return v;
+
+ return defaultEval;
+ }
+