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