aboutsummaryrefslogtreecommitdiff
path: root/gfsm/gfsm/tests/02_arith.at
diff options
context:
space:
mode:
Diffstat (limited to 'gfsm/gfsm/tests/02_arith.at')
-rw-r--r--gfsm/gfsm/tests/02_arith.at107
1 files changed, 107 insertions, 0 deletions
diff --git a/gfsm/gfsm/tests/02_arith.at b/gfsm/gfsm/tests/02_arith.at
new file mode 100644
index 0000000..856ab05
--- /dev/null
+++ b/gfsm/gfsm/tests/02_arith.at
@@ -0,0 +1,107 @@
+## -*- Mode: Autotest -*-
+##
+## File: arith.at
+## Package: gfsm
+## Description: autotest test-suite script: semiring
+##
+
+AT_BANNER([(semiring-)arithmetic])
+
+##--------------------------------------------------------------
+## gfsmarith (real: vanilla)
+AT_SETUP([arith.real])
+AT_KEYWORDS([arith semiring])
+
+##-- real ops: add, multiply
+AT_CHECK([[echo "0 0" | $progdir/gfsmcompile | $progdir/gfsmarith -Z -a 1 | $progdir/gfsmprint]],0,
+[0 1
+],[])
+AT_CHECK([[echo "0 1" | $progdir/gfsmcompile | $progdir/gfsmarith -Z -m 42 | $progdir/gfsmprint]],0,
+[0 42
+],[])
+
+##-- real ops: log, exp
+AT_CHECK([[echo "0 1" | $progdir/gfsmcompile | $progdir/gfsmarith -Z --log | $progdir/gfsmprint]],0,
+[0 0
+],[])
+AT_CHECK([[echo "0 1" | $progdir/gfsmcompile | $progdir/gfsmarith -Z --exp | $progdir/gfsmprint]],0,
+[0 2.71828
+],[])
+AT_CLEANUP
+
+##--------------------------------------------------------------
+## semiring: boolean
+AT_SETUP([arith.sr.boolean])
+AT_KEYWORDS([arith semiring])
+AT_CHECK(
+[[echo "0 0" | $progdir/gfsmcompile -s boolean | $progdir/gfsmarith -Z --plus=1 | $progdir/gfsmprint]],0,
+[0 1
+])
+AT_CHECK(
+[[echo "0 0" | $progdir/gfsmcompile -s boolean | $progdir/gfsmarith -Z --times=1 | $progdir/gfsmprint]],0,
+[0 0
+])
+AT_CLEANUP
+
+##--------------------------------------------------------------
+## semiring: log
+AT_SETUP([arith.sr.log])
+AT_KEYWORDS([arith semiring])
+# -log(.125)= 2.07944
+# -log(.25) = 1.38629
+# -log(.5) = .693147
+# -log(.75) = 0.287682
+AT_CHECK(
+[[echo "0 .693147" | $progdir/gfsmcompile -s log | $progdir/gfsmarith -Z --plus=1.38629 | $progdir/gfsmprint]],0,
+[0 0.28768
+])
+AT_CHECK(
+[[echo "0 .5" | $progdir/gfsmcompile -s log | $progdir/gfsmarith -Z --times=0.25 | $progdir/gfsmprint]],0,
+[0 0.75
+])
+AT_CLEANUP
+
+##--------------------------------------------------------------
+## semiring: positive log
+AT_SETUP([arith.sr.plog])
+AT_KEYWORDS([arith semiring])
+# log(.125)= -2.07944
+# log(.25) = -1.38629
+# log(.5) = -0.693147
+# log(.75) = -0.287682
+AT_CHECK(
+[[echo "0 -0.693147" | $progdir/gfsmcompile -s plog | $progdir/gfsmarith -Z --plus=-1.38629 | $progdir/gfsmprint]],0,
+[0 -0.28768
+])
+AT_CHECK(
+[[echo "0 -0.5" | $progdir/gfsmcompile -s plog | $progdir/gfsmarith -Z --times=-0.25 | $progdir/gfsmprint]],0,
+[0 -0.75
+])
+AT_CLEANUP
+
+##--------------------------------------------------------------
+## semiring: real
+AT_SETUP([arith.sr.real])
+AT_CHECK(
+[[echo "0 3" | $progdir/gfsmcompile -s real | $progdir/gfsmarith -Z --plus=4 | $progdir/gfsmprint]],0,
+[0 7
+])
+AT_CHECK(
+[[echo "0 3" | $progdir/gfsmcompile -s real | $progdir/gfsmarith -Z --times=4 | $progdir/gfsmprint]],0,
+[0 12
+])
+AT_CLEANUP
+
+##--------------------------------------------------------------
+## semiring: tropical
+AT_SETUP([arith.sr.tropical])
+AT_KEYWORDS([arith semiring])
+AT_CHECK(
+[[echo "0 3" | $progdir/gfsmcompile -s tropical | $progdir/gfsmarith -Z --plus=4 | $progdir/gfsmprint]],0,
+[0 3
+])
+AT_CHECK(
+[[echo "0 3" | $progdir/gfsmcompile -s tropical | $progdir/gfsmarith -Z --times=4 | $progdir/gfsmprint]],0,
+[0 7
+])
+AT_CLEANUP