summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2014-01-17 07:22:48 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2014-01-17 07:22:48 +0000
commitb79b39da0a7e11491b0b48453eb01784cf4aa3da (patch)
tree4897f8b15e836ae776b7fde2955d4c9dbe45b9a6
parentdd36bc8f4acebbc891952073628b895ddd444388 (diff)
downloadmpfr-b79b39da0a7e11491b0b48453eb01784cf4aa3da.tar.gz
more progress for the mini-gmp interface
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@8755 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r--src/Makefile.am5
-rw-r--r--src/mpfr-mini-gmp.c14
-rw-r--r--src/mpfr-mini-gmp.h2
-rw-r--r--tests/tadd.c4
4 files changed, 15 insertions, 10 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 6e02df98b..f3cf788d7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -16,7 +16,7 @@ EXTRA_DIST = round_raw_generic.c jyn_asympt.c x86/core2/mparam.h \
amd/amdfam10/mparam.h powerpc32/mparam.h hppa/mparam.h \
mips/mparam.h
-include_HEADERS = mpfr.h mpf2mpfr.h mpfr-mini-gmp.h
+include_HEADERS = mpfr.h mpf2mpfr.h
BUILT_SOURCES = mparam.h
@@ -58,7 +58,8 @@ sub_d.c d_sub.c mul_d.c div_d.c d_div.c li2.c rec_sqrt.c min_prec.c \
buildopt.c digamma.c bernoulli.c isregular.c set_flt.c get_flt.c \
scale2.c set_z_exp.c ai.c gammaonethird.c ieee_floats.h \
grandom.c fpif.c set_float128.c get_float128.c rndna.c nrandom.c \
-random_deviate.h random_deviate.c erandom.c mpfr-mini-gmp.c
+random_deviate.h random_deviate.c erandom.c mpfr-mini-gmp.c \
+mpfr-mini-gmp.h
libmpfr_la_LIBADD = @LIBOBJS@
diff --git a/src/mpfr-mini-gmp.c b/src/mpfr-mini-gmp.c
index 993f0509a..f0dcbdaa7 100644
--- a/src/mpfr-mini-gmp.c
+++ b/src/mpfr-mini-gmp.c
@@ -38,9 +38,9 @@ gmp_randinit_default (gmp_randstate_t state)
#ifdef WANT_gmp_randseed_ui
void
-gmp_randseed_ui (gmp_randstate_t state, const mpz_t seed)
+gmp_randseed_ui (gmp_randstate_t state, unsigned long int seed)
{
- srand48 (mpz_get_ui (seed));
+ srand48 (seed);
}
#endif
@@ -167,7 +167,9 @@ mpz_realloc2 (mpz_t X, mp_bitcnt_t N)
if (n > X->_mp_alloc)
{
- X->_mp_d = gmp_default_realloc (X->_mp_d, X->_mp_alloc, n);
+ X->_mp_d = gmp_default_realloc (X->_mp_d,
+ X->_mp_alloc * sizeof (mp_limb_t),
+ n * sizeof (mp_limb_t));
X->_mp_alloc = n;
}
}
@@ -226,8 +228,10 @@ mpn_divrem (mp_limb_t *qp, mp_size_t qn, mp_limb_t *np,
MPFR_ASSERTN(q->_mp_size == qn || q->_mp_size == qn + 1);
mpn_copyi (qp, q->_mp_d, qn);
ret = (q->_mp_size == qn) ? 0 : q->_mp_d[qn];
- MPFR_ASSERTN(r->_mp_size == dn);
- mpn_copyi (np, r->_mp_d, dn);
+ if (r->_mp_size > 0)
+ mpn_copyi (np, r->_mp_d, r->_mp_size);
+ if (r->_mp_size < dn)
+ mpn_zero (np + r->_mp_size, dn - r->_mp_size);
mpz_clear (q);
mpz_clear (r);
return ret;
diff --git a/src/mpfr-mini-gmp.h b/src/mpfr-mini-gmp.h
index ed73a3f5c..4b4970bb8 100644
--- a/src/mpfr-mini-gmp.h
+++ b/src/mpfr-mini-gmp.h
@@ -56,7 +56,7 @@ void gmp_randinit_default (gmp_randstate_t);
#ifndef gmp_randseed_ui
#define WANT_gmp_randseed_ui
-void gmp_randseed_ui (gmp_randstate_t, const mpz_t);
+void gmp_randseed_ui (gmp_randstate_t, unsigned long int);
#endif
#ifndef gmp_randclear
diff --git a/tests/tadd.c b/tests/tadd.c
index b8763343b..0abb9d0de 100644
--- a/tests/tadd.c
+++ b/tests/tadd.c
@@ -81,8 +81,8 @@ check (const char *xs, const char *ys, mpfr_rnd_t rnd_mode,
if (mpfr_cmp_str1 (zz, zs) )
{
printf ("expected sum is %s, got ", zs);
- mpfr_out_str(stdout, 10, 0, zz, MPFR_RNDN);
- printf ("mpfr_add failed for x=%s y=%s with rnd_mode=%s\n",
+ mpfr_out_str (stdout, 10, 0, zz, MPFR_RNDN);
+ printf ("\nmpfr_add failed for x=%s y=%s with rnd_mode=%s\n",
xs, ys, mpfr_print_rnd_mode (rnd_mode));
exit (1);
}