summaryrefslogtreecommitdiff
path: root/tools/testgen/write_test_mulfr.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/testgen/write_test_mulfr.c')
-rw-r--r--tools/testgen/write_test_mulfr.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/tools/testgen/write_test_mulfr.c b/tools/testgen/write_test_mulfr.c
new file mode 100644
index 0000000..1dfc577
--- /dev/null
+++ b/tools/testgen/write_test_mulfr.c
@@ -0,0 +1,60 @@
+#include "write_test.h"
+
+char* header1 =
+"# Data file for mpc_mul_fr.\n"
+"#\n"
+"# Copyright (C) 2008 Andreas Enge\n"
+"#\n"
+;
+char* header2 =
+"# For explanations on the file format, see add_fr.dat.\n\n"
+;
+
+int main () {
+ int op1rei, op1imi, op2i;
+ // index in values table
+ char *op1re, *op1im, *op2;
+
+ printf ("%s%s%s", header1, licence, header2);
+
+ printf ("# special values\n");
+ for (op1rei = 0; op1rei < valueslen; op1rei++)
+ for (op1imi = 0; op1imi < valueslen; op1imi++)
+ for (op2i = 0; op2i < valueslen; op2i++)
+ {
+ op1re = values [op1rei];
+ op1im = values [op1imi];
+ op2 = values [op2i];
+ if ( (index (infvalues, infvalueslen, op1re) != -1)
+ || (index (infvalues, infvalueslen, op1im) != -1)
+ || (index (infvalues, infvalueslen, op2) != -1))
+ {
+ // at least one infinite value
+ printf ("7 %4s 7 %4s ",
+ mul_fr_fr (op1re, op2), mul_fr_fr (op1im, op2));
+ printf ("7 %4s 7 %4s 7 %4s N N\n",
+ op1re, op1im, op2);
+ }
+ }
+
+ printf ("\n# values with only 1, -1, +0, -0\n");
+ for (op1rei = 0; op1rei < valueslen; op1rei++)
+ for (op1imi = 0; op1imi < valueslen; op1imi++)
+ for (op2i = 0; op2i < valueslen; op2i++)
+ {
+ op1re = values [op1rei];
+ op1im = values [op1imi];
+ op2 = values [op2i];
+ if ( (index (infvalues, infvalueslen, op1re) == -1)
+ && (index (infvalues, infvalueslen, op1im) == -1)
+ && (index (infvalues, infvalueslen, op2) == -1))
+ {
+ printf ("7 %4s 7 %4s ",
+ mul_fr_fr (op1re, op2), mul_fr_fr (op1im, op2));
+ printf ("7 %4s 7 %4s 7 %4s N N\n",
+ op1re, op1im, op2);
+ }
+ }
+
+ return 1;
+}