From 007ecb4ab29aa02b15569299db924ee4d8dca5c1 Mon Sep 17 00:00:00 2001 From: "Christoph M. Wintersteiger" Date: Sun, 4 Jan 2015 14:37:33 +0000 Subject: [PATCH] MPF bugfix Signed-off-by: Christoph M. Wintersteiger --- src/util/mpf.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/util/mpf.cpp b/src/util/mpf.cpp index f5dcfc612..511bdb03c 100644 --- a/src/util/mpf.cpp +++ b/src/util/mpf.cpp @@ -196,13 +196,17 @@ void mpf_manager::set(mpf & o, unsigned ebits, unsigned sbits, mpf_rounding_mode else { o.ebits = ebits; o.sbits = sbits; - o.sign = m_mpq_manager.is_neg(value); - + o.sign = m_mpq_manager.is_neg(value); + + scoped_mpq x(m_mpq_manager); + m_mpq_manager.set(x, value); + m_mpq_manager.abs(x); + m_mpz_manager.set(o.significand, 0); const mpz & p = m_powers2(sbits+3); scoped_mpq v(m_mpq_manager); - m_mpq_manager.set(v, value); + m_mpq_manager.set(v, x); o.exponent = 0; // Normalize