Fix fencepost-error in subtraction code found while testing rounding.

This commit is contained in:
jzmaddock
2016-03-22 08:14:29 +00:00
parent eec1c310d5
commit 5f49ffc2d7

View File

@@ -595,7 +595,7 @@ inline void do_eval_subtract(cpp_bin_float<Digits, DigitBase, Allocator, Exponen
if((e_diff > 0) || ((e_diff == 0) && a.bits().compare(b.bits()) >= 0))
{
dt = a.bits();
if(e_diff < (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count)
if(e_diff <= (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count)
{
eval_left_shift(dt, e_diff);
res.exponent() = a.exponent() - e_diff;
@@ -607,7 +607,7 @@ inline void do_eval_subtract(cpp_bin_float<Digits, DigitBase, Allocator, Exponen
else
{
dt = b.bits();
if(-e_diff < (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count)
if(-e_diff <= (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count)
{
eval_left_shift(dt, -e_diff);
res.exponent() = b.exponent() + e_diff;