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