summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorthevenyp <thevenyp@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2013-12-04 12:49:29 +0000
committerthevenyp <thevenyp@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2013-12-04 12:49:29 +0000
commitca3e4804ceb808d61b334210ea49968292ef37ac (patch)
treef7ba5f60f230131000bcdbdb690839ca86d43209 /tests
parent38fa812807316bb715baccbc6d6be3b32cee0dec (diff)
downloadmpc-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.am5
-rw-r--r--tests/tui_div_tmpl.c107
-rw-r--r--tests/tui_ui_sub_tmpl.c40
-rw-r--r--tests/ui_div.dsc29
-rw-r--r--tests/ui_ui_sub.dsc30
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