aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog7
-rw-r--r--test/Makefile.am9
-rw-r--r--test/Makefile.in9
-rw-r--r--test/mpfrrndeval.awk35
-rw-r--r--test/mpfrrndeval.ok18
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