diff options
Diffstat (limited to 'tools/testgen/write_test_mulfr.c')
-rw-r--r-- | tools/testgen/write_test_mulfr.c | 60 |
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; +} |