aboutsummaryrefslogtreecommitdiff
path: root/gfsm/gfsm/tests/02_arith.at
blob: 856ab0548bc1dacb409b5b95d05fb361dc64452e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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