From dafea60cfb97d2ddf76fd122adedb043ccb3b4bc Mon Sep 17 00:00:00 2001 From: enge Date: Tue, 28 Aug 2012 13:11:20 +0000 Subject: backported fix in r1254 to branch 1.0 git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/branches/1.0@1256 211d60ee-9f03-0410-a15a-8952a2c7a4e4 --- NEWS | 2 ++ src/fma.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index bc65513..697ef60 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,7 @@ Changes in version 1.0.1: - #14669: Fixed extraction of CC from gmp.h + - Fixed case of intermediate zero real or imaginary part in mpc_fma, + found by hydra with GMP_CHECK_RANDOMIZE=1346362345 Changes in version 1.0: - First release as a GNU package diff --git a/src/fma.c b/src/fma.c index b0857f9..7f5cd31 100644 --- a/src/fma.c +++ b/src/fma.c @@ -159,9 +159,9 @@ mpc_fma (mpc_ptr r, mpc_srcptr a, mpc_srcptr b, mpc_srcptr c, mpc_rnd_t rnd) break; diffre = mpfr_get_exp (mpc_realref(ab)); diffim = mpfr_get_exp (mpc_imagref(ab)); + mpc_add (ab, ab, c, MPC_RNDZZ); if (mpfr_zero_p (mpc_realref(ab)) || mpfr_zero_p (mpc_imagref(ab))) break; - mpc_add (ab, ab, c, MPC_RNDZZ); diffre -= mpfr_get_exp (mpc_realref(ab)); diffim -= mpfr_get_exp (mpc_imagref(ab)); diffre = (diffre > 0 ? diffre + 1 : 1); -- cgit v1.2.1