summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorS. Gilles <sgilles@math.umd.edu>2019-05-01 16:02:26 -0400
committerS. Gilles <sgilles@math.umd.edu>2019-05-01 16:02:26 -0400
commit303798469e8afe0e514c667f3c8c7ae2c65e58c5 (patch)
treed29610c74026436aba1aceca728c4317139eefea /lib
parentb889eefb13a9f1e41a3d0a85b23b69c058847ef3 (diff)
downloadmc-303798469e8afe0e514c667f3c8c7ae2c65e58c5.tar.gz
Test the slow2sum function.
The singular piece of test data is the tuple that caused me to spend far too long realizing that fast2sum is not always appropriate.
Diffstat (limited to 'lib')
-rw-r--r--lib/math/test/util.myr29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/math/test/util.myr b/lib/math/test/util.myr
new file mode 100644
index 0000000..d16b5ed
--- /dev/null
+++ b/lib/math/test/util.myr
@@ -0,0 +1,29 @@
+use std
+use math
+use testr
+
+const main = {
+ math.fptrap(false)
+ testr.run([
+ [.name="slow2sum-01", .fn = slow2sum01],
+ ][:])
+}
+
+const slow2sum01 = {c
+ var inputs : (uint64, uint64, uint64, uint64)[:] = [
+ (0xbc29505efc367580, 0xc000000000000000, 0xc000000000000000, 0xbc29505efc367580)
+ ][:]
+
+ for (x, y, s, t) : inputs
+ var xf : flt64 = std.flt64frombits(x)
+ var yf : flt64 = std.flt64frombits(y)
+ var r1, r2
+ (r1, r2) = math.slow2sum(xf, yf)
+ var r1u = std.flt64bits(r1)
+ var r2u = std.flt64bits(r2)
+ testr.check(c, r1u == s && r2u == t,
+ "2sum(0x{b=16,w=16,p=0}, 0x{b=16,w=16,p=0) is (0x{b=16,w=16,p=0}, 0x{b=16,w=16,p=0}), should be (0x{b=16,w=16,p=0}, 0x{b=16,w=16,p=0})",
+ x, y, r1u, r2u, s, t)
+
+ ;;
+}