diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/ChangeLog | 7 | ||||
-rw-r--r-- | test/Makefile.am | 9 | ||||
-rw-r--r-- | test/Makefile.in | 9 | ||||
-rw-r--r-- | test/mpfrrndeval.awk | 35 | ||||
-rw-r--r-- | test/mpfrrndeval.ok | 18 |
5 files changed, 76 insertions, 2 deletions
diff --git a/test/ChangeLog b/test/ChangeLog index 1e1cf7ea..c64dc5bc 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,10 @@ +2018-01-02 Arnold D. Robbins <arnold@skeeve.com> + + Thanks to Nethox <nethox@gmail.com> for this test. + + * Makefile.am (mpfrrndeval): New test. + * mpfrrndeval.awk, mpfrrndeval.ok: New files. + 2017-11-14 Andrew J. Schorr <aschorr@telemetry-investments.com> * Makefile.am (EXTRA_DIST): Add new tests setrec0 and setrec1. diff --git a/test/Makefile.am b/test/Makefile.am index 1438e083..1ec63a20 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -666,6 +666,8 @@ EXTRA_DIST = \ mpfrrem.ok \ mpfrrnd.awk \ mpfrrnd.ok \ + mpfrrndeval.awk \ + mpfrrndeval.ok \ mpfrsort.awk \ mpfrsort.ok \ mpfrsqrt.awk \ @@ -1285,7 +1287,7 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht MACHINE_TESTS = double1 double2 fmtspcl intformat -MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrieee +MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrrndeval mpfrieee mpfrexprange mpfrsort mpfrsqrt mpfrbigint mpfrstrtonum mpgforcenum LOCALE_CHARSET_TESTS = \ @@ -2073,6 +2075,11 @@ mpfrrnd: @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1 @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrrndeval: + @echo $@ + @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1 + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + mpfrnegzero: @echo $@ @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1 diff --git a/test/Makefile.in b/test/Makefile.in index 5a190d7a..9775fd5b 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -924,6 +924,8 @@ EXTRA_DIST = \ mpfrrem.ok \ mpfrrnd.awk \ mpfrrnd.ok \ + mpfrrndeval.awk \ + mpfrrndeval.ok \ mpfrsort.awk \ mpfrsort.ok \ mpfrsqrt.awk \ @@ -1538,7 +1540,7 @@ ARRAYDEBUG_TESTS = arrdbg EXTRA_TESTS = inftest regtest ignrcas3 INET_TESTS = inetdayu inetdayt inetechu inetecht MACHINE_TESTS = double1 double2 fmtspcl intformat -MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrieee +MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrrndeval mpfrieee LOCALE_CHARSET_TESTS = \ asort asorti backbigs1 backsmalls1 backsmalls2 \ fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \ @@ -2512,6 +2514,11 @@ mpfrrnd: @$(AWK) -M -vPREC=53 -f "$(srcdir)"/$@.awk > _$@ 2>&1 @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mpfrrndeval: + @echo $@ + @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1 + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + mpfrnegzero: @echo $@ @$(AWK) -M -f "$(srcdir)"/$@.awk > _$@ 2>&1 diff --git a/test/mpfrrndeval.awk b/test/mpfrrndeval.awk new file mode 100644 index 00000000..12010052 --- /dev/null +++ b/test/mpfrrndeval.awk @@ -0,0 +1,35 @@ +# Tests side effects (like caching) on the evaluation (formatting and +# rounding) of MPFR variables vs literals. +BEGIN { + pi = 3.1416 + e = 2.7183 + golden = 1.6180 + + # Evaluated as number with (default) OFMT. + print pi + print e + print golden + printf "\n" + + # Evaluated as number with (custom) OFMT. + OFMT = "%.f" + ROUNDMODE = "U"; print "Variable pi U:", pi + ROUNDMODE = "D"; print "Variable pi D:", pi + ROUNDMODE = "U"; print "Literal pi U:", 3.1416 + ROUNDMODE = "D"; print "Literal pi D:", 3.1416 + printf "\n" + + # Evaluated as string with (custom) CONVFMT. Absent comma. + CONVFMT = "%.f" + ROUNDMODE = "D"; print "Variable e D: " e + ROUNDMODE = "U"; print "Variable e U: " e + ROUNDMODE = "D"; print "Literal e D: " 2.7183 + ROUNDMODE = "U"; print "Literal e U: " 2.7183 + printf "\n" + + # Evaluated as number with (hardcoded) printf conversion. + ROUNDMODE = "N"; printf "Variable golden N: %.f\n", golden + ROUNDMODE = "Z"; printf "Variable golden Z: %.f\n", golden + ROUNDMODE = "N"; printf "Literal golden N: %.f\n", 1.6180 + ROUNDMODE = "Z"; printf "Literal golden Z: %.f\n", 1.6180 +} diff --git a/test/mpfrrndeval.ok b/test/mpfrrndeval.ok new file mode 100644 index 00000000..034b21e0 --- /dev/null +++ b/test/mpfrrndeval.ok @@ -0,0 +1,18 @@ +3.1416 +2.7183 +1.618 + +Variable pi U: 4 +Variable pi D: 3 +Literal pi U: 4 +Literal pi D: 3 + +Variable e D: 2 +Variable e U: 3 +Literal e D: 2 +Literal e U: 3 + +Variable golden N: 2 +Variable golden Z: 1 +Literal golden N: 2 +Literal golden Z: 1 |