xref: /original-bsd/usr.bin/f77/tests/tests/fm062.f (revision f72a1a16)
1c     comment section
2c
3c     fm062
4c
5c          this routine tests arithmetic assignment statements where
6c     an arithmetic expression formed from real variables and
7c     constants connected by arithmetic operators is assigned to
8c     a real variable.  in cases involving the exponentiation
9c     operator, real values are raised to integer powers only.
10c
11c           a real datum is a processor approximation to the value of a
12c     real number.  it may assume positive, negative and zero values.
13c
14c          a basic real constant is written as an integer part, a
15c     decimal point, and a decimal fraction part in that order.  both
16c     the integer part and the decimal part are strings of digits;
17c     either one of these strings may be empty but not both.  the
18c     constant is an approximation to the digit string interpreted as a
19c     decimal numeral.
20c
21c         a decimal exponent is written as the letter e, followed by an
22c     optionally signed integer constant.
23c
24c         a real constant is indicated by writing a basic real constant,
25c     a basic real constant followed by a decimal exponent, or an
26c     integer constant followed by a decimal exponent.
27c
28c      references
29c        american national standard programming language fortran,
30c              x3.9-1978
31c
32c        section 4.4, real type
33c        section 4.4.1, real constant
34c        section 6.1, arithmetic expressions
35c        section 6.6, evaluation of expressions
36c        section 10.1, arithmetic assignment statement
37c
38c      **********************************************************
39c
40c         a compiler validation system for the fortran language
41c     based on specifications as defined in american national standard
42c     programming language fortran x3.9-1978, has been developed by the
43c     federal cobol compiler testing service.  the fortran compiler
44c     validation system (fcvs) consists of audit routines, their related
45c     data, and an executive system.  each audit routine is a fortran
46c     program, subprogram or function which includes tests of specific
47c     language elements and supporting procedures indicating the result
48c     of executing these tests.
49c
50c         this particular program/subprogram/function contains features
51c     found only in the subset as defined in x3.9-1978.
52c
53c         suggestions and comments should be forwarded to -
54c
55c                  department of the navy
56c                  federal cobol compiler testing service
57c                  washington, d.c.  20376
58c
59c      **********************************************************
60c
61c
62c
63c     initialization section
64c
65c     initialize constants
66c      **************
67c     i01 contains the logical unit number for the card reader.
68      i01 = 5
69c     i02 contains the logical unit number for the printer.
70      i02 = 6
71c     system environment section
72c
73cx010    this card is replaced by contents of fexec x-010 control card.
74c     the cx010 card is for overriding the program default i01 = 5
75c     (unit number for card reader).
76cx011    this card is replaced by contents of fexec x-011 control card.
77c     the cx011 card is for systems which require additional
78c     fortran statements for files associated with cx010 above.
79c
80cx020    this card is replaced by contents of fexec x-020 control card.
81c     the cx020 card is for overriding the program default i02 = 6
82c     (unit number for printer).
83cx021    this card is replaced by contents of fexec x-021 control card.
84c     the cx021 card is for systems which require additional
85c     fortran statements for files associated with cx020 above.
86c
87      ivpass=0
88      ivfail=0
89      ivdele=0
90      iczero=0
91c
92c     write page headers
93      write (i02,90000)
94      write (i02,90001)
95      write (i02,90002)
96      write (i02, 90002)
97      write (i02,90003)
98      write (i02,90002)
99      write (i02,90004)
100      write (i02,90002)
101      write (i02,90011)
102      write (i02,90002)
103      write (i02,90002)
104      write (i02,90005)
105      write (i02,90006)
106      write (i02,90002)
107c
108c     test section
109c
110c          arithmetic assignment statement
111c
112c
113c     tests 62 through 70 use a mixture of real variables and real
114c     constants connected by two identical arithmetic operators.
115c     tests occur in pairs, one without parentheses and one with
116c     parentheses to alter the normal order of evaluation.
117c
118c     tests 71 through 90 use three real variables connected by a
119c     pair of dissimilar operators.  all combinations and orderings
120c     of operators are exercized.  where exponentiation is tested,
121c     integer variables are used for the power primaries.
122c
123c     tests 91 and 92 use a series of real variables connected by one
124c     each of the arithmetic opertors.  parenthetical notations are
125c     also tested.
126c
127c
128c
129c
130c
131      ivtnum =  62
132c
133c      ****  test  62  ****
134c
135      if (iczero) 30620,  620, 30620
136  620 continue
137      rvon01 = 7.5
138      rvon02 = 5e2
139      rvcomp = rvon01 + rvon02 + 33e-1
140      go to 40620
14130620 ivdele = ivdele + 1
142      write (i02,80003) ivtnum
143      if (iczero) 40620,  631, 40620
14440620 if (rvcomp - 510.75) 20620,10620,40621
14540621 if (rvcomp - 510.85) 10620,10620,20620
14610620 ivpass = ivpass + 1
147      write (i02,80001) ivtnum
148      go to  631
14920620 ivfail = ivfail + 1
150      rvcorr = 510.8
151      write (i02,80005) ivtnum, rvcomp, rvcorr
152  631 continue
153      ivtnum =  63
154c
155c      ****  test  63  ****
156c
157      if (iczero) 30630,  630, 30630
158  630 continue
159      rvon01 = 75e-1
160      rvon02 = 500.0
161      rvcomp = rvon01 + (rvon02 + 3.3)
162      go to 40630
16330630 ivdele = ivdele + 1
164      write (i02,80003) ivtnum
165      if (iczero) 40630,  641, 40630
16640630 if (rvcomp - 510.75) 20630,10630,40631
16740631 if (rvcomp - 510.85) 10630,10630,20630
16810630 ivpass = ivpass + 1
169      write (i02,80001) ivtnum
170      go to  641
17120630 ivfail = ivfail + 1
172      rvcorr = 510.8
173      write (i02,80005) ivtnum, rvcomp, rvcorr
174  641 continue
175      ivtnum =  64
176c
177c      ****  test  64  ****
178c
179      if (iczero) 30640,  640, 30640
180  640 continue
181      rvcomp = 7.5 - 500. - 3.3
182      go to 40640
18330640 ivdele = ivdele + 1
184      write (i02,80003) ivtnum
185      if (iczero) 40640,  651, 40640
18640640 if (rvcomp + 495.85) 20640,10640,40641
18740641 if (rvcomp + 495.75) 10640,10640,20640
18810640 ivpass = ivpass + 1
189      write (i02,80001) ivtnum
190      go to  651
19120640 ivfail = ivfail + 1
192      rvcorr = -495.8
193      write (i02,80005) ivtnum, rvcomp, rvcorr
194  651 continue
195      ivtnum =  65
196c
197c      ****  test  65  ****
198c
199      if (iczero) 30650,  650, 30650
200  650 continue
201      rvon01 = 7.5
202      rvon02 = 5e2
203      rvcomp = rvon01 - (33e-1 - rvon02)
204      go to 40650
20530650 ivdele = ivdele + 1
206      write (i02,80003) ivtnum
207      if (iczero) 40650,  661, 40650
20840650 if (rvcomp - 504.15) 20650,10650,40651
20940651 if (rvcomp - 504.25) 10650,10650,20650
21010650 ivpass = ivpass + 1
211      write (i02,80001) ivtnum
212      go to  661
21320650 ivfail = ivfail + 1
214      rvcorr = 504.2
215      write (i02,80005) ivtnum, rvcomp, rvcorr
216  661 continue
217      ivtnum =  66
218c
219c      ****  test  66  ****
220c
221      if (iczero) 30660,  660, 30660
222  660 continue
223      rvon01 = 7.5
224      rvcomp = 5e2 * 33e-1 * rvon01
225      go to 40660
22630660 ivdele = ivdele + 1
227      write (i02,80003) ivtnum
228      if (iczero) 40660,  671, 40660
22940660 if (rvcomp - 12370) 20660,10660,40661
23040661 if (rvcomp - 12380) 10660,10660,20660
23110660 ivpass = ivpass + 1
232      write (i02,80001) ivtnum
233      go to  671
23420660 ivfail = ivfail + 1
235      rvcorr = 12375.
236      write (i02,80005) ivtnum, rvcomp, rvcorr
237  671 continue
238      ivtnum =  67
239c
240c      ****  test  67  ****
241c
242      if (iczero) 30670,  670, 30670
243  670 continue
244      rvon01 = 7.5
245      rvcomp = 5e2 * (rvon01 * 33e-1)
246      go to 40670
24730670 ivdele = ivdele + 1
248      write (i02,80003) ivtnum
249      if (iczero) 40670,  681, 40670
25040670 if (rvcomp - 12370) 20670,10670,40671
25140671 if (rvcomp - 12380) 10670,10670,20670
25210670 ivpass = ivpass + 1
253      write (i02,80001) ivtnum
254      go to  681
25520670 ivfail = ivfail + 1
256      rvcorr = 12375.
257      write (i02,80005) ivtnum, rvcomp, rvcorr
258  681 continue
259      ivtnum =  68
260c
261c      ****  test  68  ****
262c
263      if (iczero) 30680,  680, 30680
264  680 continue
265      rvon01 = 7.5
266      rvon02 = 33e-1
267      rvon03 = -5e+2
268      rvcomp = rvon01 / rvon02 / rvon03
269      go to 40680
27030680 ivdele = ivdele + 1
271      write (i02,80003) ivtnum
272      if (iczero) 40680,  691, 40680
27340680 if (rvcomp + .00459) 20680,10680,40681
27440681 if (rvcomp + .00449) 10680,10680,20680
27510680 ivpass = ivpass + 1
276      write (i02,80001) ivtnum
277      go to  691
27820680 ivfail = ivfail + 1
279      rvcorr = -.0045454
280      write (i02,80005) ivtnum, rvcomp, rvcorr
281  691 continue
282      ivtnum =  69
283c
284c      ****  test  69  ****
285c
286      if (iczero) 30690,  690, 30690
287  690 continue
288      rvon01 = 7.5
289      rvon02 = 33e-1
290      rvon03 = -5e+2
291      rvcomp = rvon01 / (rvon02 / rvon03)
292      go to 40690
29330690 ivdele = ivdele + 1
294      write (i02,80003) ivtnum
295      if (iczero) 40690,  701, 40690
29640690 if (rvcomp + 1180.) 20690,10690,40691
29740691 if (rvcomp + 1080.) 10690,10690,20690
29810690 ivpass = ivpass + 1
299      write (i02,80001) ivtnum
300      go to  701
30120690 ivfail = ivfail + 1
302      rvcorr = -1136.4
303      write (i02,80005) ivtnum, rvcomp, rvcorr
304  701 continue
305      ivtnum =  70
306c
307c      ****  test  70  ****
308c
309      if (iczero) 30700,  700, 30700
310  700 continue
311      rvon01 = 3.835e3
312      ivon01 =  5
313      rvcomp = rvon01 ** ivon01
314      go to 40700
31530700 ivdele = ivdele + 1
316      write (i02,80003) ivtnum
317      if (iczero) 40700,  711, 40700
31840700 if (rvcomp - 8.29e17) 20700,10700,40701
31940701 if (rvcomp - 8.30e17) 10700,10700,20700
32010700 ivpass = ivpass + 1
321      write (i02,80001) ivtnum
322      go to  711
32320700 ivfail = ivfail + 1
324      rvcorr = 8.295e17
325      write (i02,80005) ivtnum, rvcomp, rvcorr
326  711 continue
327c
328c     tests 71 through 74 test  rv1 + rv2 <op2> rv3
329c
330      ivtnum =  71
331c
332c      ****  test  71  ****
333c
334      if (iczero) 30710,  710, 30710
335  710 continue
336      rvon01 = 524.87
337      rvon02 = 3.35
338      rvon03 = .005679
339      rvcomp = rvon01 + rvon02 - rvon03
340      go to 40710
34130710 ivdele = ivdele + 1
342      write (i02,80003) ivtnum
343      if (iczero) 40710,  721, 40710
34440710 if (rvcomp - 528.16) 20710,10710,40711
34540711 if (rvcomp - 528.26) 10710,10710,20710
34610710 ivpass = ivpass + 1
347      write (i02,80001) ivtnum
348      go to  721
34920710 ivfail = ivfail + 1
350      rvcorr = 528.21
351      write (i02,80005) ivtnum, rvcomp, rvcorr
352  721 continue
353      ivtnum =  72
354c
355c      ****  test  72  ****
356c
357      if (iczero) 30720,  720, 30720
358  720 continue
359      rvon01 = 524.87
360      rvon02 = 3.35
361      rvon03 = .005679
362      rvcomp = rvon01 + rvon02 * rvon03
363      go to 40720
36430720 ivdele = ivdele + 1
365      write (i02,80003) ivtnum
366      if (iczero) 40720,  731, 40720
36740720 if (rvcomp - 524.84) 20720,10720,40721
36840721 if (rvcomp - 524.94) 10720,10720,20720
36910720 ivpass = ivpass + 1
370      write (i02,80001) ivtnum
371      go to  731
37220720 ivfail = ivfail + 1
373      rvcorr = 524.89
374      write (i02,80005) ivtnum, rvcomp, rvcorr
375  731 continue
376      ivtnum =  73
377c
378c      ****  test  73  ****
379c
380      if (iczero) 30730,  730, 30730
381  730 continue
382      rvon01 = 524.87
383      rvon02 = 3.35
384      rvon03 = .005679
385      rvcomp = rvon01 + rvon02 / rvon03
386      go to 40730
38730730 ivdele = ivdele + 1
388      write (i02,80003) ivtnum
389      if (iczero) 40730,  741, 40730
39040730 if (rvcomp - 1114.2) 20730,10730,40731
39140731 if (rvcomp - 1115.2) 10730,10730,20730
39210730 ivpass = ivpass + 1
393      write (i02,80001) ivtnum
394      go to  741
39520730 ivfail = ivfail + 1
396      rvcorr = 1114.8
397      write (i02,80005) ivtnum, rvcomp, rvcorr
398  741 continue
399      ivtnum =  74
400c
401c      ****  test  74  ****
402c
403      if (iczero) 30740,  740, 30740
404  740 continue
405      rvon01 = 524.87
406      rvon02 = 3.35
407      ivon01 = 7
408      rvcomp = rvon01 + rvon02 ** ivon01
409      go to 40740
41030740 ivdele = ivdele + 1
411      write (i02,80003) ivtnum
412      if (iczero) 40740,  751, 40740
41340740 if (rvcomp - 5259.3) 20740,10740,40741
41440741 if (rvcomp - 5260.3) 10740,10740,20740
41510740 ivpass = ivpass + 1
416      write (i02,80001) ivtnum
417      go to  751
41820740 ivfail = ivfail + 1
419      rvcorr = 5259.8
420      write (i02,80005) ivtnum, rvcomp, rvcorr
421  751 continue
422c
423c     tests 75 through 78 check     rv1 - rv2 <op2> rv3
424c
425      ivtnum =  75
426c
427c      ****  test  75  ****
428c
429      if (iczero) 30750,  750, 30750
430  750 continue
431      rvon01 = 524.87
432      rvon02 = 3.35
433      rvon03 = .5679
434      rvcomp = rvon01 - rvon02 + rvon03
435      go to 40750
43630750 ivdele = ivdele + 1
437      write (i02,80003) ivtnum
438      if (iczero) 40750,  761, 40750
43940750 if (rvcomp - 522.03) 20750,10750,40751
44040751 if (rvcomp - 522.13) 10750,10750,20750
44110750 ivpass = ivpass + 1
442      write (i02,80001) ivtnum
443      go to  761
44420750 ivfail = ivfail + 1
445      rvcorr = 522.09
446      write (i02,80005) ivtnum, rvcomp, rvcorr
447  761 continue
448      ivtnum =  76
449c
450c      ****  test  76  ****
451c
452      if (iczero) 30760,  760, 30760
453  760 continue
454      rvon01 = 524.87
455      rvon02 =   3.35
456      rvon03 =    .5679
457      rvcomp = rvon01 - rvon02 * rvon03
458      go to 40760
45930760 ivdele = ivdele + 1
460      write (i02,80003) ivtnum
461      if (iczero) 40760,  771, 40760
46240760 if (rvcomp - 522.92) 20760,10760,40761
46340761 if (rvcomp - 523.02) 10760,10760,20760
46410760 ivpass = ivpass + 1
465      write (i02,80001) ivtnum
466      go to  771
46720760 ivfail = ivfail + 1
468      rvcorr = 522.97
469      write (i02,80005) ivtnum, rvcomp, rvcorr
470  771 continue
471      ivtnum =  77
472c
473c      ****  test  77  ****
474c
475      if (iczero) 30770,  770, 30770
476  770 continue
477      rvon01 = 524.87
478      rvon02 =   3.35
479      rvon03 =    .5679
480      rvcomp = rvon01 - rvon02 / rvon03
481      go to 40770
48230770 ivdele = ivdele + 1
483      write (i02,80003) ivtnum
484      if (iczero) 40770,  781, 40770
48540770 if (rvcomp - 518.92) 20770,10770,40771
48640771 if (rvcomp - 519.02) 10770,10770,20770
48710770 ivpass = ivpass + 1
488      write (i02,80001) ivtnum
489      go to  781
49020770 ivfail = ivfail + 1
491      rvcorr = 518.97
492      write (i02,80005) ivtnum, rvcomp, rvcorr
493  781 continue
494      ivtnum =  78
495c
496c      ****  test  78  ****
497c
498      if (iczero) 30780,  780, 30780
499  780 continue
500      rvon01 = 524.87
501      rvon02 =   3.35
502      ivon01 =   7
503      rvcomp = rvon01 - rvon02 ** ivon01
504      go to 40780
50530780 ivdele = ivdele + 1
506      write (i02,80003) ivtnum
507      if (iczero) 40780,  791, 40780
50840780 if (rvcomp + 4210.6) 20780,10780,40781
50940781 if (rvcomp + 4209.6) 10780,10780,20780
51010780 ivpass = ivpass + 1
511      write (i02,80001) ivtnum
512      go to  791
51320780 ivfail = ivfail + 1
514      rvcorr = -4210.1
515      write (i02,80005) ivtnum, rvcomp, rvcorr
516  791 continue
517c
518c     tests 79 through 82 check     rv1 * rv2 <op2> rv3
519c
520      ivtnum =  79
521c
522c      ****  test  79  ****
523c
524      if (iczero) 30790,  790, 30790
525  790 continue
526      rvon01 = 524.87
527      rvon02 =   .5679
528      rvon03 =   3.35
529      rvcomp = rvon01 * rvon02 + rvon03
530      go to 40790
53130790 ivdele = ivdele + 1
532      write (i02,80003) ivtnum
533      if (iczero) 40790,  801, 40790
53440790 if (rvcomp - 301.37) 20790,10790,40791
53540791 if (rvcomp - 301.47) 10790,10790,20790
53610790 ivpass = ivpass + 1
537      write (i02,80001) ivtnum
538      go to  801
53920790 ivfail = ivfail + 1
540      rvcorr = 301.42
541      write (i02,80005) ivtnum, rvcomp, rvcorr
542  801 continue
543      ivtnum =  80
544c
545c      ****  test  80  ****
546c
547      if (iczero) 30800,  800, 30800
548  800 continue
549      rvon01 = 524.87
550      rvon02 =    .5679
551      rvon03 =   3.35
552      rvcomp = rvon01 * rvon02 - rvon03
553      go to 40800
55430800 ivdele = ivdele + 1
555      write (i02,80003) ivtnum
556      if (iczero) 40800,  811, 40800
55740800 if (rvcomp - 294.67) 20800,10800,40801
55840801 if (rvcomp - 294.77) 10800,10800,20800
55910800 ivpass = ivpass + 1
560      write (i02,80001) ivtnum
561      go to  811
56220800 ivfail = ivfail + 1
563      rvcorr = 294.72
564      write (i02,80005) ivtnum, rvcomp, rvcorr
565  811 continue
566      ivtnum =  81
567c
568c      ****  test  81  ****
569c
570      if (iczero) 30810,  810, 30810
571  810 continue
572      rvon01 = 524.87
573      rvon02 =    .5679
574      rvon03 =   3.35
575      rvcomp = rvon01 * rvon02 / rvon03
576      go to 40810
57730810 ivdele = ivdele + 1
578      write (i02,80003) ivtnum
579      if (iczero) 40810,  821, 40810
58040810 if (rvcomp - 88.92) 20810,10810,40811
58140811 if (rvcomp - 89.02) 10810,10810,20810
58210810 ivpass = ivpass + 1
583      write (i02,80001) ivtnum
584      go to  821
58520810 ivfail = ivfail + 1
586      rvcorr = 88.977
587      write (i02,80005) ivtnum, rvcomp, rvcorr
588  821 continue
589      ivtnum =  82
590c
591c      ****  test  82  ****
592c
593      if (iczero) 30820,  820, 30820
594  820 continue
595      rvon01 = 524.87
596      rvon02 =    .5679
597      ivon01 =   7
598      rvcomp = rvon01 * rvon02 ** ivon01
599      go to 40820
60030820 ivdele = ivdele + 1
601      write (i02,80003) ivtnum
602      if (iczero) 40820,  831, 40820
60340820 if (rvcomp -  9.94) 20820,10820,40821
60440821 if (rvcomp - 10.04) 10820,10820,20820
60510820 ivpass = ivpass + 1
606      write (i02,80001) ivtnum
607      go to  831
60820820 ivfail = ivfail + 1
609      rvcorr = 9.999
610      write (i02,80005) ivtnum, rvcomp, rvcorr
611  831 continue
612c
613c     tests 83 through 86 check     rv1 / rv2 <op2> rv3
614c
615      ivtnum =  83
616c
617c      ****  test  83  ****
618c
619      if (iczero) 30830,  830, 30830
620  830 continue
621      rvon01 = 524.87
622      rvon02 =   3.35
623      rvon03 =    .5679
624      rvcomp = rvon01 / rvon02 + rvon03
625      go to 40830
62630830 ivdele = ivdele + 1
627      write (i02,80003) ivtnum
628      if (iczero) 40830,  841, 40830
62940830 if (rvcomp - 157.19) 20830,10830,40831
63040831 if (rvcomp - 157.29) 10830,10830,20830
63110830 ivpass = ivpass + 1
632      write (i02,80001) ivtnum
633      go to  841
63420830 ivfail = ivfail + 1
635      rvcorr = 157.25
636      write (i02,80005) ivtnum, rvcomp, rvcorr
637  841 continue
638      ivtnum =  84
639c
640c      ****  test  84  ****
641c
642      if (iczero) 30840,  840, 30840
643  840 continue
644      rvon01 = 524.87
645      rvon02 =   3.35
646      rvon03 =    .8507
647      rvcomp = rvon01 / rvon02 - rvon03
648      go to 40840
64930840 ivdele = ivdele + 1
650      write (i02,80003) ivtnum
651      if (iczero) 40840,  851, 40840
65240840 if (rvcomp - 155.77) 20840,10840,40841
65340841 if (rvcomp - 155.87) 10840,10840,20840
65410840 ivpass = ivpass + 1
655      write (i02,80001) ivtnum
656      go to  851
65720840 ivfail = ivfail + 1
658      rvcorr = 155.83
659      write (i02,80005) ivtnum, rvcomp, rvcorr
660  851 continue
661      ivtnum =  85
662c
663c      ****  test  85  ****
664c
665      if (iczero) 30850,  850, 30850
666  850 continue
667      rvon01 = 524.87
668      rvon02 =   3.35
669      rvon03 =    .8507
670      rvcomp = rvon01 / rvon02 * rvon03
671      go to 40850
67230850 ivdele = ivdele + 1
673      write (i02,80003) ivtnum
674      if (iczero) 40850,  861, 40850
67540850 if (rvcomp - 132.7) 20850,10850,40851
67640851 if (rvcomp - 133.7) 10850,10850,20850
67710850 ivpass = ivpass + 1
678      write (i02,80001) ivtnum
679      go to  861
68020850 ivfail = ivfail + 1
681      rvcorr = 133.29
682      write (i02,80005) ivtnum, rvcomp, rvcorr
683  861 continue
684      ivtnum =  86
685c
686c      ****  test  86  ****
687c
688      if (iczero) 30860,  860, 30860
689  860 continue
690      rvon01 = 524.87
691      rvon02 =   3.35
692      ivon01 =   7
693      rvcomp = rvon01 / rvon02 ** ivon01
694      go to 40860
69530860 ivdele = ivdele + 1
696      write (i02,80003) ivtnum
697      if (iczero) 40860,  871, 40860
69840860 if (rvcomp - .106) 20860,10860,40861
69940861 if (rvcomp - .116) 10860,10860,20860
70010860 ivpass = ivpass + 1
701      write (i02,80001) ivtnum
702      go to  871
70320860 ivfail = ivfail + 1
704      rvcorr = .11085
705      write (i02,80005) ivtnum, rvcomp, rvcorr
706  871 continue
707c
708c     tests 87 through 90 check     rv1 ** iv1 <op2> rv2
709c
710      ivtnum =  87
711c
712c      ****  test  87  ****
713c
714      if (iczero) 30870,  870, 30870
715  870 continue
716      rvon01 =   3.35
717      ivon01 =   7
718      rvon02 = 524.87
719      rvcomp = rvon01 ** ivon01 + rvon02
720      go to 40870
72130870 ivdele = ivdele + 1
722      write (i02,80003) ivtnum
723      if (iczero) 40870,  881, 40870
72440870 if (rvcomp - 5210.) 20870,10870,40871
72540871 if (rvcomp - 5310.) 10870,10870,20870
72610870 ivpass = ivpass + 1
727      write (i02,80001) ivtnum
728      go to  881
72920870 ivfail = ivfail + 1
730      rvcorr = 5259.8
731      write (i02,80005) ivtnum, rvcomp, rvcorr
732  881 continue
733      ivtnum =  88
734c
735c      ****  test  88  ****
736c
737      if (iczero) 30880,  880, 30880
738  880 continue
739      rvon01 =   3.35
740      ivon01 =   7
741      rvon02 = 524.87
742      rvcomp = rvon01 ** ivon01 - rvon02
743      go to 40880
74430880 ivdele = ivdele + 1
745      write (i02,80003) ivtnum
746      if (iczero) 40880,  891, 40880
74740880 if (rvcomp - 4160.) 20880,10880,40881
74840881 if (rvcomp - 4260.) 10880,10880,20880
74910880 ivpass = ivpass + 1
750      write (i02,80001) ivtnum
751      go to  891
75220880 ivfail = ivfail + 1
753      rvcorr = 4210.1
754      write (i02,80005) ivtnum, rvcomp, rvcorr
755  891 continue
756      ivtnum =  89
757c
758c      ****  test  89  ****
759c
760      if (iczero) 30890,  890, 30890
761  890 continue
762      rvon01 =   3.35
763      ivon01 =   7
764      rvon02 = 524.87
765      rvcomp = rvon01 ** ivon01 * rvon02
766      go to 40890
76730890 ivdele = ivdele + 1
768      write (i02,80003) ivtnum
769      if (iczero) 40890,  901, 40890
77040890 if (rvcomp - 2.43e6) 20890,10890,40891
77140891 if (rvcomp - 2.53e6) 10890,10890,20890
77210890 ivpass = ivpass + 1
773      write (i02,80001) ivtnum
774      go to  901
77520890 ivfail = ivfail + 1
776      rvcorr = 2.4852e6
777      write (i02,80005) ivtnum, rvcomp, rvcorr
778  901 continue
779      ivtnum =  90
780c
781c      ****  test  90  ****
782c
783      if (iczero) 30900,  900, 30900
784  900 continue
785      rvon01 =   3.35
786      ivon01 =   7
787      rvon02 = 524.87
788      rvcomp = rvon01 ** ivon01 / rvon02
789      go to 40900
79030900 ivdele = ivdele + 1
791      write (i02,80003) ivtnum
792      if (iczero) 40900,  911, 40900
79340900 if (rvcomp - 8.97) 20900,10900,40901
79440901 if (rvcomp - 9.07) 10900,10900,20900
79510900 ivpass = ivpass + 1
796      write (i02,80001) ivtnum
797      go to  911
79820900 ivfail = ivfail + 1
799      rvcorr = 9.0211
800      write (i02,80005) ivtnum, rvcomp, rvcorr
801  911 continue
802c
803c     tests 91 and 92 check all arithmetic operators used together
804c
805      ivtnum =  91
806c
807c      ****  test  91  ****
808c
809      if (iczero) 30910,  910, 30910
810  910 continue
811      rvon01 = 780.56
812      rvon02 =    .803
813      rvon03 =   3.35
814      ivon01 =   7
815      rvon04 =  20.07
816      rvon05 = 511.9
817      rvcomp = - rvon01 + rvon02 * rvon03 ** ivon01 / rvon04 - rvon05
818      go to 40910
81930910 ivdele = ivdele + 1
820      write (i02,80003) ivtnum
821      if (iczero) 40910,  921, 40910
82240910 if (rvcomp + 1113.0) 20910,10910,40911
82340911 if (rvcomp + 1093.0) 10910,10910,20910
82410910 ivpass = ivpass + 1
825      write (i02,80001) ivtnum
826      go to  921
82720910 ivfail = ivfail + 1
828      rvcorr = -1103.0
829      write (i02,80005) ivtnum, rvcomp, rvcorr
830  921 continue
831      ivtnum =  92
832c
833c      ****  test  92  ****
834c
835      if (iczero) 30920,  920, 30920
836  920 continue
837      rvon01 = 780.56
838      rvon02 =    .803
839      rvon03 =   3.35
840      ivon01 =   7
841      rvon04 =  20.07
842      rvon05 = 511.9
843      rvcomp = (-rvon01) + (rvon02 * rvon03) ** ivon01 / (rvon04-rvon05)
844      go to 40920
84530920 ivdele = ivdele + 1
846      write (i02,80003) ivtnum
847      if (iczero) 40920,  931, 40920
84840920 if (rvcomp + 788.) 20920,10920,40921
84940921 if (rvcomp + 777.) 10920,10920,20920
85010920 ivpass = ivpass + 1
851      write (i02,80001) ivtnum
852      go to  931
85320920 ivfail = ivfail + 1
854      rvcorr = -782.63
855      write (i02,80005) ivtnum, rvcomp, rvcorr
856  931 continue
857c
858c     write page footings and run summaries
85999999 continue
860      write (i02,90002)
861      write (i02,90006)
862      write (i02,90002)
863      write (i02,90002)
864      write (i02,90007)
865      write (i02,90002)
866      write (i02,90008)  ivfail
867      write (i02,90009) ivpass
868      write (i02,90010) ivdele
869c
870c
871c     terminate routine execution
872      stop
873c
874c     format statements for page headers
87590000 format (1h1)
87690002 format (1h )
87790001 format (1h ,10x,34hfortran compiler validation system)
87890003 format (1h ,21x,11hversion 1.0)
87990004 format (1h ,10x,38hfor official use only - copyright 1978)
88090005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
88190006 format (1h ,5x,46h----------------------------------------------)
88290011 format (1h ,18x,17hsubset level test)
883c
884c     format statements for run summaries
88590008 format (1h ,15x,i5,19h errors encountered)
88690009 format (1h ,15x,i5,13h tests passed)
88790010 format (1h ,15x,i5,14h tests deleted)
888c
889c     format statements for test results
89080001 format (1h ,4x,i5,7x,4hpass)
89180002 format (1h ,4x,i5,7x,4hfail)
89280003 format (1h ,4x,i5,7x,7hdeleted)
89380004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
89480005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
895c
89690007 format (1h ,20x,20hend of program fm062)
897      end
898