diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2016-09-02 07:13:38 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2016-09-02 07:13:38 +0000 |
commit | b4df47ef18e9e516e90a97d2e6626e4dc493d813 (patch) | |
tree | a39018105250ca3eda936cdd57b32fbfe1fef45e /tests/reuse.c | |
parent | 61816b69da7f34b565572ec787a6302205d3256d (diff) | |
download | mpfr-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.c | 229 |
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; |