summaryrefslogtreecommitdiff
path: root/libguile/numbers.c
diff options
context:
space:
mode:
authorMichael Gran <spk121@yahoo.com>2021-02-06 00:36:56 -0800
committerMichael Gran <spk121@yahoo.com>2021-02-06 00:42:16 -0800
commitb41aed21df9076fc64cfe9e381aa13bcf572fcf0 (patch)
tree3624be014bc1421fffa48163084259fd345237f3 /libguile/numbers.c
parent56e3adefc9014018e07620a0e348de2445f76a76 (diff)
downloadguile-b41aed21df9076fc64cfe9e381aa13bcf572fcf0.tar.gz
Enable option to prefer mini-gmp over libgmpuse-minigmp
* configure.ac: rework gmp library detection. Add new flag. * libguile.h: modify gmp header inclusion * libguile/Makefile.am: add mini-gmp.[ch] files * libguile/bytevectors.c: add mini-gmp headers * libguile/gen-scmconfig.c: new #include variable GUILE_MINI_GMP * libguile/init.c: add mini-gmp header * libguile/mini-gmp.c: new file * libguile/mini-gmp.h: new file * libguile/numbers.c: add fallback for missing mpz_get_d_2exp * libguile/numbers.h: yse mini-gmp header * libguile/random.c: use mini-gmp header * libguile/socket.c: use mini-gmp header
Diffstat (limited to 'libguile/numbers.c')
-rw-r--r--libguile/numbers.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libguile/numbers.c b/libguile/numbers.c
index 19d2b2d87..a2a5ca3b1 100644
--- a/libguile/numbers.c
+++ b/libguile/numbers.c
@@ -398,7 +398,15 @@ scm_i_big2dbl_2exp (SCM b, long *expon_p)
{
long expon;
- double signif = mpz_get_d_2exp (&expon, SCM_I_BIG_MPZ (b));
+ double signif;
+#if GUILE_MINI_GMP
+ int iexpon;
+ signif = mpz_get_d (SCM_I_BIG_MPZ (b));
+ signif = frexp (signif, &iexpon);
+ expon = (long) iexpon;
+#else
+ signif = mpz_get_d_2exp (&expon, SCM_I_BIG_MPZ (b));
+#endif
scm_remember_upto_here_1 (b);
*expon_p = expon + shift;
return signif;