diff --git a/xmrstak/backend/nvidia/nvcc_code/cuda_fast_int_math_v2.hpp b/xmrstak/backend/nvidia/nvcc_code/cuda_fast_int_math_v2.hpp index 2a25a9c073cb221138b9098561fb33746cae0a7d..e3220230a340b2fadd9bfcdf47d0ba30239997e1 100644 --- a/xmrstak/backend/nvidia/nvcc_code/cuda_fast_int_math_v2.hpp +++ b/xmrstak/backend/nvidia/nvcc_code/cuda_fast_int_math_v2.hpp @@ -99,8 +99,9 @@ __device__ __forceinline__ uint32_t fast_sqrt_v2(const uint64_t n1) const uint32_t b = result & 1; const uint64_t x2 = (uint64_t)(s) * (s + b) + ((uint64_t)(result) << 32) - n1; - if ((int64_t)(x2 + b) > 0) --result; - if ((int64_t)(x2 + 0x100000000UL + s) < 0) ++result; + const int32_t overshoot = ((int64_t)(x2 + b) > 0) ? -1 : 0; + const int32_t undershoot = ((int64_t)(x2 + 0x100000000UL + s) < 0) ? 1 : 0; + result += (overshoot+undershoot); return result; }