summaryrefslogtreecommitdiff
path: root/tests/tpow_ui.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2010-03-31 14:36:10 +0000
committerzimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2010-03-31 14:36:10 +0000
commit0827415ea46794a5ff4ed5270e171ef25efb2502 (patch)
tree8ff6243ac76f0daafae9b366ad1e6b5f89b688f0 /tests/tpow_ui.c
parent0091d559a6373749bc3f0858e5b241e0eefe06e0 (diff)
downloadmpc-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.c31
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);