summaryrefslogtreecommitdiff
path: root/src/d_sub.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2014-11-03 05:48:02 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2014-11-03 05:48:02 +0000
commite55f6c6280976ecd62d9284145ee24900e3c8b3e (patch)
tree3cec3894643ef5a7bbc2138b6f54950851849d88 /src/d_sub.c
parentbdf190b1ab91635e8748c65e018b5feb92cdbe1d (diff)
downloadmpfr-e55f6c6280976ecd62d9284145ee24900e3c8b3e.tar.gz
[src] Applied patch by Patrick PĂ©lissier to allocate some constant-size
MPFR numbers on the stack instead of using mpfr_init2, and replace some MPFR_ASSERTN by MPFR_ASSERTD. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@9229 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/d_sub.c')
-rw-r--r--src/d_sub.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/d_sub.c b/src/d_sub.c
index 72853753d..7ed80487b 100644
--- a/src/d_sub.c
+++ b/src/d_sub.c
@@ -28,6 +28,7 @@ mpfr_d_sub (mpfr_ptr a, double b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
{
int inexact;
mpfr_t d;
+ mp_limb_t tmp_man[MPFR_LIMBS_PER_DOUBLE];
MPFR_SAVE_EXPO_DECL (expo);
MPFR_LOG_FUNC (
@@ -36,15 +37,14 @@ mpfr_d_sub (mpfr_ptr a, double b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
MPFR_SAVE_EXPO_MARK (expo);
- mpfr_init2 (d, IEEE_DBL_MANT_DIG);
+ MPFR_TMP_INIT1(tmp_man, d, IEEE_DBL_MANT_DIG);
inexact = mpfr_set_d (d, b, rnd_mode);
- MPFR_ASSERTN (inexact == 0);
+ MPFR_ASSERTD (inexact == 0);
MPFR_CLEAR_FLAGS ();
inexact = mpfr_sub (a, d, c, rnd_mode);
MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
- mpfr_clear(d);
MPFR_SAVE_EXPO_FREE (expo);
return mpfr_check_range (a, inexact, rnd_mode);
}