Pristine Ack-5.5
[Ack-5.5.git] / lang / cem / ctest / ctest1 / test.c
1 /*
2  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3  * See the copyright notice in the ACK home directory, in the file "Copyright".
4  *
5  */
6
7 char rcs_id[] = "$Id: test.c,v 2.4 1994/06/24 12:08:15 ceriel Exp $" ;
8
9 /* C-compiler test 1 */
10 /* This program can be used to test C-compilers */
11
12 #ifndef NOFLOAT
13 # define EPSD 1e-6
14 # define EPSF 1e-6
15 #endif
16
17 /* global counters */
18
19 int t,          /* the value indicates the number of the test procedure */
20     ect,        /* error counter */
21     tct;        /* count the number of test procedures called */
22
23 /****************************************************************************/
24 /*
25  * The following is tested:
26  * INTEGER CONSTANTS in test1
27  * GLOBAL INTEGER VARIABLES in test2
28  * LOCAL INTEGER VARIABLES in test3
29  * GLOBAL LONG VARIABLES in test4
30  * LOCAL LONG VARIABLES in test5
31  * REAL ARITHMETIC in test6
32  * GLOBAL RECORDS in test7
33  * LOCAL RECORDS in test8
34  * GLOBAL ARRAYS in test9
35  * LOCAL ARRAYS in test10
36  * GLOBAL POINTERS in test11
37  */
38 /***************************************************************************/
39 char alstr[1000] ;
40 char *alptr = alstr ;
41
42 char *alloc(size) {
43         register char *retval ;
44
45         retval=alptr ;
46         alptr += size ;
47         if ( alptr-alstr>sizeof alstr ) {
48                 printf("allocation overflow\n") ;
49                 exit(8) ;
50         }
51         return(retval) ;
52 }
53
54 #ifndef NOFLOAT
55 double fabs(a) double a ; { return( a<0 ? -a : a) ; }
56 #endif
57
58
59
60 /* global variables for the test procedures */
61
62 int i,j,k,l,m;
63
64 long li,lj,lk,ll,lm;
65
66 #ifndef NOFLOAT
67 float xf, yf, zf;
68
69 double xd, yd, zd;
70 #endif
71
72 struct tp2 {
73     char c1;
74     int i,j;
75 #ifndef NOFLOAT
76     float aaa;
77     double bbb;
78 #endif
79 } r1, r2;
80
81 int p, *p1, *p11, **p2, ***p3, ****p4, *****p5;
82
83 struct tp2 *pp1, *pp2, *pp3;
84 int a1[20];
85 #ifndef NOFLOAT
86 float a2[20];
87 double a3[20];
88 #endif
89
90 main()
91 {
92     tct = 0;
93     ect = 0;
94     test1();
95     test2();
96     test3();
97     test4();
98     test5();
99     test6();
100     test7();
101     test8();
102     test9();
103     test10();
104 #ifndef NOFLOAT
105     test11();
106 #endif
107     printf("End of test program, %d tests completed, %d errors detected\n",
108         tct,ect);
109         return 0 ;
110 }
111
112
113
114 e(n)
115 int n;
116 {
117     ect++;
118     printf("Error %d in test%d \n",n,t);
119 }
120
121
122
123 test1()         /* testing integer constants */
124 {
125     t = 1;
126     tct++;
127     if (0) e(1);
128     if (!1) e(2);
129     if ( 1+2 != 3 ) e(3);
130     if (-500 - 234 != -734) e(4);
131     if (-32 + 155 != 123) e(5);
132     if ( 2*3 != 6) e(6);
133     if ( 3*4*5*6 != 360) e(7);
134     if ( 654-3*2 != 648) e(8);
135     if (5*5 + 5*5 != 50) e(9);
136     if ( 1+1-1+1-1+1-1+1-1+1 != 2) e(10);
137 /**********************************************************************/
138     if ( ((((((((((((((((((((0)))))))))))))))))))) ) e(11);
139     if ( (((-2))) - ((((-3)))) * (3+((2))) != 13 ) e(12);
140     if ( 1+1 != 2 ) e(13);
141     if ( 3333 + 258 != 3591) e(14);
142     if (3*4 != 12) e(15);
143     if (111*111 != 12321) e(16);
144     if (50 / 5 != 10) e(17);
145     if (7498 / 75 != 99) e(18);
146     if (456 - 345 != 111) e(19);
147     if (1+(-2) != -1) e(20);
148     if (-3 * -4 != 12) e(21);
149     if (-2 / 2 != -1) e(22);
150     if (-5 / 1 != -5) e(23);
151     if (-4 - -5 != 1) e(24);
152     if ( 03 + 02 != 05) e(25);
153     if ( 03456 + 88 != 03606 ) e(26);
154     if ( 0100 * 23 != 02700 ) e(27);
155     if ( 045 / 020 != 2 ) e(28);
156     if ( 0472 - 0377 != 073 ) e(29);
157     if ( 'a' != 'a' ) e(30);
158     if ( 'a' + 'c' != 'b' + 'b' ) e(31);
159     if ( 'z' * 'z' != 14884 ) e(32);
160     if ( -'z' / 01 != -'z' ) e(33);
161     if ( 077777 >> 3 != 07777 ) e(34);
162     if ( 077777 >> 15 ) e(35);
163     if ( ( 0124 & 07765 ) != 0124 ) e(37);
164     if ( ( 34 & 31 ) != 2 ) e(38);
165     if (( 5 | 013 | 020 ) != 31 ) e(39);
166     if ( ( -7 ^ 3 ) != -6 ) e(40);
167     if ( (07373 ^ 4632 ) != 016343 ) e(41);
168     if ( (1+2+3)*(2+3+4)*(3+5+5) / 2 != ((3*((5+3+2)*10)+51)*6)/6 ) e(42);
169     if ( (1000*2+5*7+13)/8 != 2*2*2*2*4*4 ) e(43);
170     if ( ( 1*2*3*4*5*6*7 / 5040 ) != 5040 / 7 / 6 / 5 / 4 / 3 / 2 / 1 ) e(44);
171     if ( (-(-(-(-(-(-(1))))))) != 1) e(45);
172     if ( -                 1 != -((((((((1)))))))) ) e(46);
173     if ( -1-1-1-1-1-1 != -6+3-3 ) e(47);
174     if ( 2<1 ) e(48);
175     if ( 2==3 ) e(49);
176     if ( 2 != 2 ) e(50);
177     if ( 2>3 ) e(51);
178     if ( 2+0 != 2 ) e(52);
179     if ( 2-0 != 2 ) e(53);
180     if ( 2*0 != 0 ) e(54);
181     if ( 0/1 != 0 ) e(55);
182     if ( 0*0 != 0 ) e(56);
183     if (32767 > 32767) e(57);
184     if ( -32768 > -32767 ) e(58);
185     if ( 0456 < 0400 ) e(59);
186     if ( 0456 != ( 0400 | 050 | 06 ) ) e(60);
187     if ( 2*2 + (2<<2) != 12 ) e(61);
188     if ( 0 || 0 ) e(62);
189     if ( 1 && 0 ) e(63);
190     if ( ( 123 ? 123*4 : 345 ) != 492 ) e(64);
191     if ( ( 0 ? 345 : 280 ) != 280 ) e(65);
192     if ( ( 4>>10 ) + 3 != 3 ) e(66);
193     if ( ! ( 111 || 23 && 0 ) ) e(67);
194     if ( !1 ) e(68);
195     if ( !0 == 0 ) e(69);
196     if ( !!!!!!!!!!0 ) e(70);
197     if ( 2*2*2*2 != 4*4 ) e(71);
198     if ( 0 && 0 && 0 && 0000 && 000000000000 ) e(72);
199     if ( 1 & 1 & 1 && 1 & 1 && 1 & 0 ) e(73);
200     if ( 01 + 01 + 01 != 1 + 1 + 1 ) e(74);
201     if ( 07 + 1 != 010 ) e(75);
202     if ( ('a' & 017777) != 'a' ) e(76);
203     if ( ( 3 >> 0 ) != 3 ) e(77);
204     if ( ( 3 << 0 ) != 3 ) e(78);
205     if ( ((((((((((3)))))))))) << ((((((((((((2)))))))))))) != 12 ) e(79);
206     if ( (((3 << 4)) >> 4) != 3 ) e(80);
207     if ( (2+'a')*'b' != 2*'b' + 'a'*'b' ) e(81);
208     if ( 'a' * 'a' < 0 ) e(82);
209     if ( ('a'-'a'+'a'-'a'+('a'-'a')*'h') >> 3 ) e(82);
210     if ( 'z' - 01 != 'y' + 00 ) e(83);
211     if (  'a' ^ 'a' ) e(84);
212     if ( 'h' ^ 'h' ^ 'a' ^ 'a' ) e(85);
213     if ( 0567 ^ (0500 | 060 | 7 ) ) e(86);
214     if ( 0 ^ 0 ^ 0 ^ 00 ) e(87);
215     if ( ( !0 ) ^ (!0) ) e(88);
216     if ( ( !!!40 ) ^ (!!!050) ) e(89);
217     if ( ( 6^7 ) * 345 != 345 ) e(90);
218     if ( !!!!!!!!!!!!! 'k' ) e(91);
219     if ( !!!((('k'))) ) e(92);
220     if ( -0 != 0 ) e(93) ;
221 }
222
223
224
225
226 test2()         /* testing global integer variables */
227 {
228     t = 2;
229     tct++;
230     i = 1;
231     j = 2;
232     k = 3;
233     l = 4;
234     m = 10;
235     if ( i + j  != k ) e(1);
236     if ( i + k != l ) e(2);
237     if ( j - k != -i ) e(3);
238     if ( j*(j+k) != m ) e(4);
239     if ( -m != -(k+k+l) ) e(5);
240     if ( i/i != 1 ) e(6);
241     if ( m*m / m != m ) e(7);
242     if ( 10*m != 100 ) e(8);
243     if ( m * (-10) != -100 ) e(9);
244     if ( j/k != 0 ) e(10);
245     if ( 100/k != 33 ) e(11);
246     if ( i+j*k+l+m / j+50 / k != 32 ) e(12);
247     if ( j*k*m / 6 != 10 ) e(13);
248     if ( (k>4) || (k>=4) || (k==4) ) e(14);
249     if ( (m<j) || (m<=j) || (m==j) ) e(15);
250     if ( i+j-k ) e(16);
251     if ( j<i ) e(17);
252     if ( j != j ) e(18);
253     if ( i>j ) e(19);
254     if ( (i>j ? k : k*j)  != 6 ) e(20);
255     if ( (i<j ? k : k*j)  != 3 ) e(21);
256     if ( j<<i != l ) e(22);
257     if ( j>> i != i ) e(25);
258     if ( i++ != 1 ) e(26);
259     if ( --i != 1 ) e(27);
260     if ( i-- != 1 ) e(28);
261     if ( (i+j) && (i<0) || (m-10) && (064) ) e(29);
262     if ( (i+j) && !(i>=0) || (m-10) && !(0) ) e(30);
263     i = 2;
264     j = 4;
265     k = 8;
266     l = 16;
267     m = 32;
268     if ( i != 02 ) e(31);
269     if ( j != 04 ) e(32);
270     if ( k != 010 ) e(33);
271     if ( l != 020 ) e(34);
272     if ( i & j ) e(35);
273     if ( i & j & k & l & m ) e(36);
274     if ( ! ( i & j & k & l & m | i ) ) e(37);
275     if ( ( i >> 0 ) != i ) e(38);
276     if ( (( i/i ) << 1 ) != 02 ) e(39);
277     if ( ( i | (j) | (k) | (l) | (m) ) != i+j+k+l+m ) e(40);
278     if (!(i^j) ) e(41);
279     if ( !(i^j^k^l^m) ) e(42);
280     if ( ( --i << 1 ) != 2 ) e(43);
281     if ( ( i << 01 ) != 2 ) e(44);
282     if ( i%j != i ) e(45);
283     if ( k%l != k ) e(46);
284     if (( (m/l) << i >> i ) != 2 ) e(47);
285     if ( (i = j = k = l = m) != m ) e(48);
286     if ( ( i!=j ) || ( j!=k ) || !(l==m) ) e(49);
287     if ( (i<j) || (j>i) || (k<m) ) e(50);
288     if ( (i%j) || (j%i) || (k%l) || (m%l) ) e(51);
289     if ( (i% (j<<0) + ((j<<3)>>3)%(i/i)) ) e(52);
290     if ( ! ( i++ == j++ ) ) e(53);
291     if ( i != j ) e(54);
292     if ( i++ != (j++) ) e(55);
293     i = 1;
294     j = i + 1;
295     if ( -i != -i ) e(56);
296     if ( i != --j ) e(57);
297     if ( (((((i))))) != -(-(-(-(i)))) ) e(59);
298     if ( j != 1 ) e(60);
299 }
300
301
302
303
304 test3()         /* testing local integer variables */
305 {
306     int a,b,c,d,f;
307
308     t = 3;
309     tct++;
310     a = 1;
311     b = 2;
312     c = 3;
313     d = 4;
314     f = 10;
315     if ( a + b  != c ) e(1);
316     if ( a + c != d ) e(2);
317     if ( b - c != -a ) e(3);
318     if ( b*(b+c) != f ) e(4);
319     if ( -f != -(c+c+d) ) e(5);
320     if ( a/a != 1 ) e(6);
321     if ( f*f / f != f ) e(7);
322     if ( 10*f != 100 ) e(8);
323     if ( f * (-10) != -100 ) e(9);
324     if ( b/c != 0 ) e(10);
325     if ( 100/c != 33 ) e(11);
326     if ( a+b*c+d+f / b+50 / c != 32 ) e(12);
327     if ( b*c*f / 6 != 10 ) e(13);
328     if ( (c>4) || (c>=4) || (c==4) ) e(14);
329     if ( (f<b) || (f<=b) || (f==b) ) e(15);
330     if ( a+b-c ) e(16);
331     if ( b<a ) e(17);
332     if ( b != b ) e(18);
333     if ( a>b ) e(19);
334     if ( (a>b ? c : c*b)  != 6 ) e(20);
335     if ( (a<b ? c : c*b)  != 3 ) e(21);
336     if ( b<<a != d ) e(22);
337     if ( b>> a != a ) e(25);
338     if ( a++ != 1 ) e(26);
339     if ( --a != 1 ) e(27);
340     if ( a-- != 1 ) e(28);
341     if ( (a+b) && (a<0) || (f-10) && (064) ) e(29);
342     if ( (a+b) && !(a>=0) || (f-10) && !(0) ) e(30);
343     a = 2;
344     b = 4;
345     c = 8;
346     d = 16;
347     f = 32;
348     if ( a != 02 ) e(31);
349     if ( b != 04 ) e(32);
350     if ( c != 010 ) e(33);
351     if ( d != 020 ) e(34);
352     if ( a & b ) e(35);
353     if ( a & b & c & d & f ) e(36);
354     if ( ! ( a & b & c & d & f | a ) ) e(37);
355     if ( ( a >> 0 ) != a ) e(38);
356     if ( (( a/a ) << 1 ) != 02 ) e(39);
357     if ( ( a | (b) | (c) | (d) | (f) ) != a+b+c+d+f ) e(40);
358     if (!(a^b) ) e(41);
359     if ( !(a^b^c^d^f) ) e(42);
360     if ( ( --a << 1 ) != 2 ) e(43);
361     if ( ( a << 01 ) != 2 ) e(44);
362     if ( a%b != a ) e(45);
363     if ( c%d != c ) e(46);
364     if (( (f/d) << a >> a ) != 2 ) e(47);
365     if ( (a = b = c = d = f) != f ) e(48);
366     if ( ( a!=b ) || ( b!=c ) || !(d==f) ) e(49);
367     if ( (a<b) || (b>a) || (c<f) ) e(50);
368     if ( (a%b) || (b%a) || (c%d) || (f%d) ) e(51);
369     if ( (a%(b<<0)  + ((b<<3)>>3)%(a/a)) ) e(52);
370     if ( ! ( a++ == b++ ) ) e(53);
371     if ( a != b ) e(54);
372     if ( a++ != (b++) ) e(55);
373     a = 1;
374     b = a + 1;
375     if ( -a != -a ) e(56);
376     if ( a != --b ) e(57);
377     if ( (((((a))))) != -(-(-(-(a)))) ) e(59);
378     if ( b != 1 ) e(60);
379 }
380
381
382
383
384 test4()         /* testing global long variables */
385 {
386     t = 4;
387     tct++;
388     li = 1;
389     lj = 2;
390     lk = 3;
391     ll = 4;
392     lm = 10;
393     if ( li + lj  != lk ) e(1);
394     if ( li + lk != ll ) e(2);
395     if ( lj - lk != -li ) e(3);
396     if ( lj*(lj+lk) != lm ) e(4);
397     if ( -lm != -(lk+lk+ll) ) e(5);
398     if ( li/li != 1 ) e(6);
399     if ( lm*lm / lm != lm ) e(7);
400     if ( 10*lm != 100 ) e(8);
401     if ( lm * (-10) != -100 ) e(9);
402     if ( lj/lk != 0 ) e(10);
403     if ( 100/lk != 33 ) e(11);
404     if ( li+lj*lk+ll+lm / lj+50 / lk != 32 ) e(12);
405     if ( lj*lk*lm / 6 != 10 ) e(13);
406     if ( (lk>4) || (lk>=4) || (lk==4) ) e(14);
407     if ( (lm<lj) || (lm<=lj) || (lm==lj) ) e(15);
408     if ( li+lj-lk ) e(16);
409     if ( lj<li ) e(17);
410     if ( lj != lj ) e(18);
411     if ( li>lj ) e(19);
412     if ( (li>lj ? lk : lk*lj)  != 6 ) e(20);
413     if ( (li<lj ? lk : lk*lj)  != 3 ) e(21);
414     if ( lj<<li != ll ) e(22);
415     if ( lj>> li != li ) e(25);
416     if ( li++ != 1 ) e(26);
417     if ( --li != 1 ) e(27);
418     if ( li-- != 1 ) e(28);
419     if ( (li+lj) && (li<0) || (lm-10) && (064) ) e(29);
420     if ( (li+lj) && !(li>=0) || (lm-10) && !(0) ) e(30);
421     li = 2;
422     lj = 4;
423     lk = 8;
424     ll = 16;
425     lm = 32;
426     if ( li != 02 ) e(31);
427     if ( lj != 04 ) e(32);
428     if ( lk != 010 ) e(33);
429     if ( ll != 020 ) e(34);
430     if ( li & lj ) e(35);
431     if ( li & lj & lk & ll & lm ) e(36);
432     if ( ! ( li & lj & lk & ll & lm | li ) ) e(37);
433     if ( ( li >> 0 ) != li ) e(38);
434     if ( (( li/li ) << 1 ) != 02 ) e(39);
435     if ( ( li | (lj) | (lk) | (ll) | (lm) ) != li+lj+lk+ll+lm ) e(40);
436     if (!(li^lj) ) e(41);
437     if ( !(li^lj^lk^ll^lm) ) e(42);
438     if ( ( --li << 1 ) != 2 ) e(43);
439     if ( ( li << 01 ) != 2 ) e(44);
440     if ( li%lj != li ) e(45);
441     if ( lk%ll != lk ) e(46);
442     if (( (lm/ll) << li >> li ) != 2 ) e(47);
443     if ( (li = lj = lk = ll = lm) != lm ) e(48);
444     if ( ( li!=lj ) || ( lj!=lk ) || !(ll==lm) ) e(49);
445     if ( (li<lj) || (lj>li) || (lk<lm) ) e(50);
446     if ( (li%lj) || (lj%li) || (lk%ll) || (lm%ll) ) e(51);
447     if ( (li%(lj<<0)  + ((lj<<3)>>3)%(li/li)) ) e(52);
448     if ( ! ( li++ == lj++ ) ) e(53);
449     if ( li != lj ) e(54);
450     if ( li++ != (lj++) ) e(55);
451     li = 1;
452     lj = li + 1;
453     if ( -li != -li ) e(56);
454     if ( li != --lj ) e(57);
455     if ( (((((li))))) != -(-(-(-(li)))) ) e(59);
456     if ( lj != 1 ) e(60);
457     li = 40000;
458     lj = 80000;
459     lk = 800000L;
460     ll = -800000L;
461     lm = 1200000L;
462     if ( lk != -ll ) e(61);
463     if ( 10 * li != 400000L ) e(62);
464     if ( 2 * li != lj ) e(63);
465     if ( -(-(-(-(li)))) != li ) e(64);
466     if ( 10 * lj != lk ) e(65);
467     if ( lm + lm != 2 * lm ) e(66);
468     if ( lm - lm ) e(67);
469     if ( lk / lk != 1 ) e(68);
470     if ( lk / lj != 10 ) e(69);
471     if ( lm / li != 30 ) e(70);
472     if ( li + lj != lm / 10 ) e(71);
473     if ( li - 40000 - 1 != lk - 800001L ) e(72);
474     if ( li + li + li + li +li + li != lj + lj + lj ) e(73);
475     if ( li > lj ) e(74);
476     if ( lj > lk ) e(75);
477     if ( lm < ll ) e(76);
478     if ( (lm<1000000L) || (((lk-lj-lj*10)>0)) ) e(77);
479     if ( lm / 01 != lm ) e(78);
480     if ( lm * 01 != lm ) e(79);
481     if ( lm + 'a' != lm + 'b' -1 ) e(80);
482     if ( (lm % 'a') % 'a' != lm % 'a' ) e(81);
483     if ( lm % lm ) e(82);
484     if ( lj % li ) e(83);
485     if ( (lm<<1) != lm * 2 ) e(84);
486     if ( ! ( ( --lm % li ) + 1 ) ) e(86);
487     if ( ( lj >> 1 ) ^ li ) e(87);
488     li = 1;
489     if ( li != 1 ) e(89);
490     li <<= 20;
491     lj = 2;
492     if ( (lj<<19) != li ) e(90);
493     li = lj = lk= ll = lm = -345678L;
494     if ( (li != lj) || (lj != lk) || (ll != lm) ) e(91);
495     if ( (li != lj) || (lj != lk) || (lk != ll) || (ll != lm) ) e(92);
496     if ( li != -345678L ) e(93);
497     li = 1 | 2;
498     li <<= 20;
499     lj = li & li & li & li & li | li | li | li;
500     if ( li != lj ) e(94);
501     if ( ! ( li & lj ) ) e(95);
502     if ( li ^ lj ) e(96);
503     if ( ! (li | lj) ) e(97);
504     if ( (li >> 20) != 3 ) e(98);
505     li = 20000;
506     li *= 2;
507     if ( li < 0 ) e(99);
508     if ( 1 * li != li ) e(100);
509     lj = 20000;
510     if ( (lj<<1) != li ) e(101);
511     if ( (5*lj)/10 != lj/2 ) e(102);
512     if ( 4*lj != 1*01*2*2*lj ) e(103);
513     li = lj = 30000;
514     if ( li != li * lj / 30000 ) e(104);
515     if ( ++li != ++lj ) e(105);
516     lk = 5;
517     ll = 150000L;
518     if ( lk * (li-1) != ll ) e(106);
519 }
520
521
522
523
524 test5()         /* testing local long variables */
525 {
526     long la, lb, lc, ld, lf;
527
528     t = 5;
529     tct++;
530     la = 1;
531     lb = 2;
532     lc = 3;
533     ld = 4;
534     lf = 10;
535     if ( la + lb  != lc ) e(1);
536     if ( la + lc != ld ) e(2);
537     if ( lb - lc != -la ) e(3);
538     if ( lb*(lb+lc) != lf ) e(4);
539     if ( -lf != -(lc+lc+ld) ) e(5);
540     if ( la/la != 1 ) e(6);
541     if ( lf*lf / lf != lf ) e(7);
542     if ( 10*lf != 100 ) e(8);
543     if ( lf * (-10) != -100 ) e(9);
544     if ( lb/lc != 0 ) e(10);
545     if ( 100/lc != 33 ) e(11);
546     if ( la+lb*lc+ld+lf / lb+50 / lc != 32 ) e(12);
547     if ( lb*lc*lf / 6 != 10 ) e(13);
548     if ( (lc>4) || (lc>=4) || (lc==4) ) e(14);
549     if ( (lf<lb) || (lf<=lb) || (lf==lb) ) e(15);
550     if ( la+lb-lc ) e(16);
551     if ( lb<la ) e(17);
552     if ( lb != lb ) e(18);
553     if ( la>lb ) e(19);
554     if ( (la>lb ? lc : lc*lb)  != 6 ) e(20);
555     if ( (la<lb ? lc : lc*lb)  != 3 ) e(21);
556     if ( lb<<la != ld ) e(22);
557     if ( lb>> la != la ) e(25);
558     if ( la++ != 1 ) e(26);
559     if ( --la != 1 ) e(27);
560     if ( la-- != 1 ) e(28);
561     if ( (la+lb) && (la<0) || (lf-10) && (064) ) e(29);
562     if ( (la+lb) && !(la>=0) || (lf-10) && !(0) ) e(30);
563     la = 2;
564     lb = 4;
565     lc = 8;
566     ld = 16;
567     lf = 32;
568     if ( la != 02 ) e(31);
569     if ( lb != 04 ) e(32);
570     if ( lc != 010 ) e(33);
571     if ( ld != 020 ) e(34);
572     if ( la & lb ) e(35);
573     if ( la & lb & lc & ld & lf ) e(36);
574     if ( ! ( la & lb & lc & ld & lf | la ) ) e(37);
575     if ( ( la >> 0 ) != la ) e(38);
576     if ( (( la/la ) << 1 ) != 02 ) e(39);
577     if ( ( la | (lb) | (lc) | (ld) | (lf) ) != la+lb+lc+ld+lf ) e(40);
578     if (!(la^lb) ) e(41);
579     if ( !(la^lb^lc^ld^lf) ) e(42);
580     if ( ( --la << 1 ) != 2 ) e(43);
581     if ( ( la << 01 ) != 2 ) e(44);
582     if ( la%lb != la ) e(45);
583     if ( lc%ld != lc ) e(46);
584     if (( (lf/ld) << la >> la ) != 2 ) e(47);
585     if ( (la = lb = lc = ld = lf) != lf ) e(48);
586     if ( ( la!=lb ) || ( lb!=lc ) || !(ld==lf) ) e(49);
587     if ( (la<lb) || (lb>la) || (lc<lf) ) e(50);
588     if ( (la%lb) || (lb%la) || (lc%ld) || (lf%ld) ) e(51);
589     if ( (la%(lb<<0)  + ((lb<<3)>>3)%(la/la)) ) e(52);
590     if ( ! ( la++ == lb++ ) ) e(53);
591     if ( la != lb ) e(54);
592     if ( la++ != (lb++) ) e(55);
593     la = 1;
594     lb = la + 1;
595     if ( -la != -la ) e(56);
596     if ( la != --lb ) e(57);
597     if ( (((((la))))) != -(-(-(-(la)))) ) e(59);
598     if ( lb != 1 ) e(60);
599     la = 40000;
600     lb = 80000;
601     lc = 800000L;
602     ld = -800000L;
603     lf = 1200000L;
604     if ( lc != -ld ) e(61);
605     if ( 10 * la != 400000L ) e(62);
606     if ( 2 * la != lb ) e(63);
607     if ( -(-(-(-(la)))) != la ) e(64);
608     if ( 10 * lb != lc ) e(65);
609     if ( lf + lf != 2 * lf ) e(66);
610     if ( lf - lf ) e(67);
611     if ( lc / lc != 1 ) e(68);
612     if ( lc / lb != 10 ) e(69);
613     if ( lf / la != 30 ) e(70);
614     if ( la + lb != lf / 10 ) e(71);
615     if ( la - 40000 - 1 != lc - 800001L ) e(72);
616     if ( la + la + la + la +la + la != lb + lb + lb ) e(73);
617     if ( la > lb ) e(74);
618     if ( lb > lc ) e(75);
619     if ( lf < ld ) e(76);
620     if ( (lf<1000000L) || (((lc-lb-lb*10)>0)) ) e(77);
621     if ( lf / 01 != lf ) e(78);
622     if ( lf * 01 != lf ) e(79);
623     if ( lf + 'a' != lf + 'b' -1 ) e(80);
624     if ( (lf % 'a') % 'a' != lf % 'a' ) e(81);
625     if ( lf % lf ) e(82);
626     if ( lb % la ) e(83);
627     if ( (lf<<1) != lf * 2 ) e(84);
628     if ( ! ( ( --lf % la ) + 1 ) ) e(86);
629     if ( ( lb >> 1 ) ^ la ) e(87);
630     la = 1;
631     if ( la != 1 ) e(89);
632     la <<= 20;
633     lb = 2;
634     if ( (lb<<19) != la ) e(90);
635     la = lb = lc= ld = lf = -345678L;
636     if ( (la != lb) || (lb != lc) || (ld != lf) ) e(91);
637     if ( (la != lb) || (lb != lc) || (lc != ld) || (ld != lf) ) e(92);
638     if ( la != -345678L ) e(93);
639     la = 1 | 2;
640     la <<= 20;
641     lb = la & la & la & la & la | la | la | la;
642     if ( la != lb ) e(94);
643     if ( ! ( la & lb ) ) e(95);
644     if ( la ^ lb ) e(96);
645     if ( ! (la | lb) ) e(97);
646     if ( (la >> 20) != 3 ) e(98);
647     la = 20000;
648     la *= 2;
649     if ( la < 0 ) e(99);
650     if ( 1 * la != la ) e(100);
651     lb = 20000;
652     if ( (lb<<1) != la ) e(101);
653     if ( (5*lb)/10 != lb/2 ) e(102);
654     if ( 4*lb != 1*01*2*2*lb ) e(103);
655     la = lb = 30000;
656     if ( la != la * lb / 30000 ) e(104);
657     if ( ++la != ++lb ) e(105);
658     lc = 5;
659     ld = 150000L;
660     if ( lc * (la-1) != ld ) e(106);
661 }
662
663
664
665 test6()         /* global records */
666 {
667 #ifndef NOFLOAT
668     double epsd;
669     float epsf;
670     double fabs();
671 #endif
672
673     t = 6;
674     tct++;
675 #ifndef NOFLOAT
676     epsd = EPSD;
677     epsf = EPSF;
678 #endif
679     r1.c1 = 'x';
680     r1.i = 40;
681     r1.j = 50;
682 #ifndef NOFLOAT
683     r1.aaa = 3.0;
684     r1.bbb = 4.0;
685 #endif
686     r2.c1 = r1.c1;
687     r2.i = 50;
688     r2.j = 40;
689 #ifndef NOFLOAT
690     r2.aaa = 4.0;
691     r2.bbb = 5.0;
692 #endif
693     if ( r1.c1 != 'x' || r1.i != 40 ) e(1);
694 #ifndef NOFLOAT
695     if ( r1.aaa != 3.0 ) e(1);
696 #endif
697     if ( r1.i != 40 || r2.i != 50 ) e(2);
698     if ( r2.j != 40 || r1.j != 50 ) e(3);
699     if ( (r1.c1 + r2.c1)/2 != 'x' ) e(4);
700 #ifndef NOFLOAT
701     if ( r1.aaa * r1.aaa + r2.aaa * r2.aaa != r2.bbb * r2.bbb ) e(5);
702     r1.i = r1.j = r2.i = r2.j = 3.0;
703 #else
704     r1.i = r1.j = r2.i = r2.j = 3;
705 #endif
706     if ( r1.i != 3 ) e(6);
707     if ( r1.i * r2.j - 9 ) e(7);
708     r1.i++;
709     if ( r1.i != 4 ) e(8);
710     if ( --r1.i != 3 ) e(9);
711     if ( (++r2.i) * (--r2.j) != 8 ) e(10);
712     if ( (r2.i = r2.j = r1.j = r1.i = -5 ) != -5 ) e(11);
713     if ( r2.i * r1.j / 25 != 1 ) e(12);
714     r1.c1 = '\0';
715     if ( r1.i * r1.j * r2.i * r1.c1 * r2.j ) e(13);
716     r2.c1 = 'j';
717     if ( r1.c1 + r2.c1 != 'j' ) e(14);
718     if ( r1.c1 * r2.c1 ) e(15);
719      r2.j = r1.i = r2.i = r1.j = 1;
720     if ( (r1.i<<0) != r1.j ) e(16);
721     if ( (r1.i >> -0 ) != ( r1.j >> 0 ) ) e(17);
722     if ( (r1.i<<1) != 2 ) e(18);
723     if ( (r1.i<<2) != 4 ) e(19);
724     if ( (r1.j<<3) != (r2.j<<3) ) e(20);
725     if ( (r1.i | r1.i | r1.i | r1.i | r1.i) != r1.i ) e(21);
726     if ( (r2.j & r1.j & r2.j & r2.i) != (r1.i<<3>>3) ) e(22);
727     r1.j = 1;
728 #ifndef NOFLOAT
729     r1.aaa = 2.0;
730     if ( fabs ( r1.j * r1.aaa - 2.0 ) > epsd ) e(23);
731     if ( (r1.j << 4) * r1.aaa != (r1.j << 4) * r1.aaa ) e(24);
732     if ( ((r1.j<<6)&r1.j) * r1.aaa ) e(25);
733     if ((r1.j | (r1.j << 1)) * r1.aaa != ((r1.j << 1) ^ r1.j) * r1.aaa) e(26);
734 #endif
735     r1.i = r1.j = r2.i = r2.j = -2;
736     if ( r1.i > 0 || r1.j >= 0 ) e(27);
737     if ( r1.i != r2.j ) e(28);
738     if ( !!! ((((( r1.i == r2.j ))))) ) e(28);
739     if ( -(-(r1.j)) != r2.j ) e(29);
740     if ( r1.i % r1.j ) e(30);
741     if ( (r1.i % r1.j) % r1.i ) e(31);
742     if ( 0 % r2.j ) e(32);
743     if ( 03 * r1.i != -6 ) e(33);
744 #ifndef NOFLOAT
745     r1.aaa = r2.aaa = -4;
746     r1.bbb = r2.bbb = 4;
747     if ( r1.aaa > -3.5 ) e(34);
748     if ( fabs ( r1.aaa - r2.aaa ) > epsf ) e(35);
749 #endif
750     r1.c1 = '\03';
751 #ifndef NOFLOAT
752     if ( fabs ( r2.aaa * r1.aaa - r1.c1 * 5 - 1.0 ) > epsf ) e(36);
753 #else
754     if ( 5*r1.c1 != 15 ) e(36) ;
755 #endif
756 }
757
758
759
760
761 test7()         /* local records */
762 {
763 #ifndef NOFLOAT
764     double epsd;
765     float epsf;
766     double fabs();
767 #endif
768     struct tp2 s1, s2;
769
770     t = 7;
771     tct++;
772 #ifndef NOFLOAT
773     epsd = EPSD;
774     epsf = EPSF;
775 #endif
776     s1.c1 = 'x';
777     s1.i = 40;
778     s1.j = 50;
779 #ifndef NOFLOAT
780     s1.aaa = 3.0;
781     s1.bbb = 4.0;
782 #endif
783     s2.c1 = s1.c1;
784     s2.i = 50;
785     s2.j = 40;
786 #ifndef NOFLOAT
787     s2.aaa = 4.0;
788     s2.bbb = 5.0;
789 #endif
790     if ( s1.c1 != 'x' || s1.i != 40 ) e(1);
791 #ifndef NOFLOAT
792     if ( s1.aaa != 3.0 ) e(1);
793 #endif
794     if ( s1.i != 40 || s2.i != 50 ) e(2);
795     if ( s2.j != 40 || s1.j != 50 ) e(3);
796     if ( (s1.c1 + s2.c1)/2 != 'x' ) e(4);
797 #ifndef NOFLOAT
798     if ( s1.aaa * s1.aaa + s2.aaa * s2.aaa != s2.bbb * s2.bbb ) e(5);
799     s1.i = s1.j = s2.i = s2.j = 3.0;
800 #else
801     s1.i = s1.j = s2.i = s2.j = 3;
802 #endif
803     if ( s1.i != 3 ) e(6);
804     if ( s1.i * s2.j - 9 ) e(7);
805     s1.i++;
806     if ( s1.i != 4 ) e(8);
807     if ( --s1.i != 3 ) e(9);
808     if ( (++s2.i) * (--s2.j) != 8 ) e(10);
809     if ( (s2.i = s2.j = s1.j = s1.i = -5 ) != -5 ) e(11);
810     if ( s2.i * s1.j / 25 != 1 ) e(12);
811     s1.c1 = '\0';
812     if ( s1.i * s1.j * s2.i * s1.c1 * s2.j ) e(13);
813     s2.c1 = 'j';
814     if ( s1.c1 + s2.c1 != 'j' ) e(14);
815     if ( s1.c1 * s2.c1 ) e(15);
816      s2.j = s1.i = s2.i = s1.j = 1;
817     if ( (s1.i<<0) != s1.j ) e(16);
818     if ( (s1.i >> -0 ) != ( s1.j >> 0 ) ) e(17);
819     if ( (s1.i<<1) != 2 ) e(18);
820     if ( (s1.i<<2) != 4 ) e(19);
821     if ( (s1.j<<3) != (s2.j<<3) ) e(20);
822     if ( (s1.i | s1.i | s1.i | s1.i | s1.i) != s1.i ) e(21);
823     if ( (s2.j & s1.j & s2.j & s2.i) != (s1.i<<3>>3) ) e(22);
824     s1.j = 1;
825 #ifndef NOFLOAT
826     s1.aaa = 2.0;
827     if ( fabs ( s1.j * s1.aaa - 2.0 ) > epsd ) e(23);
828     if ( (s1.j << 4) * s1.aaa != (s1.j << 4) * s1.aaa ) e(24);
829     if ( ((s1.j<<6)&s1.j) * s1.aaa ) e(25);
830     if ((s1.j | (s1.j << 1)) * s1.aaa != ((s1.j << 1) ^ s1.j) * s1.aaa) e(26);
831 #endif
832     s1.i = s1.j = s2.i = s2.j = -2;
833     if ( s1.i > 0 || s1.j >= 0 ) e(27);
834     if ( s1.i != s2.j ) e(28);
835     if ( !!! ((((( s1.i == s2.j ))))) ) e(28);
836     if ( -(-(s1.j)) != s2.j ) e(29);
837     if ( s1.i % s1.j ) e(30);
838     if ( (s1.i % s1.j) % s1.i ) e(31);
839     if ( 0 % s2.j ) e(32);
840     if ( 03 * s1.i != -6 ) e(33);
841 #ifndef NOFLOAT
842     s1.aaa = s2.aaa = -4;
843     s1.bbb = s2.bbb = 4;
844     if ( s1.aaa > -3.5 ) e(34);
845     if ( fabs ( s1.aaa - s2.aaa ) > epsf ) e(35);
846 #endif
847     s1.c1 = '\03';
848 #ifndef NOFLOAT
849     if ( fabs ( s2.aaa * s1.aaa - s1.c1 * 5 - 1.0 ) > epsf ) e(36);
850 #else
851     if ( 5*s1.c1 != 15 ) e(36) ;
852 #endif
853 }
854
855
856
857
858 test8()         /* global arrays */
859 {
860 #ifndef NOFLOAT
861     float epsf;
862     double epsd;
863     double fabs();
864 #endif
865
866     t = 8;
867     tct++;
868 #ifndef NOFLOAT
869     epsf = EPSF;
870     epsd = EPSD;
871 #endif
872     for ( i=0; i<20 ; i++ )
873         a1[i] = i*i;
874     if ( a1[9] != 81 || a1[17] != 289 || a1[0] != 0 ) e(1);
875     if ( a1[1] + a1[2] + a1[3]  !=  14 ) e(2);
876     if ( ! a1[15] ) e(3);
877     if ( a1[8] / a1[4] != 4 ) e(4);
878 #ifndef NOFLOAT
879     for ( i=0; i<20; i++ )
880          a2[i] = 10.0e-1 + i/54.324e-1;
881     if ( fabs(a2[4]*a2[4]-a2[4]*(10.0e-1 + 4/54.324e-1 ) ) > epsf ) e(5);
882     if ( fabs(a2[8]/a2[8]*a2[9]/a2[9]-a2[10]+a2[10]-1.0 ) > epsf ) e(6);
883     if ( fabs(a2[5]-a2[4]-1/54.324e-1 ) > epsf ) e(7);
884     for ( i=0; i<20; i++)
885          a3[i]= 10.0e-1 + i/54.324e-1;
886     if ( fabs(a3[4]*a3[4]-a3[4]*(1.0e0+4/54.324e-1 )) > epsd ) e(8);
887     if ( fabs( a3[8]*a3[9]/a3[8]/a3[9]-a3[10]+a3[10]-1000e-3) > epsd ) e(9);
888     if ( fabs(a3[8]+a3[6]-2*a3[7]) > epsd ) e(10);
889 #endif
890     for ( i=0; i<20; i++ )
891         a1[i] = i+1;
892     if ( a1[a1[a1[a1[a1[a1[0]]]]]] != 6 ) e(11);
893     if ( a1[a1[0]+a1[1]+a1[2]+a1[3]] != 11 ) e(12);
894     if ( (a1[0] << 2) != 4 ) e(13);
895     if ( (a1[0] >> 2) ) e(14);
896     if ( (a1[0] << 3 >> 3) != a1[0] ) e(15);
897     if ( a1[a1[0] << 1] != 3 ) e(16);
898     if ( a1[4<<1] != 9 ) e(17);
899     if ( a1[4 << 1] != 9 ) e(18);
900     if ( (1 << a1[0]) != 2 ) e(19);
901     if ( (1 & a1[0]) != 1 ) e(20);
902     if ( a1[4]++ != 5 ) e(21);
903     if ( a1[4] != 6 ) e(22);
904     if ( --a1[4] != 5 ) e(23);
905     if ( a1[ --a1[10] ] != 10 ) e(24);
906     a1[0] = 0;
907     a1[1] = 1;
908     a1[2] = 2;
909     a1[3] = 3;
910     i = 3;
911     if ( a1[--i] != 2 ) e(25);
912     if ( a1[ a1[--i] ] != 1 ) e(26);
913     if ( a1[a1[a1[a1[a1[a1[a1[a1[3]]]]]]]] != 3 ) e(27);
914     if ( a1[1+2] != 3 ) e(28);
915     if ( a1[1+2] != a1[3/3] + 2 ) e(29);
916     if ( a1[i=2] != 2 ) e(30);
917     if ( -a1[i==3] ) e(31);
918     if ( a1[3*2 + a1[0]*6 - 10/2 -4 + 3/1] != 0 ) e(32);
919     if ( a1['a' + 'c' -2*'b'] ) e(33);
920     if ( a1[ a1[0]==a1[1] ] ) e(34);
921     if ( a1[a1[1<<1]>>1] != 1 ) e(35);
922     a1[i=j=4] = 10;
923     if ( (i!=4) || (j!=4) || (i!=j) ) e(36);
924     if ( a1[4] != 10 ) e(37);
925     if ( a1[--i] != 3 ) e(38);
926     if ( a1[i++] != 3 ) e(39);
927     if ( --a1[--i] != 2 ) e(40);
928     a1[a1[a1[a1[a1[0]=7]=5]=8]=2]=0;
929     if ( a1[0] != 7) e(41);
930     if ((a1[7] != 5) || (a1[5]!=8) || (a1[8]!=2))e(42);
931     if (a1[2]) e(43);
932     for ( i=0 ; i<20; i++)
933         a1[i] = i;
934     a1[0] = 0;
935     a1[1] = 01;
936     a1[2] = 02;
937     a1[3] = 04;
938     a1[4] = 010;
939     if ((a1[0] | a1[1] | a1[2] | a1[3] | a1[4]) != 017 ) e(44);
940     if ( a1[0]<<4 ) e(45);
941     if ( (a1[4]>>3) != 1 ) e(46);
942     a1[4] = 04;
943     a1[010] = 010;
944     if ( a1[8] != 8 ) e(47);
945     if ( a1[0|1|2|4|8] != (a1[0]|a1[1]|a1[2]|a1[4]|a1[8]) ) e(48);
946     if ( a1[a1[0]|a1[1]|a1[2]|a1[4]|a1[8]] != a1[017] ) e(49);
947     if ( a1[a1[1]^a1[2]^a1[4]^a1[8]] != a1[a1[1]|a1[2]|a1[4]|a1[8]] ) e(50);
948     for ( i = 0; i<20; i++ )
949         a1[i] = i+1;
950 #ifndef NOFLOAT
951     for ( i = 0; i<20; i++ )
952         a2[i] = a3[i] = a1[i];
953     if ( a2[5] != 6.0 ) e(51);
954     if ( a2[13] != 14.0 ) e(52);
955     if ( a2[a1[a1[a1[a1[a1[0]]]]]] != 6.0 ) e(53);
956 #endif
957     if ( a1[12] != 13 ) e(54);
958 #ifndef NOFLOAT
959     if ( a1[ a1[12] = a2[a1[11]] ] != 14 ) e(55);
960     if ( fabs( a2[13] - a2[a1[12]] ) > epsf ) e(56);
961     if ( a2[8] != a1[8] ) e(57);
962 #endif
963 }
964
965
966
967
968 test9() /* local arrays */
969 {
970 #ifndef NOFLOAT
971     float epsf;
972     double epsd;
973     double fabs();
974 #endif
975     int b1[20];
976 #ifndef NOFLOAT
977     float b2[20];
978     double b3[20];
979 #endif
980
981     t = 9;
982     tct++;
983 #ifndef NOFLOAT
984     epsf = EPSF;
985     epsd = EPSD;
986 #endif
987     for ( i=0; i<20 ; i++ )
988         b1[i] = i*i;
989     if ( b1[9] != 81 || b1[17] != 289 || b1[0] != 0 ) e(1);
990     if ( b1[1] + b1[2] + b1[3]  !=  14 ) e(2);
991     if ( ! b1[15] ) e(3);
992     if ( b1[8] / b1[4] != 4 ) e(4);
993 #ifndef NOFLOAT
994     for ( i=0; i<20; i++ )
995          b2[i] = 10.0e-1 + i/54.324e-1;
996     if ( fabs(b2[4]*b2[4]-b2[4]*(10.0e-1 + 4/54.324e-1 ) ) > epsf ) e(5);
997     if ( fabs(b2[8]/b2[8]*b2[9]/b2[9]-b2[10]+b2[10]-1.0 ) > epsf ) e(6);
998     if ( fabs(b2[5]-b2[4]-1/54.324e-1 ) > epsf ) e(7);
999     for ( i=0; i<20; i++)
1000          b3[i]= 10.0e-1 + i/54.324e-1;
1001     if ( fabs(b3[4]*b3[4]-b3[4]*(1.0e0+4/54.324e-1 )) > epsd ) e(8);
1002     if ( fabs( b3[8]*b3[9]/b3[8]/b3[9]-b3[10]+b3[10]-1000e-3) > epsd ) e(9);
1003     if ( fabs(b3[8]+b3[6]-2*b3[7]) > epsd ) e(10);
1004 #endif
1005     for ( i=0; i<20; i++ )
1006         b1[i] = i+1;
1007     if ( b1[b1[b1[b1[b1[b1[0]]]]]] != 6 ) e(11);
1008     if ( b1[b1[0]+b1[1]+b1[2]+b1[3]] != 11 ) e(12);
1009     if ( (b1[0] << 2) != 4 ) e(13);
1010     if ( (b1[0] >> 2) ) e(14);
1011     if ( (b1[0] << 3 >> 3) != b1[0] ) e(15);
1012     if ( b1[b1[0] << 1] != 3 ) e(16);
1013     if ( b1[4<<1] != 9 ) e(17);
1014     if ( b1[4 << 1] != 9 ) e(18);
1015     if ( (1 << b1[0]) != 2 ) e(19);
1016     if ( (1 & b1[0]) != 1 ) e(20);
1017     if ( b1[4]++ != 5 ) e(21);
1018     if ( b1[4] != 6 ) e(22);
1019     if ( --b1[4] != 5 ) e(23);
1020     if ( b1[ --b1[10] ] != 10 ) e(24);
1021     b1[0] = 0;
1022     b1[1] = 1;
1023     b1[2] = 2;
1024     b1[3] = 3;
1025     i = 3;
1026     if ( b1[--i] != 2 ) e(25);
1027     if ( b1[ b1[--i] ] != 1 ) e(26);
1028     if ( b1[b1[b1[b1[b1[b1[b1[b1[3]]]]]]]] != 3 ) e(27);
1029     if ( b1[1+2] != 3 ) e(28);
1030     if ( b1[1+2] != b1[3/3] + 2 ) e(29);
1031     if ( b1[i=2] != 2 ) e(30);
1032     if ( -b1[i==3] ) e(31);
1033     if ( b1[3*2 + b1[0]*6 - 10/2 -4 + 3/1] != 0 ) e(32);
1034     if ( b1['a' + 'c' -2*'b'] ) e(33);
1035     if ( b1[ b1[0]==b1[1] ] ) e(34);
1036     if ( b1[b1[1<<1]>>1] != 1 ) e(35);
1037     b1[i=j=4] = 10;
1038     if ( (i!=4) || (j!=4) || (i!=j) ) e(36);
1039     if ( b1[4] != 10 ) e(37);
1040     if ( b1[--i] != 3 ) e(38);
1041     if ( b1[i++] != 3 ) e(39);
1042     if ( --b1[--i] != 2 ) e(40);
1043     b1[b1[b1[b1[b1[0]=7]=5]=8]=2]=0;
1044     if ( b1[0] != 7) e(41);
1045     if ((b1[7] != 5) || (b1[5]!=8) || (b1[8]!=2))e(42);
1046     if (b1[2]) e(43);
1047     for ( i=0 ; i<20; i++)
1048         b1[i] = i;
1049     b1[0] = 0;
1050     b1[1] = 01;
1051     b1[2] = 02;
1052     b1[3] = 04;
1053     b1[4] = 010;
1054     if ((b1[0] | b1[1] | b1[2] | b1[3] | b1[4]) != 017 ) e(44);
1055     if ( b1[0]<<4 ) e(45);
1056     if ( (b1[4]>>3) != 1 ) e(46);
1057     b1[4] = 04;
1058     b1[010] = 010;
1059     if ( b1[8] != 8 ) e(47);
1060     if ( b1[0|1|2|4|8] != (b1[0]|b1[1]|b1[2]|b1[4]|b1[8]) ) e(48);
1061     if ( b1[b1[0]|b1[1]|b1[2]|b1[4]|b1[8]] != b1[017] ) e(49);
1062     if ( b1[b1[1]^b1[2]^b1[4]^b1[8]] != b1[b1[1]|b1[2]|b1[4]|b1[8]] ) e(50);
1063     for ( i = 0; i<20; i++ )
1064         b1[i] = i+1;
1065 #ifndef NOFLOAT
1066     for ( i = 0; i<20; i++ )
1067         b2[i] = b3[i] = b1[i];
1068     if ( b2[5] != 6.0 ) e(51);
1069     if ( b2[13] != 14.0 ) e(52);
1070     if ( b2[b1[b1[b1[b1[b1[0]]]]]] != 6.0 ) e(53);
1071 #endif
1072     if ( b1[12] != 13 ) e(54);
1073 #ifndef NOFLOAT
1074     if ( b1[ b1[12] = b2[b1[11]] ] != 14 ) e(55);
1075     if ( fabs( b2[13] - b2[b1[12]] ) > epsf ) e(56);
1076     if ( b2[8] != b1[8] ) e(57);
1077 #endif
1078 }
1079
1080
1081
1082
1083 test10()                /* global pointers */
1084 {
1085 #ifndef NOFLOAT
1086     float epsf;
1087     double fabs();
1088 #endif
1089     int li;
1090     struct tp2 strp2;
1091
1092 #ifndef NOFLOAT
1093     epsf = EPSF;
1094 #endif
1095     t = 10;
1096     tct++;
1097     p1 = &li;
1098     li = 076;
1099     if ( p1 != &li ) e(1);
1100     p11 = &li;
1101     if ( p1 != p11 ) e(3);
1102     if ( *p1 != *p11 ) e(4);
1103     if ( &li != p11 ) e(5);
1104     if ( *&p1 != p1 ) e(6);
1105     if ( &*p1 != p1 ) e(7);
1106     if ( **&p1 != *&*p1 ) e(10);
1107     if ( *&*&*&*&*&li != li ) e(11);
1108     p1 = &p ;
1109     p2 = &p1;
1110     *p1 = **p2 = 34;
1111     if ( p1 != *p2 ) e(25);
1112     li = 4;
1113     p1 = &li;
1114     p2 = &p1;
1115     p3 = &p2;
1116     p4 = &p3;
1117     p5 = &p4;
1118     if ( *p1 != **p2 ) e(26);
1119     if ( **p2 != **p2 ) e(27);
1120     if ( ***p3 != **p2 ) e(28);
1121     if ( *****p5 != 4 ) e(30);
1122     li = 3;
1123     if ( *p1 - *p1 ) e(44);
1124     if ( p1 != &li ) e(46);
1125     pp1 = (struct tp2 *) alloc( sizeof *pp1 );
1126     pp2 = (struct tp2 *) alloc( sizeof *pp2 );
1127     pp3 = (struct tp2 *) alloc( sizeof *pp3 );
1128     pp1->i = 1325;
1129     if ( pp1->i != 1325 ) e(47);
1130     pp1->i = pp2->i = pp3->i = 3;
1131     if ( pp1->i * pp1->i != 9 ) e(48);
1132     if ( pp1->i * pp2->i * pp3->i != pp2->i * 3 * 3 ) e(49);
1133     if ( pp1->i - pp3->i ) e(50);
1134     if ( (*pp1).i != pp1->i ) e(51);
1135     pp1->i++;
1136     if ( ++pp2->i != pp1->i ) e(52);
1137     if ( pp2->i != 4 ) e(53);
1138 #ifndef NOFLOAT
1139     pp1->aaa = 3.0;
1140     pp2->aaa = -3.0;
1141     pp3->bbb = 25.0;
1142     if ( pp1->aaa != 3.0 ) e(54);
1143     if ( fabs( pp1->aaa + pp2->aaa ) > epsf ) e(55);
1144     if ( fabs( pp1->aaa * pp2->aaa + pp3->bbb - 16 ) > epsf ) e(56);
1145     if ( fabs( pp1->aaa / pp2->aaa + 1 ) > epsf ) e(57);
1146 #endif
1147     pp1->c1 = 'x';
1148     pp1->i = pp1->j = 45;
1149 #ifndef NOFLOAT
1150     pp1->aaa = 100.0;
1151     pp1->bbb = 1024.0;
1152 #endif
1153     strp2.c1 = pp1->c1;         /* strp2 is a local struct */
1154     strp2.i = pp1->i = strp2.j = pp1->j;
1155 #ifndef NOFLOAT
1156     strp2.aaa = pp1->aaa;
1157     strp2.bbb = pp1->bbb;
1158 #endif
1159     if ( strp2.c1 != 'x' ) e(58);
1160     if ( strp2.i != strp2.j ) e(59);
1161 #ifndef NOFLOAT
1162     if ( strp2.aaa != pp1->aaa ) e(60);
1163     if ( strp2.bbb != pp1->bbb ) e(61);
1164 #endif
1165 }
1166
1167 #ifndef NOFLOAT
1168
1169 test11()        /* real arithmetic */
1170 {
1171     double fabs();
1172     double epsd;
1173     float epsf;
1174     float locxf;
1175
1176     t = 11 ;
1177     tct++;
1178     epsf = EPSF;
1179     epsd = EPSD;
1180     xf = 1.50;
1181     yf = 3.00;
1182     zf = 0.10;
1183     xd = 1.50;
1184     yd = 3.00;
1185     zd = 0.10;
1186     if ( fabs(1.0 + 1.0 - 2.0) > epsd ) e(1);
1187     if ( fabs( 1e10-1e10 ) > epsd ) e(2);
1188     if ( fabs( 1.0e+5 * 1.0e+5 - 100e+8 ) > epsd ) e(3);
1189     if ( fabs( 10.0/3.0 * 3.0/10.0 - 100e-2 ) > epsd ) e(4);
1190     if ( 0.0e0 != 0 ) e(5);
1191     if ( fabs( 32767.0 - 32767 ) > epsd ) e(6);
1192     if ( fabs( 1.0+2+5+3.0e0+7.5e+1+140e-1-100.0 ) > epsd ) e(7);
1193     if ( fabs(-1+(-1)+(-1.0)+(-1.0e0)+(-1.0e-0)+(-1e0)+6 ) > epsd ) e(8);
1194     if ( fabs(5.0*yf*zf-xf) > epsf ) e(9);
1195     if ( fabs(5.0*yd*zd-xd) > epsd ) e(10);
1196     if ( fabs(yd*yd - (2.0*xd)*(2.0*xd) ) > epsd ) e(11);
1197     if ( fabs(yf*yf - (2.0*xf)*(2.0*xf) ) > epsf ) e(12);
1198     if ( fabs( yd*yd+zd*zd+2.0*yd*zd-(yd+zd)*(zd+yd) ) > epsf ) e(13);
1199     if ( fabs( yf*yf+zf*zf+2.0*yf*zf-(yf+zf)*(zf+yf) ) > epsf ) e(14);
1200     xf = 1.10;
1201     yf = 1.20;
1202     if ( yd<xd ) e(15);
1203     if ( yd<=xd ) e(16);
1204     if ( yd==xd ) e(17);
1205     if ( xd>=yd ) e(18);
1206     if ( yd<xd ) e(19);
1207     if ( fabs(yd-xd-1.5) > epsd ) e(20);
1208     if ( 1.0 * 3.0 != 3.0 * 1.0 ) e(21);
1209     if ( 1.0 != 1e+0 ) e(22);
1210     if ( 4.5 < 4.4 ) e(23);
1211     if ( -3.4 != -3.4 ) e(24);
1212     if ( 10/3.0 - 10/3.0 != 0.0 ) e(25);
1213     if ( fabs( (1<<0) * (-5.3) + 5.3 ) > epsd ) e(26);
1214     if ( fabs( (1<<3) * 5.0 - 4e+1 ) > epsd ) e(27);
1215     if ( fabs( ((1<<5)>>5) - 1e-0 ) > epsd ) e(28);
1216     if ( fabs ( 00000 * 3.0 ) > epsd ) e(29);
1217     if ( fabs ( 8 * 5.0 - 02 * 02 + 04 / 1.0 -40.0 ) > epsd ) e(30);
1218     if ( fabs ( 'a' / 1.0 - 'a' ) > epsd ) e(31);
1219     if ( fabs ( (!1) * ( 2.0 / -34e-1 ) ) > epsd ) e(32);
1220     if ( fabs ( (01 | 1 | 2) * 4.0 - 12.0 ) > epsd ) e(33);
1221     if ( fabs ( 1.0 * 2.0 * 3.0 * 4.0 * 5.0 - 120.0 ) > epsd ) e(34);
1222     if ( fabs ( 1.0 * 2.0 * (1 | (4>>1)) - 6 ) > epsd ) e(35);
1223     if ( fabs ( ( 0 ^ 0 ^ 0 ^ 0 ) * 0.0 ) > epsd ) e(36);
1224     if ( fabs ( 1.0 * 2.0 * (1 ^ (4>>1)) - 6 ) > epsd ) e(37);
1225     if ( fabs ( (((((-1.0 * (((((-1.0))))) - 1.0 ))))) ) > epsd) e(38);
1226     if ( fabs ( ( 2==3 ) * 3.0  ) > epsd ) e(39);
1227     if ( ( 4 + 3 > 5 ? 3.4 : -5e+3 ) != 3.4 ) e(40);
1228     if ( ( -4 -'a' > 0 ? 3.4 : -5e+3 ) != -5e+3 ) e(41);
1229     locxf = 3.0;
1230     xf = 3.0;
1231     if ( locxf != locxf ) e(42);
1232     if ( locxf != xf ) e(43);
1233     if ( locxf * xf != xf * locxf ) e(44);
1234     if ( fabs ( ((2*3)>>1) / 3.0 - 1.0 ) > epsd ) e(45);
1235     if ( fabs ( 'a' / locxf - 'a' / xf ) > epsd ) e(46);
1236     if ( fabs( xf * locxf - 9.0 ) > epsd ) e(47);
1237     yd = 3.0;
1238     if ( fabs( xf*yd - 9.0) > epsd ) e(48);
1239     if ( yd >= 4 ) e(49);
1240     if ( locxf == 2 ) e(50);
1241 }
1242
1243 #endif
1244
1245