diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-08-01 22:17:42 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-08-01 22:17:42 +0300 |
commit | d3c83f2df4734735c11cc1e157a63fc580981b3f (patch) | |
tree | 066f0b36264a8d46fe2cc01d84139f81c0b57778 /mpfr.c | |
parent | 5da25619741b53c6f51dd86617f10591486477ae (diff) | |
parent | 265bcc19d0ee3c8bfde5d91258345c864810e995 (diff) | |
download | egawk-d3c83f2df4734735c11cc1e157a63fc580981b3f.tar.gz egawk-d3c83f2df4734735c11cc1e157a63fc580981b3f.tar.bz2 egawk-d3c83f2df4734735c11cc1e157a63fc580981b3f.zip |
Merge branch 'gawk-4.1-stable' of ssh://git.sv.gnu.org/srv/git/gawk into gawk-4.1-stable
Diffstat (limited to 'mpfr.c')
-rw-r--r-- | mpfr.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -1218,9 +1218,17 @@ mpg_tofloat(mpfr_ptr mf, mpz_ptr mz) prec -= (size_t) mpz_scan1(mz, 0); /* least significant 1 bit index starting at 0 */ if (prec > MPFR_PREC_MAX) prec = MPFR_PREC_MAX; - if (prec > PRECISION_MIN) - mpfr_set_prec(mf, prec); + else if (prec < PRECISION_MIN) + prec = PRECISION_MIN; } + else + prec = PRECISION_MIN; + /* + * Always set the precision to avoid hysteresis, since do_mpfr_func + * may copy our precision. + */ + if (prec != mpfr_get_prec(mf)) + mpfr_set_prec(mf, prec); mpfr_set_z(mf, mz, ROUND_MODE); return mf; |