xref: /minix3/usr.bin/m4/TEST/math.m4 (revision 2e8d1eda1b10b1eefcc41d19325e6baa0615ae5c)
1*2e8d1edaSArun Thomasdnl $NetBSD: math.m4,v 1.2 2005/10/06 17:38:09 drochner Exp $
2*2e8d1edaSArun Thomasdnl FreeBSD: /repoman/r/ncvs/src/usr.bin/m4/TEST/math.m4,v 1.1 2004/05/01 03:27:05 smkelly Exp
3*2e8d1edaSArun Thomasdnl A regression test for m4 C operators		(ksb,petef)
4*2e8d1edaSArun Thomasdnl If you think you have a short-circuiting m4, run us m4 -DSHORCIRCUIT=yes
5*2e8d1edaSArun Thomasdnl
6*2e8d1edaSArun Thomasdnl first level of precedence
7*2e8d1edaSArun Thomasifelse(eval(-7),-7,,`failed -
8*2e8d1edaSArun Thomas')dnl
9*2e8d1edaSArun Thomasifelse(eval(- -2),2,,`failed -
10*2e8d1edaSArun Thomas')dnl
11*2e8d1edaSArun Thomasifelse(eval(!0),1,,`failed !
12*2e8d1edaSArun Thomas')dnl
13*2e8d1edaSArun Thomasifelse(eval(!7),0,,`failed !
14*2e8d1edaSArun Thomas')dnl
15*2e8d1edaSArun Thomasifelse(eval(~-1),0,,`failed ~
16*2e8d1edaSArun Thomas')dnl
17*2e8d1edaSArun Thomasdnl next level of precedence
18*2e8d1edaSArun Thomasifelse(eval(3*5),15,,`failed *
19*2e8d1edaSArun Thomas')dnl
20*2e8d1edaSArun Thomasifelse(eval(3*0),0,,`failed *
21*2e8d1edaSArun Thomas')dnl
22*2e8d1edaSArun Thomasifelse(eval(11/2),5,,`failed /
23*2e8d1edaSArun Thomas')dnl
24*2e8d1edaSArun Thomasifelse(eval(1/700),0,,`failed /
25*2e8d1edaSArun Thomas')dnl
26*2e8d1edaSArun Thomasifelse(eval(10%5),0,,`failed %
27*2e8d1edaSArun Thomas')dnl
28*2e8d1edaSArun Thomasifelse(eval(2%5),2,,`failed %
29*2e8d1edaSArun Thomas')dnl
30*2e8d1edaSArun Thomasifelse(eval(2%-1),0,,`failed %
31*2e8d1edaSArun Thomas')dnl
32*2e8d1edaSArun Thomasdnl next level of precedence
33*2e8d1edaSArun Thomasifelse(eval(2+2),4,,`failed +
34*2e8d1edaSArun Thomas')dnl
35*2e8d1edaSArun Thomasifelse(eval(2+-2),0,,`failed +
36*2e8d1edaSArun Thomas')dnl
37*2e8d1edaSArun Thomasifelse(eval(2- -2),4,,`failed -
38*2e8d1edaSArun Thomas')dnl
39*2e8d1edaSArun Thomasifelse(eval(2-2),0,,`failed -
40*2e8d1edaSArun Thomas')dnl
41*2e8d1edaSArun Thomasdnl next level of precedence
42*2e8d1edaSArun Thomasifelse(eval(1<<4),16,,`failed <<
43*2e8d1edaSArun Thomas')dnl
44*2e8d1edaSArun Thomasifelse(eval(16>>4),1,,`failed >>
45*2e8d1edaSArun Thomas')dnl
46*2e8d1edaSArun Thomasdnl next level of precedence
47*2e8d1edaSArun Thomasifelse(eval(4<4),0,,`failed <
48*2e8d1edaSArun Thomas')dnl
49*2e8d1edaSArun Thomasifelse(eval(4<5),1,,`failed <
50*2e8d1edaSArun Thomas')dnl
51*2e8d1edaSArun Thomasifelse(eval(4<3),0,,`failed <
52*2e8d1edaSArun Thomas')dnl
53*2e8d1edaSArun Thomasifelse(eval(4>4),0,,`failed >
54*2e8d1edaSArun Thomas')dnl
55*2e8d1edaSArun Thomasifelse(eval(4>5),0,,`failed >
56*2e8d1edaSArun Thomas')dnl
57*2e8d1edaSArun Thomasifelse(eval(4>3),1,,`failed >
58*2e8d1edaSArun Thomas')dnl
59*2e8d1edaSArun Thomasifelse(eval(4<=4),1,,`failed <=
60*2e8d1edaSArun Thomas')dnl
61*2e8d1edaSArun Thomasifelse(eval(4<=5),1,,`failed <=
62*2e8d1edaSArun Thomas')dnl
63*2e8d1edaSArun Thomasifelse(eval(4<=3),0,,`failed <=
64*2e8d1edaSArun Thomas')dnl
65*2e8d1edaSArun Thomasifelse(eval(4>=4),1,,`failed >=
66*2e8d1edaSArun Thomas')dnl
67*2e8d1edaSArun Thomasifelse(eval(4>=5),0,,`failed >=
68*2e8d1edaSArun Thomas')dnl
69*2e8d1edaSArun Thomasifelse(eval(4>=3),1,,`failed >=
70*2e8d1edaSArun Thomas')dnl
71*2e8d1edaSArun Thomasdnl next level of precedence
72*2e8d1edaSArun Thomasifelse(eval(1==1),1,,`failed ==
73*2e8d1edaSArun Thomas')dnl
74*2e8d1edaSArun Thomasifelse(eval(1==-1),0,,`failed ==
75*2e8d1edaSArun Thomas')dnl
76*2e8d1edaSArun Thomasifelse(eval(1!=1),0,,`failed !=
77*2e8d1edaSArun Thomas')dnl
78*2e8d1edaSArun Thomasifelse(eval(1!=2),1,,`failed !=
79*2e8d1edaSArun Thomas')dnl
80*2e8d1edaSArun Thomasdnl next level of precedence
81*2e8d1edaSArun Thomasifelse(eval(3&5),1,,`failed &
82*2e8d1edaSArun Thomas')dnl
83*2e8d1edaSArun Thomasifelse(eval(8&7),0,,`failed &
84*2e8d1edaSArun Thomas')dnl
85*2e8d1edaSArun Thomasdnl next level of precedence
86*2e8d1edaSArun Thomasifelse(eval(1^1),0,,`failed ^
87*2e8d1edaSArun Thomas')dnl
88*2e8d1edaSArun Thomasifelse(eval(21^5),16,,`failed ^
89*2e8d1edaSArun Thomas')dnl
90*2e8d1edaSArun Thomasdnl next level of precedence
91*2e8d1edaSArun Thomasifelse(eval(1|1),1,,`failed |
92*2e8d1edaSArun Thomas')dnl
93*2e8d1edaSArun Thomasifelse(eval(21|5),21,,`failed |
94*2e8d1edaSArun Thomas')dnl
95*2e8d1edaSArun Thomasifelse(eval(100|1),101,,`failed |
96*2e8d1edaSArun Thomas')dnl
97*2e8d1edaSArun Thomasdnl next level of precedence
98*2e8d1edaSArun Thomasifelse(eval(1&&1),1,,`failed &&
99*2e8d1edaSArun Thomas')dnl
100*2e8d1edaSArun Thomasifelse(eval(0&&1),0,,`failed &&
101*2e8d1edaSArun Thomas')dnl
102*2e8d1edaSArun Thomasifelse(eval(1&&0),0,,`failed &&
103*2e8d1edaSArun Thomas')dnl
104*2e8d1edaSArun Thomasifelse(SHORTCIRCUIT,`yes',`ifelse(eval(0&&10/0),0,,`failed && shortcircuit
105*2e8d1edaSArun Thomas')')dnl
106*2e8d1edaSArun Thomasdnl next level of precedence
107*2e8d1edaSArun Thomasifelse(eval(1||1),1,,`failed ||
108*2e8d1edaSArun Thomas')dnl
109*2e8d1edaSArun Thomasifelse(eval(1||0),1,,`failed ||
110*2e8d1edaSArun Thomas')dnl
111*2e8d1edaSArun Thomasifelse(eval(0||0),0,,`failed ||
112*2e8d1edaSArun Thomas')dnl
113*2e8d1edaSArun Thomasifelse(SHORTCIRCUIT,`yes',`ifelse(eval(1||10/0),1,,`failed || shortcircuit
114*2e8d1edaSArun Thomas')')dnl
115*2e8d1edaSArun Thomasdnl next level of precedence
116*2e8d1edaSArun Thomasifelse(eval(0 ? 2 : 5),5,,`failed ?:
117*2e8d1edaSArun Thomas')dnl
118*2e8d1edaSArun Thomasifelse(eval(1 ? 2 : 5),2,,`failed ?:
119*2e8d1edaSArun Thomas')dnl
120*2e8d1edaSArun Thomasifelse(SHORTCIRCUIT,`yes',`ifelse(eval(0 ? 10/0 : 7),7,,`failed ?: shortcircuit
121*2e8d1edaSArun Thomas')')dnl
122*2e8d1edaSArun Thomasifelse(SHORTCIRCUIT,`yes',`ifelse(eval(1 ? 7 : 10/0),7,,`failed ?: shortcircuit
123*2e8d1edaSArun Thomas')')dnl
124*2e8d1edaSArun Thomasdnl operator precedence
125*2e8d1edaSArun Thomasifelse(eval(!0*-2),-2,,`precedence wrong, ! *
126*2e8d1edaSArun Thomas')dnl
127*2e8d1edaSArun Thomasifelse(eval(~8/~2),3,,`precedence wrong ~ /
128*2e8d1edaSArun Thomas')dnl
129*2e8d1edaSArun Thomasifelse(eval(~-20%7),5,,`precedence wrong ~ %
130*2e8d1edaSArun Thomas')dnl
131*2e8d1edaSArun Thomasifelse(eval(3*2+100),106,,`precedence wrong * +
132*2e8d1edaSArun Thomas')dnl
133*2e8d1edaSArun Thomasifelse(eval(3+2*100),203,,`precedence wrong + *
134*2e8d1edaSArun Thomas')dnl
135*2e8d1edaSArun Thomasifelse(eval(2%5-6/3),0,,`precedence wrong % -
136*2e8d1edaSArun Thomas')dnl
137*2e8d1edaSArun Thomasifelse(eval(2/5-5%3),-2,,`precedence wrong / -
138*2e8d1edaSArun Thomas')dnl
139*2e8d1edaSArun Thomasifelse(eval(2+5%5+1),3,,`precedence wrong % +
140*2e8d1edaSArun Thomas')dnl
141*2e8d1edaSArun Thomasifelse(eval(7+9<<1),32,,`precedence wrong + <<
142*2e8d1edaSArun Thomas')dnl
143*2e8d1edaSArun Thomasifelse(eval(35-3>>2),8,,`precedence wrong - >>
144*2e8d1edaSArun Thomas')dnl
145*2e8d1edaSArun Thomasifelse(eval(9<10<<5),1,,`precedence wrong << <
146*2e8d1edaSArun Thomas')dnl
147*2e8d1edaSArun Thomasifelse(eval(9>10<<5),0,,`precedence wrong << >
148*2e8d1edaSArun Thomas')dnl
149*2e8d1edaSArun Thomasifelse(eval(32>>2<32),1,,`precedence wrong >> <
150*2e8d1edaSArun Thomas')dnl
151*2e8d1edaSArun Thomasifelse(eval(9<=10<<5),1,,`precedence wrong << <
152*2e8d1edaSArun Thomas')dnl
153*2e8d1edaSArun Thomasifelse(eval(5<<1<=20>>1),1,,`precedence wrong << <=
154*2e8d1edaSArun Thomas')dnl
155*2e8d1edaSArun Thomasifelse(eval(5<<1>=20>>1),1,,`precedence wrong << >=
156*2e8d1edaSArun Thomas')dnl
157*2e8d1edaSArun Thomasifelse(eval(0<7==5>=5),1,,`precedence wrong < ==
158*2e8d1edaSArun Thomas')dnl
159*2e8d1edaSArun Thomasifelse(eval(0<7!=5>=5),0,,`precedence wrong < !=
160*2e8d1edaSArun Thomas')dnl
161*2e8d1edaSArun Thomasifelse(eval(0>7==5>=5),0,,`precedence wrong > ==
162*2e8d1edaSArun Thomas')dnl
163*2e8d1edaSArun Thomasifelse(eval(0>7!=5>=5),1,,`precedence wrong > !=
164*2e8d1edaSArun Thomas')dnl
165*2e8d1edaSArun Thomasifelse(eval(1&7==7),1,,`precedence wrong & ==
166*2e8d1edaSArun Thomas')dnl
167*2e8d1edaSArun Thomasifelse(eval(0&7!=6),0,,`precedence wrong & !=
168*2e8d1edaSArun Thomas')dnl
169*2e8d1edaSArun Thomasifelse(eval(9&1|5),5,,`precedence wrong & |
170*2e8d1edaSArun Thomas')dnl
171*2e8d1edaSArun Thomasifelse(eval(9&1^5),4,,`precedence wrong & ^
172*2e8d1edaSArun Thomas')dnl
173*2e8d1edaSArun Thomasifelse(eval(9^1|5),13,,`precedence wrong ^ |
174*2e8d1edaSArun Thomas')dnl
175*2e8d1edaSArun Thomasifelse(eval(5|0&&1),1,,`precedence wrong | &&
176*2e8d1edaSArun Thomas')dnl
177*2e8d1edaSArun Thomasifelse(eval(5&&0||0&&5||5),1,,`precedence wrong && ||
178*2e8d1edaSArun Thomas')dnl
179*2e8d1edaSArun Thomasifelse(eval(0 || 1 ? 0 : 1),0,,`precedence wrong || ?:
180*2e8d1edaSArun Thomas')dnl
181*2e8d1edaSArun Thomasifelse(eval(5&&(0||0)&&(5||5)),0,,`precedence wrong || parens
182*2e8d1edaSArun Thomas')dnl
183