From 5f49ffc2d7fbee8178db0dbb142813ca73774c97 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 22 Mar 2016 08:14:29 +0000 Subject: [PATCH] Fix fencepost-error in subtraction code found while testing rounding. --- include/boost/multiprecision/cpp_bin_float.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/multiprecision/cpp_bin_float.hpp b/include/boost/multiprecision/cpp_bin_float.hpp index 559001e1..e393d131 100644 --- a/include/boost/multiprecision/cpp_bin_float.hpp +++ b/include/boost/multiprecision/cpp_bin_float.hpp @@ -595,7 +595,7 @@ inline void do_eval_subtract(cpp_bin_float 0) || ((e_diff == 0) && a.bits().compare(b.bits()) >= 0)) { dt = a.bits(); - if(e_diff < (int)cpp_bin_float::bit_count) + if(e_diff <= (int)cpp_bin_float::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::bit_count) + if(-e_diff <= (int)cpp_bin_float::bit_count) { eval_left_shift(dt, -e_diff); res.exponent() = b.exponent() + e_diff;