aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.am24
-rw-r--r--test/Makefile.in23
-rw-r--r--test/mpfrexprange.awk7
-rw-r--r--test/mpfrexprange.ok2
-rw-r--r--test/mpfrieee.awk13
-rw-r--r--test/mpfrieee.ok12
-rw-r--r--test/mpfrnr.awk10
-rw-r--r--test/mpfrnr.in3
-rw-r--r--test/mpfrnr.ok1
-rw-r--r--test/mpfrrnd.awk15
-rw-r--r--test/mpfrrnd.ok10
11 files changed, 120 insertions, 0 deletions
diff --git a/test/Makefile.am b/test/Makefile.am
index f81bc8ec..bc174fb8 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -846,6 +846,8 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
+MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange
+
LOCALE_CHARSET_TESTS = \
asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
@@ -906,6 +908,8 @@ inet: inetmesg $(INET_TESTS)
machine-tests: $(MACHINE_TESTS)
+mpfr-tests: $(MPFR_TESTS)
+
msg::
@echo ''
@echo 'Any output from "cmp" is bad news, although some differences'
@@ -1451,6 +1455,26 @@ rri1::
AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+mpfrieee:
+ @echo $@
+ @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrexprange:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrrnd:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrnr:
+ @echo $@
+ @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
# Targets generated for other tests:
include Maketests
diff --git a/test/Makefile.in b/test/Makefile.in
index 96f4a20f..7a88e836 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1029,6 +1029,7 @@ GAWK_EXT_TESTS = \
EXTRA_TESTS = inftest regtest
INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
+MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange
LOCALE_CHARSET_TESTS = \
asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
@@ -1260,6 +1261,8 @@ inet: inetmesg $(INET_TESTS)
machine-tests: $(MACHINE_TESTS)
+mpfr-tests: $(MPFR_TESTS)
+
msg::
@echo ''
@echo 'Any output from "cmp" is bad news, although some differences'
@@ -1802,6 +1805,26 @@ rri1::
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrieee:
+ @echo $@
+ @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrexprange:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrrnd:
+ @echo $@
+ @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+mpfrnr:
+ @echo $@
+ @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
diff --git a/test/mpfrexprange.awk b/test/mpfrexprange.awk
new file mode 100644
index 00000000..68e95a39
--- /dev/null
+++ b/test/mpfrexprange.awk
@@ -0,0 +1,7 @@
+# test change of allowed exponent range
+BEGIN {
+ x=1.0e-10000
+ print x+0
+ PREC="double"
+ print x+0
+}
diff --git a/test/mpfrexprange.ok b/test/mpfrexprange.ok
new file mode 100644
index 00000000..4700ee22
--- /dev/null
+++ b/test/mpfrexprange.ok
@@ -0,0 +1,2 @@
+1e-10000
+0
diff --git a/test/mpfrieee.awk b/test/mpfrieee.awk
new file mode 100644
index 00000000..dc6e120d
--- /dev/null
+++ b/test/mpfrieee.awk
@@ -0,0 +1,13 @@
+# Test IEEE-754 binary double format
+BEGIN {
+ x = 1.0e-320
+ i = 0
+ while (x > 0) {
+ printf("%.15e\n", x)
+ x /= 2
+
+ # terminate early when the test is going to fail.
+ if (++i > 50)
+ break
+ }
+}
diff --git a/test/mpfrieee.ok b/test/mpfrieee.ok
new file mode 100644
index 00000000..e88f5c79
--- /dev/null
+++ b/test/mpfrieee.ok
@@ -0,0 +1,12 @@
+9.999888671826830e-321
+4.999944335913415e-321
+2.499972167956708e-321
+1.249986083978354e-321
+6.225227137599706e-322
+3.112613568799853e-322
+1.581010066691989e-322
+7.905050333459945e-323
+3.952525166729972e-323
+1.976262583364986e-323
+9.881312916824931e-324
+4.940656458412465e-324
diff --git a/test/mpfrnr.awk b/test/mpfrnr.awk
new file mode 100644
index 00000000..1a3b753a
--- /dev/null
+++ b/test/mpfrnr.awk
@@ -0,0 +1,10 @@
+# Test NR and FNR for file(s) with records > LONG_MAX
+BEGIN {
+ NR = 0x7FFFFFFF
+}
+BEGINFILE {
+ FNR = 0x7fffffffffffffff
+}
+END {
+ print NR, NR-0x7FFFFFFF, FNR, FNR-0x7fffffffffffffff
+}
diff --git a/test/mpfrnr.in b/test/mpfrnr.in
new file mode 100644
index 00000000..6ad36e52
--- /dev/null
+++ b/test/mpfrnr.in
@@ -0,0 +1,3 @@
+Line 1
+Line 2
+Line 3
diff --git a/test/mpfrnr.ok b/test/mpfrnr.ok
new file mode 100644
index 00000000..e472f8bf
--- /dev/null
+++ b/test/mpfrnr.ok
@@ -0,0 +1 @@
+2147483650 3 9223372036854775810 3
diff --git a/test/mpfrrnd.awk b/test/mpfrrnd.awk
new file mode 100644
index 00000000..eafefb9f
--- /dev/null
+++ b/test/mpfrrnd.awk
@@ -0,0 +1,15 @@
+BEGIN {
+ N = 22/7
+ printf(" %.15f\n", N)
+
+ printf("* %.10f\n", N) # default
+ RNDMODE="N"; printf("N %.10f\n", N)
+ RNDMODE="U"; printf("U %.10f\n", N)
+ RNDMODE="D"; printf("D %.10f\n", N)
+ RNDMODE="Z"; printf("Z %.10f\n", N)
+ N = -N
+ RNDMODE="N"; printf("N %.10f\n", N)
+ RNDMODE="U"; printf("U %.10f\n", N)
+ RNDMODE="D"; printf("D %.10f\n", N)
+ RNDMODE="Z"; printf("Z %.10f\n", N)
+}
diff --git a/test/mpfrrnd.ok b/test/mpfrrnd.ok
new file mode 100644
index 00000000..fceb937b
--- /dev/null
+++ b/test/mpfrrnd.ok
@@ -0,0 +1,10 @@
+ 3.142857142857143
+* 3.1428571429
+N 3.1428571429
+U 3.1428571429
+D 3.1428571428
+Z 3.1428571428
+N -3.1428571429
+U -3.1428571428
+D -3.1428571429
+Z -3.1428571428