diff options
author | zimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2010-03-31 14:36:10 +0000 |
---|---|---|
committer | zimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2010-03-31 14:36:10 +0000 |
commit | 0827415ea46794a5ff4ed5270e171ef25efb2502 (patch) | |
tree | 8ff6243ac76f0daafae9b366ad1e6b5f89b688f0 /tests/tpow_ui.c | |
parent | 0091d559a6373749bc3f0858e5b241e0eefe06e0 (diff) | |
download | mpc-0827415ea46794a5ff4ed5270e171ef25efb2502.tar.gz |
[src/pow_ui.c] implemented new trick: if '11' appears in the exponent (not
necessarily at the most significant bits), then compute and
store z^3
[tests/tpow_ui.c] added code to call "./tpow_ui precision n [k]"
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@750 211d60ee-9f03-0410-a15a-8952a2c7a4e4
Diffstat (limited to 'tests/tpow_ui.c')
-rw-r--r-- | tests/tpow_ui.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/tests/tpow_ui.c b/tests/tpow_ui.c index 8285d8d..feda442 100644 --- a/tests/tpow_ui.c +++ b/tests/tpow_ui.c @@ -78,10 +78,35 @@ compare_mpc_pow (mp_prec_t pmax, int iter, unsigned long nbits) } int -main (void) +main (int argc, char *argv[]) { mpc_t z; + if (argc != 1) + { + mp_prec_t p; + unsigned long n, k; + mpc_t res; + if (argc != 3 && argc != 4) + { + printf ("Usage: tpow_ui precision exponent [k]\n"); + exit (1); + } + p = atoi (argv[1]); + n = atoi (argv[2]); + k = (argc > 3) ? atoi (argv[3]) : 1; + mpc_init2 (z, p); + mpc_init2 (res, p); + mpfr_const_pi (mpc_realref (z), GMP_RNDN); + mpfr_div_2exp (mpc_realref (z), mpc_realref (z), 2, GMP_RNDN); + mpfr_const_log2 (mpc_imagref (z), GMP_RNDN); + while (k--) + mpc_pow_ui (res, z, n, MPC_RNDNN); + mpc_clear (z); + mpc_clear (res); + return 0; + } + test_start (); mpc_init2 (z, 5); @@ -90,6 +115,10 @@ main (void) if (mpc_cmp_si_si (z, -9, 46) != 0) { printf ("Error for mpc_pow_ui (1)\n"); + printf ("expected (-9,46)\n"); + printf ("got "); + mpc_out_str (stdout, 10, 0, z, MPC_RNDNN); + printf ("\n"); exit (1); } mpc_clear (z); |