diff options
author | thevenyp <thevenyp@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2013-12-04 12:49:29 +0000 |
---|---|---|
committer | thevenyp <thevenyp@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2013-12-04 12:49:29 +0000 |
commit | ca3e4804ceb808d61b334210ea49968292ef37ac (patch) | |
tree | f7ba5f60f230131000bcdbdb690839ca86d43209 /tests | |
parent | 38fa812807316bb715baccbc6d6be3b32cee0dec (diff) | |
download | mpc-ca3e4804ceb808d61b334210ea49968292ef37ac.tar.gz |
[tests/] Add templated tests for mmpc_ui_div and mpc_sui_ui_sub.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/branches/benchs_tests@1382 211d60ee-9f03-0410-a15a-8952a2c7a4e4
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 5 | ||||
-rw-r--r-- | tests/tui_div_tmpl.c | 107 | ||||
-rw-r--r-- | tests/tui_ui_sub_tmpl.c | 40 | ||||
-rw-r--r-- | tests/ui_div.dsc | 29 | ||||
-rw-r--r-- | tests/ui_ui_sub.dsc | 30 |
5 files changed, 209 insertions, 2 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 418b2cc..88eef49 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -37,7 +37,8 @@ TEMPLATED = tabs_tmpl tacos_tmpl tacosh_tmpl tadd_fr_tmpl tadd_tmpl \ tmul_i_tmpl tmul_si_tmpl tmul_ui_tmpl tneg_tmpl tnorm_tmpl tpow_tmpl \ tpow_d_tmpl tpow_fr_tmpl tpow_si_tmpl tpow_ui_tmpl tpow_z_tmpl \ tproj_tmpl treal_tmpl tsin_tmpl tsinh_tmpl tsin_cos_tmpl tsqr_tmpl \ - tsqrt_tmpl tsub_fr_tmpl tsub_tmpl tsub_ui_tmpl ttan_tmpl ttanh_tmpl + tsqrt_tmpl tsub_fr_tmpl tsub_tmpl tsub_ui_tmpl ttan_tmpl ttanh_tmpl \ + tui_div_tmpl tui_ui_sub_tmpl check_PROGRAMS = tabs tacos tacosh tadd tadd_fr tadd_si tadd_ui targ \ tasin tasinh tatan tatanh tconj tcos tcosh tdiv tdiv_2si tdiv_2ui \ tdiv_fr tdiv_ui texp tfma tfr_div tfr_sub timag tio_str tlog tlog10 \ @@ -62,7 +63,7 @@ DESCRIPTIONS = abs.dsc acos.dsc acosh.dsc add.dsc add_fr.dsc add_si.dsc \ mul_si.dsc mul_ui.dsc neg.dsc norm.dsc pow.dsc pow_d.dsc pow_fr.dsc \ pow_si.dsc pow_ui.dsc pow_z.dsc proj.dsc real.dsc sin.dsc sinh.dsc \ sin_cos.dsc sqr.dsc sqrt.dsc sub.dsc sub_fr.dsc sub_ui.dsc tan.dsc \ - tanh.dsc + tanh.dsc ui_div.dsc ui_ui_sub.dsc DATA_SETS = abs.dat acos.dat acosh.dat add.dat add_fr.dat arg.dat \ asin.dat asinh.dat atan.dat atanh.dat conj.dat cos.dat cosh.dat \ div.dat div_fr.dat exp.dat fma.dat fr_div.dat fr_sub.dat inp_str.dat \ diff --git a/tests/tui_div_tmpl.c b/tests/tui_div_tmpl.c new file mode 100644 index 0000000..9af1754 --- /dev/null +++ b/tests/tui_div_tmpl.c @@ -0,0 +1,107 @@ +/* tui_div_tmpl -- templatesd test file for mpc_ui_div. + +Copyright (C) 2008, 2011, 2012, 2013 INRIA + +This file is part of GNU MPC. + +GNU MPC is free software; you can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +more details. + +You should have received a copy of the GNU Lesser General Public License +along with this program. If not, see http://www.gnu.org/licenses/ . +*/ + +#include "templates.h" + +static void +special (void) +{ + mpc_t a, b; + + mpc_init2 (a, 10); + mpc_init2 (b, 10); + + mpc_set_ui_ui (a, 2, 4, MPC_RNDNN); + mpc_ui_div (b, 10, a, MPC_RNDNN); + if (mpc_cmp_si_si (b, 1, -2) != 0) + { + printf ("10/(2,4) failed\n"); + printf ("expected (1,-2)\n"); + printf ("got "); + mpc_out_str (stdout, 10, 0, b, MPC_RNDNN); + printf ("\n"); + exit (1); + } + + /* 0/(-1-0*I) should give (-0, +0) */ + mpfr_set_str (mpc_realref(a), "-1", 10, MPFR_RNDN); + mpfr_set_str (mpc_imagref(a), "-0", 10, MPFR_RNDN); + mpc_ui_div (b, 0, a, MPC_RNDNN); + if ((mpc_cmp_si_si (b, 0, 0) != 0) || (MPFR_SIGN (mpc_realref(b)) > 0) + || (MPFR_SIGN (mpc_imagref(b)) < 0)) + { + printf ("0/(-1,-0) failed\n"); + printf ("expected (-0,+0)\n"); + printf ("got "); + mpc_out_str (stdout, 10, 0, b, MPC_RNDNN); + printf ("\n"); + exit (1); + } + + mpc_set_ui_ui (a, 1, 0, MPC_RNDNN); + mpc_ui_div (b, 1, a, MPC_RNDNN); + if (mpc_cmp_si_si (b, 1, 0) != 0) + { + printf ("1/(1,0) failed\n"); + printf ("expected (1,0)\n"); + printf ("got "); + mpc_out_str (stdout, 10, 0, b, MPC_RNDNN); + printf ("\n"); + exit (1); + } + + /* problem reported by Timo Hartmann with mpc-0.7, 21 Oct 2009 */ + mpc_set_ui_ui (a, 4, 0, MPC_RNDNN); + mpc_ui_div (b, 1, a, MPC_RNDNN); + if (mpfr_cmp_ui_2exp (mpc_realref(b), 1, -2) != 0 || + mpfr_cmp_ui (mpc_imagref(b), 0) != 0 || mpfr_signbit (mpc_imagref(b)) != 0) + { + printf ("1/(4,0) failed\n"); + printf ("expected (1/4,0)\n"); + printf ("got "); + mpc_out_str (stdout, 10, 0, b, MPC_RNDNN); + printf ("\n"); + exit (1); + } + + mpc_clear (a); + mpc_clear (b); +} + +#define MPC_FUNCTION_CALL \ + P[0].mpc_inex = mpc_ui_div (P[1].mpc, P[2].ui, P[3].mpc, P[4].mpc_rnd) +#define MPC_FUNCTION_CALL_REUSE_OP2 \ + P[0].mpc_inex = mpc_ui_div (P[1].mpc, P[2].ui, P[1].mpc, P[4].mpc_rnd) + +#include "tgeneric.tpl" + +int +main (void) +{ + test_start (); + + special (); + + tgeneric_template ("ui_div.dsc", 2, 1024, 7, 4096); + + test_end (); + + return 0; +} diff --git a/tests/tui_ui_sub_tmpl.c b/tests/tui_ui_sub_tmpl.c new file mode 100644 index 0000000..5b7c608 --- /dev/null +++ b/tests/tui_ui_sub_tmpl.c @@ -0,0 +1,40 @@ +/* tui_ui_sub_tmpl -- templated test file for mpc_ui_ui_sub. + +Copyright (C) 2008, 2013 INRIA + +This file is part of GNU MPC. + +GNU MPC is free software; you can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +more details. + +You should have received a copy of the GNU Lesser General Public License +along with this program. If not, see http://www.gnu.org/licenses/ . +*/ + +#include "templates.h" + +#define MPC_FUNCTION_CALL \ + P[0].mpc_inex = mpc_ui_ui_sub (P[1].mpc, P[2].ui, P[3].ui, P[4].mpc, P[5].mpc_rnd) +#define MPC_FUNCTION_CALL_REUSE_OP3 \ + P[0].mpc_inex = mpc_ui_ui_sub (P[1].mpc, P[2].ui, P[3].ui, P[4].mpc, P[5].mpc_rnd) + +#include "tgeneric.tpl" + +int +main (void) +{ + test_start (); + + tgeneric_template ("ui_ui_sub.dsc", 2, 1024, 7, 1024); + + test_end (); + + return 0; +} diff --git a/tests/ui_div.dsc b/tests/ui_div.dsc new file mode 100644 index 0000000..5bd3a4b --- /dev/null +++ b/tests/ui_div.dsc @@ -0,0 +1,29 @@ +# Description file for mpc_ui_div +# +# Copyright (C) 2013 INRIA +# +# This file is part of GNU MPC. +# +# GNU MPC is free software; you can redistribute it and/or modify it under +# the terms of the GNU Lesser General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +#o ption) any later version. +# +# GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +# more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see http://www.gnu.org/licenses/ . +# +NAME: + mpc_ui_div +RETURN: + mpc_inex +OUTPUT: + mpc_ptr +INPUT: + unsigned long int + mpc_srcptr + mpc_rnd_t diff --git a/tests/ui_ui_sub.dsc b/tests/ui_ui_sub.dsc new file mode 100644 index 0000000..13b803f --- /dev/null +++ b/tests/ui_ui_sub.dsc @@ -0,0 +1,30 @@ +# Description file for mpc_ui_ui_sub +# +# Copyright (C) 2013 INRIA +# +# This file is part of GNU MPC. +# +# GNU MPC is free software; you can redistribute it and/or modify it under +# the terms of the GNU Lesser General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +#o ption) any later version. +# +# GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +# more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see http://www.gnu.org/licenses/ . +# +NAME: + mpc_ui_ui_sub +RETURN: + mpc_inex +OUTPUT: + mpc_ptr +INPUT: + unsigned long int + unsigned long int + mpc_srcptr + mpc_rnd_t |