summaryrefslogtreecommitdiff
path: root/tests/reuse.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2016-09-02 07:13:38 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2016-09-02 07:13:38 +0000
commitb4df47ef18e9e516e90a97d2e6626e4dc493d813 (patch)
treea39018105250ca3eda936cdd57b32fbfe1fef45e /tests/reuse.c
parent61816b69da7f34b565572ec787a6302205d3256d (diff)
downloadmpfr-b4df47ef18e9e516e90a97d2e6626e4dc493d813.tar.gz
Merged the following changesets from the trunk:
r10664-10686,10689-10690,10692,10695-10696,10699-10775 i.e. all the latest changes except for src/{add1sp.c,sub1sp.c} to avoid build failures (to be solved later). Currently only tcan_round fails, due to MPFR_RNDF. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/faithful@10776 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tests/reuse.c')
-rw-r--r--tests/reuse.c229
1 files changed, 122 insertions, 107 deletions
diff --git a/tests/reuse.c b/tests/reuse.c
index d10b56b34..c05c5354f 100644
--- a/tests/reuse.c
+++ b/tests/reuse.c
@@ -22,8 +22,15 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
#include "mpfr-test.h"
-#define DISP(s, t) {printf(s); mpfr_out_str(stdout, 2, 0, t, MPFR_RNDN); }
-#define DISP2(s,t) {DISP(s,t); putchar('\n');}
+#define DISP(s,t) \
+ do \
+ { \
+ printf (s); \
+ mpfr_out_str (stdout, 2, 0, t, MPFR_RNDN); \
+ } \
+ while (0)
+
+#define DISP2(s,t) do { DISP(s,t); putchar ('\n'); } while (0)
#define SPECIAL_MAX 12
@@ -569,117 +576,125 @@ pow_int (mpfr_rnd_t rnd)
int
main (void)
{
- int rnd;
+ int i, rnd;
mpfr_prec_t p;
+
tests_start_mpfr ();
- p = (randlimb () % 200) + MPFR_PREC_MIN;
- RND_LOOP (rnd)
- {
- test2a (mpfr_round, "mpfr_round", p);
- test2a (mpfr_ceil, "mpfr_ceil", p);
- test2a (mpfr_floor, "mpfr_floor", p);
- test2a (mpfr_trunc, "mpfr_trunc", p);
-
- test2ui (mpfr_add_ui, "mpfr_add_ui", p, (mpfr_rnd_t) rnd);
- test2ui (mpfr_div_2exp, "mpfr_div_2exp", p, (mpfr_rnd_t) rnd);
- test2ui (mpfr_div_ui, "mpfr_div_ui", p, (mpfr_rnd_t) rnd);
- test2ui (mpfr_mul_2exp, "mpfr_mul_2exp", p, (mpfr_rnd_t) rnd);
- test2ui (mpfr_mul_ui, "mpfr_mul_ui", p, (mpfr_rnd_t) rnd);
- test2ui (mpfr_pow_ui, "mpfr_pow_ui", p, (mpfr_rnd_t) rnd);
- test2ui (mpfr_sub_ui, "mpfr_sub_ui", p, (mpfr_rnd_t) rnd);
-
- testui2 (mpfr_ui_div, "mpfr_ui_div", p, (mpfr_rnd_t) rnd);
- testui2 (mpfr_ui_sub, "mpfr_ui_sub", p, (mpfr_rnd_t) rnd);
- testui2 (mpfr_ui_pow, "mpfr_ui_pow", p, (mpfr_rnd_t) rnd);
-
- test2 (mpfr_sqr, "mpfr_sqr", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_sqrt, "mpfr_sqrt", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_abs, "mpfr_abs", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_neg, "mpfr_neg", p, (mpfr_rnd_t) rnd);
-
- test2 (mpfr_log, "mpfr_log", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_log2, "mpfr_log2", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_log10, "mpfr_log10", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_log1p, "mpfr_log1p", p, (mpfr_rnd_t) rnd);
-
- test2 (mpfr_exp, "mpfr_exp", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_exp2, "mpfr_exp2", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_exp10, "mpfr_exp10", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_expm1, "mpfr_expm1", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_eint, "mpfr_eint", p, (mpfr_rnd_t) rnd);
-
- test2 (mpfr_sinh, "mpfr_sinh", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_cosh, "mpfr_cosh", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_tanh, "mpfr_tanh", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_asinh, "mpfr_asinh", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_acosh, "mpfr_acosh", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_atanh, "mpfr_atanh", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_sech, "mpfr_sech", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_csch, "mpfr_csch", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_coth, "mpfr_coth", p, (mpfr_rnd_t) rnd);
-
- test2 (mpfr_asin, "mpfr_asin", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_acos, "mpfr_acos", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_atan, "mpfr_atan", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_cos, "mpfr_cos", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_sin, "mpfr_sin", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_tan, "mpfr_tan", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_sec, "mpfr_sec", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_csc, "mpfr_csc", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_cot, "mpfr_cot", p, (mpfr_rnd_t) rnd);
-
- test2 (mpfr_erf, "mpfr_erf", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_erfc, "mpfr_erfc", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_j0, "mpfr_j0", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_j1, "mpfr_j1", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_y0, "mpfr_y0", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_y1, "mpfr_y1", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_zeta, "mpfr_zeta", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_gamma, "mpfr_gamma", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_lngamma, "mpfr_lngamma", p, (mpfr_rnd_t) rnd);
-
- test2 (mpfr_rint, "mpfr_rint", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_rint_ceil, "mpfr_rint_ceil", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_rint_floor, "mpfr_rint_floor", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_rint_round, "mpfr_rint_round", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_rint_trunc, "mpfr_rint_trunc", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_frac, "mpfr_frac", p, (mpfr_rnd_t) rnd);
-
- test3 (mpfr_add, "mpfr_add", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_sub, "mpfr_sub", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_mul, "mpfr_mul", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_div, "mpfr_div", p, (mpfr_rnd_t) rnd);
-
- test3 (mpfr_agm, "mpfr_agm", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_min, "mpfr_min", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_max, "mpfr_max", p, (mpfr_rnd_t) rnd);
-
- test3 (reldiff_wrapper, "mpfr_reldiff", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_dim, "mpfr_dim", p, (mpfr_rnd_t) rnd);
-
- test3 (mpfr_remainder, "mpfr_remainder", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_pow, "mpfr_pow", p, (mpfr_rnd_t) rnd);
- pow_int ((mpfr_rnd_t) rnd);
- test3 (mpfr_atan2, "mpfr_atan2", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_hypot, "mpfr_hypot", p, (mpfr_rnd_t) rnd);
-
- test3a (mpfr_sin_cos, "mpfr_sin_cos", p, (mpfr_rnd_t) rnd);
-
- test4 (mpfr_fma, "mpfr_fma", p, (mpfr_rnd_t) rnd);
- test4 (mpfr_fms, "mpfr_fms", p, (mpfr_rnd_t) rnd);
-
- test2 (mpfr_li2, "mpfr_li2", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_rec_sqrt, "mpfr_rec_sqrt", p, (mpfr_rnd_t) rnd);
- test3 (mpfr_fmod, "mpfr_fmod", p, (mpfr_rnd_t) rnd);
- test3a (mpfr_modf, "mpfr_modf", p, (mpfr_rnd_t) rnd);
- test3a (mpfr_sinh_cosh, "mpfr_sinh_cosh", p, (mpfr_rnd_t) rnd);
+ for (i = 1; i <= 5; i++)
+ {
+ /* Test on i limb(s), with a random number of trailing bits. */
+ p = GMP_NUMB_BITS * i - (randlimb () % GMP_NUMB_BITS);
+ if (p < MPFR_PREC_MIN)
+ p = MPFR_PREC_MIN;
+
+ RND_LOOP (rnd)
+ {
+ test2a (mpfr_round, "mpfr_round", p);
+ test2a (mpfr_ceil, "mpfr_ceil", p);
+ test2a (mpfr_floor, "mpfr_floor", p);
+ test2a (mpfr_trunc, "mpfr_trunc", p);
+
+ test2ui (mpfr_add_ui, "mpfr_add_ui", p, (mpfr_rnd_t) rnd);
+ test2ui (mpfr_div_2exp, "mpfr_div_2exp", p, (mpfr_rnd_t) rnd);
+ test2ui (mpfr_div_ui, "mpfr_div_ui", p, (mpfr_rnd_t) rnd);
+ test2ui (mpfr_mul_2exp, "mpfr_mul_2exp", p, (mpfr_rnd_t) rnd);
+ test2ui (mpfr_mul_ui, "mpfr_mul_ui", p, (mpfr_rnd_t) rnd);
+ test2ui (mpfr_pow_ui, "mpfr_pow_ui", p, (mpfr_rnd_t) rnd);
+ test2ui (mpfr_sub_ui, "mpfr_sub_ui", p, (mpfr_rnd_t) rnd);
+
+ testui2 (mpfr_ui_div, "mpfr_ui_div", p, (mpfr_rnd_t) rnd);
+ testui2 (mpfr_ui_sub, "mpfr_ui_sub", p, (mpfr_rnd_t) rnd);
+ testui2 (mpfr_ui_pow, "mpfr_ui_pow", p, (mpfr_rnd_t) rnd);
+
+ test2 (mpfr_sqr, "mpfr_sqr", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_sqrt, "mpfr_sqrt", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_abs, "mpfr_abs", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_neg, "mpfr_neg", p, (mpfr_rnd_t) rnd);
+
+ test2 (mpfr_log, "mpfr_log", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_log2, "mpfr_log2", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_log10, "mpfr_log10", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_log1p, "mpfr_log1p", p, (mpfr_rnd_t) rnd);
+
+ test2 (mpfr_exp, "mpfr_exp", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_exp2, "mpfr_exp2", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_exp10, "mpfr_exp10", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_expm1, "mpfr_expm1", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_eint, "mpfr_eint", p, (mpfr_rnd_t) rnd);
+
+ test2 (mpfr_sinh, "mpfr_sinh", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_cosh, "mpfr_cosh", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_tanh, "mpfr_tanh", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_asinh, "mpfr_asinh", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_acosh, "mpfr_acosh", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_atanh, "mpfr_atanh", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_sech, "mpfr_sech", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_csch, "mpfr_csch", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_coth, "mpfr_coth", p, (mpfr_rnd_t) rnd);
+
+ test2 (mpfr_asin, "mpfr_asin", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_acos, "mpfr_acos", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_atan, "mpfr_atan", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_cos, "mpfr_cos", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_sin, "mpfr_sin", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_tan, "mpfr_tan", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_sec, "mpfr_sec", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_csc, "mpfr_csc", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_cot, "mpfr_cot", p, (mpfr_rnd_t) rnd);
+
+ test2 (mpfr_erf, "mpfr_erf", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_erfc, "mpfr_erfc", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_j0, "mpfr_j0", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_j1, "mpfr_j1", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_y0, "mpfr_y0", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_y1, "mpfr_y1", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_zeta, "mpfr_zeta", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_gamma, "mpfr_gamma", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_lngamma, "mpfr_lngamma", p, (mpfr_rnd_t) rnd);
+
+ test2 (mpfr_rint, "mpfr_rint", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_rint_ceil, "mpfr_rint_ceil", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_rint_floor, "mpfr_rint_floor", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_rint_round, "mpfr_rint_round", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_rint_trunc, "mpfr_rint_trunc", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_frac, "mpfr_frac", p, (mpfr_rnd_t) rnd);
+
+ test3 (mpfr_add, "mpfr_add", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_sub, "mpfr_sub", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_mul, "mpfr_mul", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_div, "mpfr_div", p, (mpfr_rnd_t) rnd);
+
+ test3 (mpfr_agm, "mpfr_agm", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_min, "mpfr_min", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_max, "mpfr_max", p, (mpfr_rnd_t) rnd);
+
+ test3 (reldiff_wrapper, "mpfr_reldiff", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_dim, "mpfr_dim", p, (mpfr_rnd_t) rnd);
+
+ test3 (mpfr_remainder, "mpfr_remainder", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_pow, "mpfr_pow", p, (mpfr_rnd_t) rnd);
+ pow_int ((mpfr_rnd_t) rnd);
+ test3 (mpfr_atan2, "mpfr_atan2", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_hypot, "mpfr_hypot", p, (mpfr_rnd_t) rnd);
+
+ test3a (mpfr_sin_cos, "mpfr_sin_cos", p, (mpfr_rnd_t) rnd);
+
+ test4 (mpfr_fma, "mpfr_fma", p, (mpfr_rnd_t) rnd);
+ test4 (mpfr_fms, "mpfr_fms", p, (mpfr_rnd_t) rnd);
+
+ test2 (mpfr_li2, "mpfr_li2", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_rec_sqrt, "mpfr_rec_sqrt", p, (mpfr_rnd_t) rnd);
+ test3 (mpfr_fmod, "mpfr_fmod", p, (mpfr_rnd_t) rnd);
+ test3a (mpfr_modf, "mpfr_modf", p, (mpfr_rnd_t) rnd);
+ test3a (mpfr_sinh_cosh, "mpfr_sinh_cosh", p, (mpfr_rnd_t) rnd);
#if MPFR_VERSION >= MPFR_VERSION_NUM(3,0,0)
- test2 (mpfr_ai, "mpfr_ai", p, (mpfr_rnd_t) rnd);
- test2 (mpfr_digamma, "mpfr_digamma", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_ai, "mpfr_ai", p, (mpfr_rnd_t) rnd);
+ test2 (mpfr_digamma, "mpfr_digamma", p, (mpfr_rnd_t) rnd);
#endif
- }
+ }
+ }
tests_end_mpfr ();
return 0;