xref: /original-bsd/usr.bin/f77/tests/tests/fm097.f (revision f0203ecd)
1c     comment section
2c
3c     fm097
4c
5c     this routine tests intrinsic functions where the function type is
6c     real and the arguments are either integer or real.  the real and
7c     integer variables and the real and integer constants contain both
8c     positive and negative values.  the intrinsic functions tested by
9c     fm097 include
10c                                                   type of
11c       intrinsic function          name       argument     function
12c       ------------------          ----       --------     --------
13c         absolute value            abs        real         real
14c         truncation                aint       real         real
15c         remaindering              amod       real         real
16c         choosing largest value    amax0      integer      real
17c                                   amax1      real         real
18c         choosing smallest value   amin0     integer       real
19c                                   amin1      real         real
20c         float                     float      integer      real
21c         transfer of sign          sign       real         real
22c         positive difference       dim        real         real
23c
24c      references
25c        american national standard programming language fortran,
26c              x3.9-1978
27c
28c        section 4.1.2, type rules for data and procedure identifiers
29c        section 15.3, intrinsic function
30c        section 15.3.2, intrinsic functions and their reference
31c
32c
33c      **********************************************************
34c
35c         a compiler validation system for the fortran language
36c     based on specifications as defined in american national standard
37c     programming language fortran x3.9-1978, has been developed by the
38c     federal cobol compiler testing service.  the fortran compiler
39c     validation system (fcvs) consists of audit routines, their related
40c     data, and an executive system.  each audit routine is a fortran
41c     program, subprogram or function which includes tests of specific
42c     language elements and supporting procedures indicating the result
43c     of executing these tests.
44c
45c         this particular program/subprogram/function contains features
46c     found only in the subset as defined in x3.9-1978.
47c
48c         suggestions and comments should be forwarded to -
49c
50c                  department of the navy
51c                  federal cobol compiler testing service
52c                  washington, d.c.  20376
53c
54c      **********************************************************
55c
56c
57c
58c     initialization section
59c
60c     initialize constants
61c      **************
62c     i01 contains the logical unit number for the card reader.
63      i01 = 5
64c     i02 contains the logical unit number for the printer.
65      i02 = 6
66c     system environment section
67c
68cx010    this card is replaced by contents of fexec x-010 control card.
69c     the cx010 card is for overriding the program default i01 = 5
70c     (unit number for card reader).
71cx011    this card is replaced by contents of fexec x-011 control card.
72c     the cx011 card is for systems which require additional
73c     fortran statements for files associated with cx010 above.
74c
75cx020    this card is replaced by contents of fexec x-020 control card.
76c     the cx020 card is for overriding the program default i02 = 6
77c     (unit number for printer).
78cx021    this card is replaced by contents of fexec x-021 control card.
79c     the cx021 card is for systems which require additional
80c     fortran statements for files associated with cx020 above.
81c
82      ivpass=0
83      ivfail=0
84      ivdele=0
85      iczero=0
86c
87c     write page headers
88      write (i02,90000)
89      write (i02,90001)
90      write (i02,90002)
91      write (i02, 90002)
92      write (i02,90003)
93      write (i02,90002)
94      write (i02,90004)
95      write (i02,90002)
96      write (i02,90011)
97      write (i02,90002)
98      write (i02,90002)
99      write (i02,90005)
100      write (i02,90006)
101      write (i02,90002)
102c
103c     test section
104c
105c     test 875 through test 878 contain intrinsic function tests for
106c     absolute value where argument and function are real
107c
108      ivtnum = 875
109c
110c      ****  test 875  ****
111c
112      if (iczero) 38750, 8750, 38750
113 8750 continue
114      rvcomp = abs (-38.2)
115      go to 48750
11638750 ivdele = ivdele + 1
117      write (i02,80003) ivtnum
118      if (iczero) 48750, 8761, 48750
11948750 if (rvcomp - 38.195) 28750,18750,48751
12048751 if (rvcomp - 38.205) 18750,18750,28750
12118750 ivpass = ivpass + 1
122      write (i02,80001) ivtnum
123      go to 8761
12428750 ivfail = ivfail + 1
125      rvcorr = 38.200
126      write (i02,80005) ivtnum, rvcomp, rvcorr
127 8761 continue
128      ivtnum = 876
129c
130c      ****  test 876  ****
131c
132      if (iczero) 38760, 8760, 38760
133 8760 continue
134      rvon01 = 445.06
135      rvcomp = abs (rvon01)
136      go to 48760
13738760 ivdele = ivdele + 1
138      write (i02,80003) ivtnum
139      if (iczero) 48760, 8771, 48760
14048760 if (rvcomp - 445.01) 28760,18760,48761
14148761 if (rvcomp - 445.11) 18760,18760,28760
14218760 ivpass = ivpass + 1
143      write (i02,80001) ivtnum
144      go to 8771
14528760 ivfail = ivfail + 1
146      rvcorr = 445.06
147      write (i02,80005) ivtnum, rvcomp, rvcorr
148 8771 continue
149      ivtnum = 877
150c
151c      ****  test 877  ****
152c
153      if (iczero) 38770, 8770, 38770
154 8770 continue
155      rvon01 = -32.176
156      rvcomp = abs (rvon01)
157      go to 48770
15838770 ivdele = ivdele + 1
159      write (i02,80003) ivtnum
160      if (iczero) 48770, 8781, 48770
16148770 if (rvcomp - 32.171) 28770,18770,48771
16248771 if (rvcomp - 32.181) 18770,18770,28770
16318770 ivpass = ivpass + 1
164      write (i02,80001) ivtnum
165      go to 8781
16628770 ivfail = ivfail + 1
167      rvcorr = 32.176
168      write (i02,80005) ivtnum, rvcomp, rvcorr
169 8781 continue
170      ivtnum = 878
171c
172c      ****  test 878  ****
173c
174      if (iczero) 38780, 8780, 38780
175 8780 continue
176      rvon01 = -2.2e+2
177      rvcomp = abs (rvon01)
178      go to 48780
17938780 ivdele = ivdele + 1
180      write (i02,80003) ivtnum
181      if (iczero) 48780, 8791, 48780
18248780 if (rvcomp - 219.95) 28780,18780,48781
18348781 if (rvcomp - 220.05) 18780,18780,28780
18418780 ivpass = ivpass + 1
185      write (i02,80001) ivtnum
186      go to 8791
18728780 ivfail = ivfail + 1
188      rvcorr = 220.00
189      write (i02,80005) ivtnum, rvcomp, rvcorr
190 8791 continue
191      ivtnum = 879
192c
193c      ****  test 879  ****
194c
195c     test 879 through test 882 contain intrinsic function tests for
196c     truncation where argument and function are real
197c
198c
199      if (iczero) 38790, 8790, 38790
200 8790 continue
201      rvcomp = aint (38.2)
202      go to 48790
20338790 ivdele = ivdele + 1
204      write (i02,80003) ivtnum
205      if (iczero) 48790, 8801, 48790
20648790 if (rvcomp - 37.995) 28790,18790,48791
20748791 if (rvcomp - 38.005) 18790,18790,28790
20818790 ivpass = ivpass + 1
209      write (i02,80001) ivtnum
210      go to 8801
21128790 ivfail = ivfail + 1
212      rvcorr = 38.000
213      write (i02,80005) ivtnum, rvcomp, rvcorr
214 8801 continue
215      ivtnum = 880
216c
217c      ****  test 880  ****
218c
219      if (iczero) 38800, 8800, 38800
220 8800 continue
221      rvon01 = -445.95
222      rvcomp = aint (rvon01)
223      go to 48800
22438800 ivdele = ivdele + 1
225      write (i02,80003) ivtnum
226      if (iczero) 48800, 8811, 48800
22748800 if (rvcomp + 445.05) 28800,18800,48801
22848801 if (rvcomp + 444.95) 18800,18800,28800
22918800 ivpass = ivpass + 1
230      write (i02,80001) ivtnum
231      go to 8811
23228800 ivfail = ivfail + 1
233      rvcorr = -445.00
234      write (i02,80005) ivtnum, rvcomp, rvcorr
235 8811 continue
236      ivtnum = 881
237c
238c      ****  test 881  ****
239c
240      if (iczero) 38810, 8810, 38810
241 8810 continue
242      rvon01 = 466.01
243      rvcomp = aint (rvon01)
244      go to 48810
24538810 ivdele = ivdele + 1
246      write (i02,80003) ivtnum
247      if (iczero) 48810, 8821, 48810
24848810 if (rvcomp - 465.95) 28810,18810,48811
24948811 if (rvcomp - 466.05) 18810,18810,28810
25018810 ivpass = ivpass + 1
251      write (i02,80001) ivtnum
252      go to 8821
25328810 ivfail = ivfail + 1
254      rvcomp = 466.00
255      write (i02,80005) ivtnum, rvcomp, rvcorr
256 8821 continue
257      ivtnum = 882
258c
259c      ****  test 882  ****
260c
261      if (iczero) 38820, 8820, 38820
262 8820 continue
263      rvon01 = 382e-1
264      rvcomp = aint (rvon01)
265      go to 48820
26638820 ivdele = ivdele + 1
267      write (i02,80003) ivtnum
268      if (iczero) 48820, 8831, 48820
26948820 if (rvcomp - 37.995) 28820,18820,48821
27048821 if (rvcomp - 38.005) 18820,18820,28820
27118820 ivpass = ivpass + 1
272      write (i02,80001) ivtnum
273      go to 8831
27428820 ivfail = ivfail + 1
275      rvcorr = 38.000
276      write (i02,80005) ivtnum, rvcomp, rvcorr
277 8831 continue
278c
279c     test 883 through 886 contain intrinsic function tests for
280c     remaindering where argument and function are real
281c
282      ivtnum = 883
283c
284c      ****  test 883  ****
285c
286      if (iczero) 38830, 8830, 38830
287 8830 continue
288      rvcomp = amod (42.0,19.0)
289      go to 48830
29038830 ivdele = ivdele + 1
291      write (i02,80003) ivtnum
292      if (iczero) 48830, 8841, 48830
29348830 if (rvcomp - 3.9995) 28830,18830,48831
29448831 if (rvcomp - 4.0005) 18830,18830,28830
29518830 ivpass = ivpass + 1
296      write (i02,80001) ivtnum
297      go to 8841
29828830 ivfail = ivfail + 1
299      rvcorr = 4.0000
300      write (i02,80005) ivtnum, rvcomp, rvcorr
301 8841 continue
302      ivtnum = 884
303c
304c      ****  test 884  ****
305c
306      if (iczero) 38840, 8840, 38840
307 8840 continue
308      rvon01 = 16.27
309      rvon02 = 2.0
310      rvcomp = amod (rvon01,rvon02)
311      go to 48840
31238840 ivdele = ivdele + 1
313      write (i02,80003) ivtnum
314      if (iczero) 48840, 8851, 48840
31548840 if (rvcomp - .26995) 28840,18840,48841
31648841 if (rvcomp - .27005) 18840,18840,28840
31718840 ivpass = ivpass + 1
318      write (i02,80001) ivtnum
319      go to 8851
32028840 ivfail = ivfail + 1
321      rvcorr = .27000
322      write (i02,80005) ivtnum, rvcomp, rvcorr
323 8851 continue
324      ivtnum = 885
325c
326c      ****  test 885  ****
327c
328      if (iczero) 38850, 8850, 38850
329 8850 continue
330      rvon01 = 225.0
331      rvon02 = 5.0e1
332      rvcomp = amod (rvon01,rvon02)
333      go to 48850
33438850 ivdele = ivdele + 1
335      write (i02,80003) ivtnum
336      if (iczero) 48850, 8861, 48850
33748850 if (rvcomp - 24.995) 28850,18850,48851
33848851 if (rvcomp - 25.005) 18850,18850,28850
33918850 ivpass = ivpass + 1
340      write (i02,80001) ivtnum
341      go to 8861
34228850 ivfail = ivfail + 1
343      rvcorr = 25.000
344      write (i02,80005) ivtnum, rvcomp, rvcorr
345 8861 continue
346      ivtnum = 886
347c
348c      ****  test 886  ****
349c
350      if (iczero) 38860, 8860, 38860
351 8860 continue
352      rvon01 = -0.390e+2
353      rvon02 = 5e2
354      rvcomp = amod (rvon01,rvon02)
355      go to 48860
35638860 ivdele = ivdele + 1
357      write (i02,80003) ivtnum
358      if (iczero) 48860, 8871, 48860
35948860 if (rvcomp + 39.005) 28860,18860,48861
36048861 if (rvcomp + 38.995) 18860,18860,28860
36118860 ivpass = ivpass + 1
362      write (i02,80001) ivtnum
363      go to 8871
36428860 ivfail = ivfail + 1
365      rvcorr = -39.000
366      write (i02,80005) ivtnum, rvcomp, rvcorr
367 8871 continue
368c
369c     test 887 and 888 contain intrinsic function tests for choosing
370c     largest value where arguments are integer and function is real
371c
372      ivtnum = 887
373c
374c      ****  test 887  ****
375c
376      if (iczero) 38870, 8870, 38870
377 8870 continue
378      ivon01 = 317
379      ivon02 = -99
380      ivon03 = 1
381      rvcomp = amax0 (263,ivon01,ivon02,ivon03)
382      go to 48870
38338870 ivdele = ivdele + 1
384      write (i02,80003) ivtnum
385      if (iczero) 48870, 8881, 48870
38648870 if (rvcomp - 316.95) 28870,18870,48871
38748871 if (rvcomp - 317.05) 18870,18870,28870
38818870 ivpass = ivpass + 1
389      write (i02,80001) ivtnum
390      go to 8881
39128870 ivfail = ivfail + 1
392      rvcorr = 317.00
393      write (i02,80005) ivtnum, rvcomp, rvcorr
394 8881 continue
395      ivtnum = 888
396c
397c      ****  test 888  ****
398c
399      if (iczero) 38880, 8880, 38880
400 8880 continue
401      ivon01 = 2572
402      ivon02 = 2570
403      rvcomp = amax0 (ivon01,ivon02)
404      go to 48880
40538880 ivdele = ivdele + 1
406      write (i02,80003) ivtnum
407      if (iczero) 48880, 8891, 48880
40848880 if (rvcomp - 2571.5) 28880,18880,48881
40948881 if (rvcomp - 2572.5) 18880,18880,28880
41018880 ivpass = ivpass + 1
411      write (i02,80001) ivtnum
412      go to 8891
41328880 ivfail = ivfail + 1
414      rvcorr = 2572.0
415      write (i02,80005) ivtnum, rvcomp, rvcorr
416 8891 continue
417c
418c     test 889 and 890 contain intrinsic function tests for choosing
419c     largest value where the arguments and function are real
420c
421      ivtnum = 889
422c
423c      ****  test 889  ****
424c
425      if (iczero) 38890, 8890, 38890
426 8890 continue
427      rvon01 = .326e+2
428      rvon02 = 22.075
429      rvon03 = 76e-1
430      rvcomp = amax1 (rvon01,rvon02,rvon03)
431      go to 48890
43238890 ivdele = ivdele + 1
433      write (i02,80003) ivtnum
434      if (iczero) 48890, 8901, 48890
43548890 if (rvcomp - 32.595) 28890,18890,48891
43648891 if (rvcomp - 32.605) 18890,18890,28890
43718890 ivpass = ivpass + 1
438      write (i02,80001) ivtnum
439      go to 8901
44028890 ivfail = ivfail + 1
441      rvcorr = 32.600
442      write (i02,80005) ivtnum, rvcomp, rvcorr
443 8901 continue
444      ivtnum = 890
445c
446c      ****  test 890  ****
447c
448      if (iczero) 38900, 8900, 38900
449 8900 continue
450      rvon01 = -6.3e2
451      rvon02 = -21.0
452      rvcomp = amax1 (-463.3,rvon01,rvon02)
453      go to 48900
45438900 ivdele = ivdele + 1
455      write (i02,80003) ivtnum
456      if (iczero) 48900, 8911, 48900
45748900 if (rvcomp + 21.005) 28900,18900,48901
45848901 if (rvcomp + 20.995) 18900,18900,28900
45918900 ivpass = ivpass + 1
460      write (i02,80001) ivtnum
461      go to 8911
46228900 ivfail = ivfail + 1
463      rvcorr = -21.000
464      write (i02,80005) ivtnum, rvcomp, rvcorr
465 8911 continue
466c
467c     tests 891 and 892 contain intrinsic function tests for choosing
468c     smallest value where arguments are integer and function is real
469c
470      ivtnum = 891
471c
472c      ****  test 891  ****
473c
474      if (iczero) 38910, 8910, 38910
475 8910 continue
476      ivon01 = -75
477      ivon02 = -243
478      rvcomp = amin0 (ivon01,ivon02)
479      go to 48910
48038910 ivdele = ivdele + 1
481      write (i02,80003) ivtnum
482      if (iczero) 48910, 8921, 48910
48348910 if (rvcomp + 243.05) 28910,18910,48911
48448911 if (rvcomp + 242.95) 18910,18910,28910
48518910 ivpass = ivpass + 1
486      write (i02,80001) ivtnum
487      go to 8921
48828910 ivfail = ivfail + 1
489      rvcorr = -243.00
490      write (i02,80005) ivtnum, rvcomp, rvcorr
491 8921 continue
492      ivtnum = 892
493c
494c      ****  test 892  ****
495c
496      if (iczero) 38920, 8920, 38920
497 8920 continue
498      ivon01 = -11
499      ivon02 = 11
500      rvcomp = amin0 (0,ivon01,ivon02)
501      go to 48920
50238920 ivdele = ivdele + 1
503      write (i02,80003) ivtnum
504      if (iczero) 48920, 8931, 48920
50548920 if (rvcomp + 11.005) 28920,18920,48921
50648921 if (rvcomp + 10.995) 18920,18920,28920
50718920 ivpass = ivpass + 1
508      write (i02,80001) ivtnum
509      go to 8931
51028920 ivfail = ivfail + 1
511      rvcorr = -11.000
512      write (i02,80005) ivtnum, rvcomp, rvcorr
513 8931 continue
514c
515c     tests 893 and 894 contain intrinsic function tests for choosing
516c     smallest value where arguments and function are real
517c
518      ivtnum = 893
519c
520c      ****  test 893  ****
521c
522      if (iczero) 38930, 8930, 38930
523 8930 continue
524      rvon01 = 1.1111
525      rvon02 = 22.222
526      rvon03 = 333.33
527      rvcomp = amin1 (rvon01,rvon02,rvon03)
528      go to 48930
52938930 ivdele = ivdele + 1
530      write (i02,80003) ivtnum
531      if (iczero) 48930, 8941, 48930
53248930 if (rvcomp - 1.1106) 28930,18930,48931
53348931 if (rvcomp - 1.1116) 18930,18930,28930
53418930 ivpass = ivpass + 1
535      write (i02,80001) ivtnum
536      go to 8941
53728930 ivfail = ivfail + 1
538      rvcorr = 1.1111
539      write (i02,80005) ivtnum, rvcomp, rvcorr
540 8941 continue
541      ivtnum = 894
542c
543c      ****  test 894  ****
544c
545      if (iczero) 38940, 8940, 38940
546 8940 continue
547      rvon01 = 28.8
548      rvon02 = 2.88e1
549      rvon03 = 288e-1
550      rvon04 = 35.0
551      rvcomp = amin1 (rvon01,rvon02,rvon03,rvon04)
552      go to 48940
55338940 ivdele = ivdele + 1
554      write (i02,80003) ivtnum
555      if (iczero) 48940, 8951, 48940
55648940 if (rvcomp - 28.795) 28940,18940,48941
55748941 if (rvcomp - 28.805) 18940,18940,28940
55818940 ivpass = ivpass + 1
559      write (i02,80001) ivtnum
560      go to 8951
56128940 ivfail = ivfail + 1
562      rvcorr = 28.800
563      write (i02,80005) ivtnum, rvcomp, rvcorr
564 8951 continue
565c
566c     test 895 through test 897 contain intrinsic function tests for
567c     float - conversion of an integer argument to real function
568c
569      ivtnum = 895
570c
571c      ****  test 895  ****
572c
573      if (iczero) 38950, 8950, 38950
574 8950 continue
575      rvcomp = float (-606)
576      go to 48950
57738950 ivdele = ivdele + 1
578      write (i02,80003) ivtnum
579      if (iczero) 48950, 8961, 48950
58048950 if (rvcomp + 606.05) 28950,18950,48951
58148951 if (rvcomp + 605.95) 18950,18950,28950
58218950 ivpass = ivpass + 1
583      write (i02,80001) ivtnum
584      go to 8961
58528950 ivfail = ivfail + 1
586      rvcorr = -606.00
587      write (i02,80005) ivtnum, rvcomp, rvcorr
588 8961 continue
589      ivtnum = 896
590c
591c      ****  test 896  ****
592c
593      if (iczero) 38960, 8960, 38960
594 8960 continue
595      ivon01 = 71
596      rvcomp = float (ivon01)
597      go to 48960
59838960 ivdele = ivdele + 1
599      write (i02,80003) ivtnum
600      if (iczero) 48960, 8971, 48960
60148960 if (rvcomp - 70.995) 28960,18960,48961
60248961 if (rvcomp - 71.005) 18960,18960,28960
60318960 ivpass = ivpass + 1
604      write (i02,80001) ivtnum
605      go to 8971
60628960 ivfail = ivfail + 1
607      rvcorr = 71.000
608      write (i02,80005) ivtnum, rvcomp, rvcorr
609 8971 continue
610      ivtnum = 897
611c
612c      ****  test 897  ****
613c
614      if (iczero) 38970, 8970, 38970
615 8970 continue
616      ivon01 = 321
617      rvcomp = float (-ivon01)
618      go to 48970
61938970 ivdele = ivdele + 1
620      write (i02,80003) ivtnum
621      if (iczero) 48970, 8981, 48970
62248970 if (rvcomp + 321.05) 28970,18970,48971
62348971 if (rvcomp + 320.95) 18970,18970,28970
62418970 ivpass = ivpass + 1
625      write (i02,80001) ivtnum
626      go to 8981
62728970 ivfail = ivfail + 1
628      rvcorr = -321.00
629      write (i02,80005) ivtnum, rvcomp, rvcorr
630 8981 continue
631c
632c     test 898 through test 900 contain intrinsic function tests for
633c     transfer of sign - both arguments and function are real
634c
635      ivtnum = 898
636c
637c      ****  test 898  ****
638c
639      if (iczero) 38980, 8980, 38980
640 8980 continue
641      rvon01 = 64.3
642      rvcomp = sign (rvon01,-1.0)
643      go to 48980
64438980 ivdele = ivdele + 1
645      write (i02,80003) ivtnum
646      if (iczero) 48980, 8991, 48980
64748980 if (rvcomp + 64.305) 28980,18980,48981
64848981 if (rvcomp + 64.295) 18980,18980,28980
64918980 ivpass = ivpass + 1
650      write (i02,80001) ivtnum
651      go to 8991
65228980 ivfail = ivfail + 1
653      rvcorr = -64.300
654      write (i02,80005) ivtnum, rvcomp, rvcorr
655 8991 continue
656      ivtnum = 899
657c
658c      ****  test 899  ****
659c
660      if (iczero) 38990, 8990, 38990
661 8990 continue
662      rvon01 = -2.2
663      rvon02 = 7.23e1
664      rvcomp = sign (rvon01,rvon02)
665      go to 48990
66638990 ivdele = ivdele + 1
667      write (i02,80003) ivtnum
668      if (iczero) 48990, 9001, 48990
66948990 if (rvcomp - 2.1995) 28990,18990,48991
67048991 if (rvcomp - 2.2005) 18990,18990,28990
67118990 ivpass = ivpass + 1
672      write (i02,80001) ivtnum
673      go to 9001
67428990 ivfail = ivfail + 1
675      rvcorr = 2.2000
676      write (i02,80005) ivtnum, rvcomp, rvcorr
677 9001 continue
678      ivtnum = 900
679c
680c      ****  test 900  ****
681c
682      if (iczero) 39000, 9000, 39000
683 9000 continue
684      rvon01 = 35.32e+1
685      rvon02 = 1.0
686      rvcomp = sign (rvon01,rvon02)
687      go to 49000
68839000 ivdele = ivdele + 1
689      write (i02,80003) ivtnum
690      if (iczero) 49000, 9011, 49000
69149000 if (rvcomp - 353.15) 29000,19000,49001
69249001 if (rvcomp - 353.25) 19000,19000,29000
69319000 ivpass = ivpass + 1
694      write (i02,80001) ivtnum
695      go to 9011
69629000 ivfail = ivfail + 1
697      rvcorr = 353.20
698      write (i02,80005) ivtnum, rvcomp, rvcorr
699 9011 continue
700c
701c     test 901 through test 904 contain intrinsic function tests for
702c     positive difference where arguments and function are real
703c
704      ivtnum = 901
705c
706c      ****  test 901  ****
707c
708      if (iczero) 39010, 9010, 39010
709 9010 continue
710      rvon01 = 22.2
711      rvcomp = dim (rvon01,1.0)
712      go to 49010
71339010 ivdele = ivdele + 1
714      write (i02,80003) ivtnum
715      if (iczero) 49010, 9021, 49010
71649010 if (rvcomp - 21.195) 29010,19010,49011
71749011 if (rvcomp - 21.205) 19010,19010,29010
71819010 ivpass = ivpass + 1
719      write (i02,80001) ivtnum
720      go to 9021
72129010 ivfail = ivfail + 1
722      rvcorr = 21.200
723      write (i02,80005) ivtnum, rvcomp, rvcorr
724 9021 continue
725      ivtnum = 902
726c
727c      ****  test 902  ****
728c
729      if (iczero) 39020, 9020, 39020
730 9020 continue
731      rvon01 = 4.5e1
732      rvon02 = 41.0
733      rvcomp = dim (rvon01,rvon02)
734      go to 49020
73539020 ivdele = ivdele + 1
736      write (i02,80003) ivtnum
737      if (iczero) 49020, 9031, 49020
73849020 if (rvcomp - 3.9995) 29020,19020,49021
73949021 if (rvcomp - 4.0005) 19020,19020,29020
74019020 ivpass = ivpass + 1
741      write (i02,80001) ivtnum
742      go to 9031
74329020 ivfail = ivfail + 1
744      rvcorr = 4.0000
745      write (i02,80005) ivtnum, rvcomp, rvcorr
746 9031 continue
747      ivtnum = 903
748c
749c      ****  test 903  ****
750c
751      if (iczero) 39030, 9030, 39030
752 9030 continue
753      rvon01 = 2.0
754      rvon02 = 10.0
755      rvcomp = dim (rvon01,rvon02)
756      go to 49030
75739030 ivdele = ivdele + 1
758      write (i02,80003) ivtnum
759      if (iczero) 49030, 9041, 49030
76049030 if (rvcomp) 29030,19030,29030
76119030 ivpass = ivpass + 1
762      write (i02,80001) ivtnum
763      go to 9041
76429030 ivfail = ivfail + 1
765      rvcorr = 0.0000
766      write (i02,80005) ivtnum, rvcomp, rvcorr
767 9041 continue
768      ivtnum = 904
769c
770c      ****  test 904  ****
771c
772      if (iczero) 39040, 9040, 39040
773 9040 continue
774      rvon01 = 1.65e+1
775      rvon02 = -2.0
776      rvcomp = dim (rvon01,rvon02)
777      go to 49040
77839040 ivdele = ivdele + 1
779      write (i02,80003) ivtnum
780      if (iczero) 49040, 9051, 49040
78149040 if (rvcomp - 18.495) 29040,19040,49041
78249041 if (rvcomp - 18.505) 19040,19040,29040
78319040 ivpass = ivpass + 1
784      write (i02,80001) ivtnum
785      go to 9051
78629040 ivfail = ivfail + 1
787      rvcorr = 18.500
788      write (i02,80005) ivtnum, rvcomp, rvcorr
789 9051 continue
790c
791c     tests 905 and 906 contain expressions containing more than one
792c     intrinsic function - all arguments and functions are real
793c
794      ivtnum = 905
795c
796c      ****  test 905  ****
797c
798      if (iczero) 39050, 9050, 39050
799 9050 continue
800      rvon01 = 33.3
801      rvon02 = -12.1
802      rvcomp = aint (rvon01) + abs (rvon02)
803      go to 49050
80439050 ivdele = ivdele + 1
805      write (i02,80003) ivtnum
806      if (iczero) 49050, 9061, 49050
80749050 if (rvcomp - 45.095) 29050,19050,49051
80849051 if (rvcomp - 45.105) 19050,19050,29050
80919050 ivpass = ivpass + 1
810      write (i02,80001) ivtnum
811      go to 9061
81229050 ivfail = ivfail + 1
813      rvcorr = 45.100
814      write (i02,80005) ivtnum, rvcomp, rvcorr
815 9061 continue
816      ivtnum = 906
817c
818c      ****  test 906  ****
819c
820      if (iczero) 39060, 9060, 39060
821 9060 continue
822      rvon01 = 76.3
823      rvon02 = 2.1e1
824      rvon03 = 3e1
825      rvcomp = amax1(rvon01,rvon02,rvon03)-amin1(rvon01,rvon02,rvon03)
826      go to 49060
82739060 ivdele = ivdele + 1
828      write (i02,80003) ivtnum
829      if (iczero) 49060, 9071, 49060
83049060 if (rvcomp - 55.295) 29060,19060,49061
83149061 if (rvcomp - 55.305) 19060,19060,29060
83219060 ivpass = ivpass + 1
833      write (i02,80001) ivtnum
834      go to 9071
83529060 ivfail = ivfail + 1
836      rvcorr = 55.300
837      write (i02,80005) ivtnum, rvcomp, rvcorr
838 9071 continue
839c
840c     write page footings and run summaries
84199999 continue
842      write (i02,90002)
843      write (i02,90006)
844      write (i02,90002)
845      write (i02,90002)
846      write (i02,90007)
847      write (i02,90002)
848      write (i02,90008)  ivfail
849      write (i02,90009) ivpass
850      write (i02,90010) ivdele
851c
852c
853c     terminate routine execution
854      stop
855c
856c     format statements for page headers
85790000 format (1h1)
85890002 format (1h )
85990001 format (1h ,10x,34hfortran compiler validation system)
86090003 format (1h ,21x,11hversion 1.0)
86190004 format (1h ,10x,38hfor official use only - copyright 1978)
86290005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
86390006 format (1h ,5x,46h----------------------------------------------)
86490011 format (1h ,18x,17hsubset level test)
865c
866c     format statements for run summaries
86790008 format (1h ,15x,i5,19h errors encountered)
86890009 format (1h ,15x,i5,13h tests passed)
86990010 format (1h ,15x,i5,14h tests deleted)
870c
871c     format statements for test results
87280001 format (1h ,4x,i5,7x,4hpass)
87380002 format (1h ,4x,i5,7x,4hfail)
87480003 format (1h ,4x,i5,7x,7hdeleted)
87580004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
87680005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
877c
87890007 format (1h ,20x,20hend of program fm097)
879      end
880