diff options
Diffstat (limited to 'gfsm/gfsm/tests/02_arith.at')
-rw-r--r-- | gfsm/gfsm/tests/02_arith.at | 107 |
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 |