X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fvalue.h;h=3d23f5054c3f71c726ca2b387a6c57ec99c99923;hp=03ae24b7832770fa19128c5dc8e609bd230ec2d9;hb=314faa905a60962595d610c26727c4b603c6ed62;hpb=ef6fca98a0b70b82ba701e6969a80cd9daf78705 diff --git a/src/value.h b/src/value.h index 03ae24b7..3d23f505 100644 --- a/src/value.h +++ b/src/value.h @@ -68,20 +68,14 @@ inline Score operator-(Score s1, Score s2) { return Score(int(s1) - int(s2)); } inline void operator+=(Score& s1, Score s2) { s1 = Score(int(s1) + int(s2)); } inline void operator-=(Score& s1, Score s2) { s1 = Score(int(s1) - int(s2)); } inline Score operator*(int i, Score s) { return Score(i * int(s)); } -inline Score operator/(Score s, int i) { return Score(int(s) / i); } + +// Division must be handled separately for each term +inline Score operator/(Score s, int i) { return make_score(mg_value(s) / i, eg_value(s) / i); } // Only declared but not defined. We don't want to multiply two scores due to // a very high risk of overflow. So user should explicitly convert to integer. inline Score operator*(Score s1, Score s2); -// Following are only declared to prevent erroneus instantations -inline Score operator*(Score s, int i); -inline Score operator/(Score s1, Score s2); -inline Score operator+(Score s, int i); -inline Score operator+(int i, Score s); -inline Score operator-(Score s, int i); -inline Score operator-(int i, Score s); - //// //// Constants and variables