534 character(*),
intent(in):: message
535 character(*),
intent(in):: answer
536 character(*),
intent(in):: check
538 character(STRING):: pos_str
539 character(STRING):: wrong, right
550 err_flag = .not. trim(answer) == trim(check)
559 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 561 write(*,*)
' check' // trim(pos_str) //
' = ', trim(wrong)
562 write(*,*)
' is NOT EQUAL to' 563 write(*,*)
' answer' // trim(pos_str) //
' = ', trim(right)
567 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 578 character(*),
intent(in):: message
579 character(*),
intent(in):: answer(:)
580 character(*),
intent(in):: check(:)
582 character(STRING):: pos_str
583 character(STRING):: wrong, right
585 integer:: answer_shape(1), check_shape(1), pos(1)
586 logical:: consist_shape(1)
587 character(TOKEN):: pos_array(1)
588 integer,
allocatable:: mask_array(:)
589 logical,
allocatable:: judge(:)
590 logical,
allocatable:: judge_rev(:)
593 character(STRING),
allocatable:: answer_fixed_length(:)
594 character(STRING),
allocatable:: check_fixed_length(:)
602 answer_shape = shape(answer)
603 check_shape = shape(check)
605 consist_shape = answer_shape == check_shape
607 if (.not. all(consist_shape))
then 608 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 610 write(*,*)
' shape of check is (', check_shape,
')' 611 write(*,*)
' is INCORRECT' 612 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 618 allocate( mask_array( &
620 & answer_shape(1) ) &
625 & answer_shape(1) ) &
628 allocate( judge_rev( &
630 & answer_shape(1) ) &
634 allocate( answer_fixed_length( &
636 & answer_shape(1) ) &
639 allocate( check_fixed_length( &
644 answer_fixed_length = answer
645 check_fixed_length = check
647 judge = answer_fixed_length == check_fixed_length
648 deallocate(answer_fixed_length, check_fixed_length)
652 judge_rev = .not. judge
653 err_flag = any(judge_rev)
655 pos = maxloc(mask_array, judge_rev)
667 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
672 & trim(adjustl(pos_array(1))) //
')' 675 deallocate(mask_array, judge, judge_rev)
681 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 683 write(*,*)
' check' // trim(pos_str) //
' = ', trim(wrong)
684 write(*,*)
' is NOT EQUAL to' 685 write(*,*)
' answer' // trim(pos_str) //
' = ', trim(right)
689 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 700 character(*),
intent(in):: message
701 character(*),
intent(in):: answer(:,:)
702 character(*),
intent(in):: check(:,:)
704 character(STRING):: pos_str
705 character(STRING):: wrong, right
707 integer:: answer_shape(2), check_shape(2), pos(2)
708 logical:: consist_shape(2)
709 character(TOKEN):: pos_array(2)
710 integer,
allocatable:: mask_array(:,:)
711 logical,
allocatable:: judge(:,:)
712 logical,
allocatable:: judge_rev(:,:)
715 character(STRING),
allocatable:: answer_fixed_length(:,:)
716 character(STRING),
allocatable:: check_fixed_length(:,:)
724 answer_shape = shape(answer)
725 check_shape = shape(check)
727 consist_shape = answer_shape == check_shape
729 if (.not. all(consist_shape))
then 730 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 732 write(*,*)
' shape of check is (', check_shape,
')' 733 write(*,*)
' is INCORRECT' 734 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 740 allocate( mask_array( &
743 & answer_shape(2) ) &
749 & answer_shape(2) ) &
752 allocate( judge_rev( &
755 & answer_shape(2) ) &
759 allocate( answer_fixed_length( &
762 & answer_shape(2) ) &
765 allocate( check_fixed_length( &
771 answer_fixed_length = answer
772 check_fixed_length = check
774 judge = answer_fixed_length == check_fixed_length
775 deallocate(answer_fixed_length, check_fixed_length)
779 judge_rev = .not. judge
780 err_flag = any(judge_rev)
782 pos = maxloc(mask_array, judge_rev)
796 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
798 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
802 & trim(adjustl(pos_array(1))) //
',' // &
804 & trim(adjustl(pos_array(2))) //
')' 807 deallocate(mask_array, judge, judge_rev)
813 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 815 write(*,*)
' check' // trim(pos_str) //
' = ', trim(wrong)
816 write(*,*)
' is NOT EQUAL to' 817 write(*,*)
' answer' // trim(pos_str) //
' = ', trim(right)
821 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 832 character(*),
intent(in):: message
833 character(*),
intent(in):: answer(:,:,:)
834 character(*),
intent(in):: check(:,:,:)
836 character(STRING):: pos_str
837 character(STRING):: wrong, right
839 integer:: answer_shape(3), check_shape(3), pos(3)
840 logical:: consist_shape(3)
841 character(TOKEN):: pos_array(3)
842 integer,
allocatable:: mask_array(:,:,:)
843 logical,
allocatable:: judge(:,:,:)
844 logical,
allocatable:: judge_rev(:,:,:)
847 character(STRING),
allocatable:: answer_fixed_length(:,:,:)
848 character(STRING),
allocatable:: check_fixed_length(:,:,:)
856 answer_shape = shape(answer)
857 check_shape = shape(check)
859 consist_shape = answer_shape == check_shape
861 if (.not. all(consist_shape))
then 862 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 864 write(*,*)
' shape of check is (', check_shape,
')' 865 write(*,*)
' is INCORRECT' 866 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 872 allocate( mask_array( &
877 & answer_shape(3) ) &
885 & answer_shape(3) ) &
888 allocate( judge_rev( &
893 & answer_shape(3) ) &
897 allocate( answer_fixed_length( &
902 & answer_shape(3) ) &
905 allocate( check_fixed_length( &
913 answer_fixed_length = answer
914 check_fixed_length = check
916 judge = answer_fixed_length == check_fixed_length
917 deallocate(answer_fixed_length, check_fixed_length)
921 judge_rev = .not. judge
922 err_flag = any(judge_rev)
924 pos = maxloc(mask_array, judge_rev)
942 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
944 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
946 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
950 & trim(adjustl(pos_array(1))) //
',' // &
952 & trim(adjustl(pos_array(2))) //
',' // &
954 & trim(adjustl(pos_array(3))) //
')' 957 deallocate(mask_array, judge, judge_rev)
963 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 965 write(*,*)
' check' // trim(pos_str) //
' = ', trim(wrong)
966 write(*,*)
' is NOT EQUAL to' 967 write(*,*)
' answer' // trim(pos_str) //
' = ', trim(right)
971 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 982 character(*),
intent(in):: message
983 character(*),
intent(in):: answer(:,:,:,:)
984 character(*),
intent(in):: check(:,:,:,:)
986 character(STRING):: pos_str
987 character(STRING):: wrong, right
989 integer:: answer_shape(4), check_shape(4), pos(4)
990 logical:: consist_shape(4)
991 character(TOKEN):: pos_array(4)
992 integer,
allocatable:: mask_array(:,:,:,:)
993 logical,
allocatable:: judge(:,:,:,:)
994 logical,
allocatable:: judge_rev(:,:,:,:)
997 character(STRING),
allocatable:: answer_fixed_length(:,:,:,:)
998 character(STRING),
allocatable:: check_fixed_length(:,:,:,:)
1006 answer_shape = shape(answer)
1007 check_shape = shape(check)
1009 consist_shape = answer_shape == check_shape
1011 if (.not. all(consist_shape))
then 1012 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1014 write(*,*)
' shape of check is (', check_shape,
')' 1015 write(*,*)
' is INCORRECT' 1016 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 1022 allocate( mask_array( &
1023 & answer_shape(1), &
1025 & answer_shape(2), &
1027 & answer_shape(3), &
1029 & answer_shape(4) ) &
1033 & answer_shape(1), &
1035 & answer_shape(2), &
1037 & answer_shape(3), &
1039 & answer_shape(4) ) &
1042 allocate( judge_rev( &
1043 & answer_shape(1), &
1045 & answer_shape(2), &
1047 & answer_shape(3), &
1049 & answer_shape(4) ) &
1053 allocate( answer_fixed_length( &
1054 & answer_shape(1), &
1056 & answer_shape(2), &
1058 & answer_shape(3), &
1060 & answer_shape(4) ) &
1063 allocate( check_fixed_length( &
1070 & check_shape(4) ) &
1073 answer_fixed_length = answer
1074 check_fixed_length = check
1076 judge = answer_fixed_length == check_fixed_length
1077 deallocate(answer_fixed_length, check_fixed_length)
1081 judge_rev = .not. judge
1082 err_flag = any(judge_rev)
1084 pos = maxloc(mask_array, judge_rev)
1106 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
1108 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
1110 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
1112 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
1116 & trim(adjustl(pos_array(1))) //
',' // &
1118 & trim(adjustl(pos_array(2))) //
',' // &
1120 & trim(adjustl(pos_array(3))) //
',' // &
1122 & trim(adjustl(pos_array(4))) //
')' 1125 deallocate(mask_array, judge, judge_rev)
1131 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1133 write(*,*)
' check' // trim(pos_str) //
' = ', trim(wrong)
1134 write(*,*)
' is NOT EQUAL to' 1135 write(*,*)
' answer' // trim(pos_str) //
' = ', trim(right)
1139 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 1150 character(*),
intent(in):: message
1151 character(*),
intent(in):: answer(:,:,:,:,:)
1152 character(*),
intent(in):: check(:,:,:,:,:)
1154 character(STRING):: pos_str
1155 character(STRING):: wrong, right
1157 integer:: answer_shape(5), check_shape(5), pos(5)
1158 logical:: consist_shape(5)
1159 character(TOKEN):: pos_array(5)
1160 integer,
allocatable:: mask_array(:,:,:,:,:)
1161 logical,
allocatable:: judge(:,:,:,:,:)
1162 logical,
allocatable:: judge_rev(:,:,:,:,:)
1165 character(STRING),
allocatable:: answer_fixed_length(:,:,:,:,:)
1166 character(STRING),
allocatable:: check_fixed_length(:,:,:,:,:)
1174 answer_shape = shape(answer)
1175 check_shape = shape(check)
1177 consist_shape = answer_shape == check_shape
1179 if (.not. all(consist_shape))
then 1180 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1182 write(*,*)
' shape of check is (', check_shape,
')' 1183 write(*,*)
' is INCORRECT' 1184 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 1190 allocate( mask_array( &
1191 & answer_shape(1), &
1193 & answer_shape(2), &
1195 & answer_shape(3), &
1197 & answer_shape(4), &
1199 & answer_shape(5) ) &
1203 & answer_shape(1), &
1205 & answer_shape(2), &
1207 & answer_shape(3), &
1209 & answer_shape(4), &
1211 & answer_shape(5) ) &
1214 allocate( judge_rev( &
1215 & answer_shape(1), &
1217 & answer_shape(2), &
1219 & answer_shape(3), &
1221 & answer_shape(4), &
1223 & answer_shape(5) ) &
1227 allocate( answer_fixed_length( &
1228 & answer_shape(1), &
1230 & answer_shape(2), &
1232 & answer_shape(3), &
1234 & answer_shape(4), &
1236 & answer_shape(5) ) &
1239 allocate( check_fixed_length( &
1248 & check_shape(5) ) &
1251 answer_fixed_length = answer
1252 check_fixed_length = check
1254 judge = answer_fixed_length == check_fixed_length
1255 deallocate(answer_fixed_length, check_fixed_length)
1259 judge_rev = .not. judge
1260 err_flag = any(judge_rev)
1262 pos = maxloc(mask_array, judge_rev)
1288 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
1290 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
1292 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
1294 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
1296 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
1300 & trim(adjustl(pos_array(1))) //
',' // &
1302 & trim(adjustl(pos_array(2))) //
',' // &
1304 & trim(adjustl(pos_array(3))) //
',' // &
1306 & trim(adjustl(pos_array(4))) //
',' // &
1308 & trim(adjustl(pos_array(5))) //
')' 1311 deallocate(mask_array, judge, judge_rev)
1317 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1319 write(*,*)
' check' // trim(pos_str) //
' = ', trim(wrong)
1320 write(*,*)
' is NOT EQUAL to' 1321 write(*,*)
' answer' // trim(pos_str) //
' = ', trim(right)
1325 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 1336 character(*),
intent(in):: message
1337 character(*),
intent(in):: answer(:,:,:,:,:,:)
1338 character(*),
intent(in):: check(:,:,:,:,:,:)
1340 character(STRING):: pos_str
1341 character(STRING):: wrong, right
1343 integer:: answer_shape(6), check_shape(6), pos(6)
1344 logical:: consist_shape(6)
1345 character(TOKEN):: pos_array(6)
1346 integer,
allocatable:: mask_array(:,:,:,:,:,:)
1347 logical,
allocatable:: judge(:,:,:,:,:,:)
1348 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
1351 character(STRING),
allocatable:: answer_fixed_length(:,:,:,:,:,:)
1352 character(STRING),
allocatable:: check_fixed_length(:,:,:,:,:,:)
1360 answer_shape = shape(answer)
1361 check_shape = shape(check)
1363 consist_shape = answer_shape == check_shape
1365 if (.not. all(consist_shape))
then 1366 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1368 write(*,*)
' shape of check is (', check_shape,
')' 1369 write(*,*)
' is INCORRECT' 1370 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 1376 allocate( mask_array( &
1377 & answer_shape(1), &
1379 & answer_shape(2), &
1381 & answer_shape(3), &
1383 & answer_shape(4), &
1385 & answer_shape(5), &
1387 & answer_shape(6) ) &
1391 & answer_shape(1), &
1393 & answer_shape(2), &
1395 & answer_shape(3), &
1397 & answer_shape(4), &
1399 & answer_shape(5), &
1401 & answer_shape(6) ) &
1404 allocate( judge_rev( &
1405 & answer_shape(1), &
1407 & answer_shape(2), &
1409 & answer_shape(3), &
1411 & answer_shape(4), &
1413 & answer_shape(5), &
1415 & answer_shape(6) ) &
1419 allocate( answer_fixed_length( &
1420 & answer_shape(1), &
1422 & answer_shape(2), &
1424 & answer_shape(3), &
1426 & answer_shape(4), &
1428 & answer_shape(5), &
1430 & answer_shape(6) ) &
1433 allocate( check_fixed_length( &
1444 & check_shape(6) ) &
1447 answer_fixed_length = answer
1448 check_fixed_length = check
1450 judge = answer_fixed_length == check_fixed_length
1451 deallocate(answer_fixed_length, check_fixed_length)
1455 judge_rev = .not. judge
1456 err_flag = any(judge_rev)
1458 pos = maxloc(mask_array, judge_rev)
1488 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
1490 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
1492 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
1494 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
1496 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
1498 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
1502 & trim(adjustl(pos_array(1))) //
',' // &
1504 & trim(adjustl(pos_array(2))) //
',' // &
1506 & trim(adjustl(pos_array(3))) //
',' // &
1508 & trim(adjustl(pos_array(4))) //
',' // &
1510 & trim(adjustl(pos_array(5))) //
',' // &
1512 & trim(adjustl(pos_array(6))) //
')' 1515 deallocate(mask_array, judge, judge_rev)
1521 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1523 write(*,*)
' check' // trim(pos_str) //
' = ', trim(wrong)
1524 write(*,*)
' is NOT EQUAL to' 1525 write(*,*)
' answer' // trim(pos_str) //
' = ', trim(right)
1529 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 1540 character(*),
intent(in):: message
1541 character(*),
intent(in):: answer(:,:,:,:,:,:,:)
1542 character(*),
intent(in):: check(:,:,:,:,:,:,:)
1544 character(STRING):: pos_str
1545 character(STRING):: wrong, right
1547 integer:: answer_shape(7), check_shape(7), pos(7)
1548 logical:: consist_shape(7)
1549 character(TOKEN):: pos_array(7)
1550 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
1551 logical,
allocatable:: judge(:,:,:,:,:,:,:)
1552 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
1555 character(STRING),
allocatable:: answer_fixed_length(:,:,:,:,:,:,:)
1556 character(STRING),
allocatable:: check_fixed_length(:,:,:,:,:,:,:)
1564 answer_shape = shape(answer)
1565 check_shape = shape(check)
1567 consist_shape = answer_shape == check_shape
1569 if (.not. all(consist_shape))
then 1570 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1572 write(*,*)
' shape of check is (', check_shape,
')' 1573 write(*,*)
' is INCORRECT' 1574 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 1580 allocate( mask_array( &
1581 & answer_shape(1), &
1583 & answer_shape(2), &
1585 & answer_shape(3), &
1587 & answer_shape(4), &
1589 & answer_shape(5), &
1591 & answer_shape(6), &
1593 & answer_shape(7) ) &
1597 & answer_shape(1), &
1599 & answer_shape(2), &
1601 & answer_shape(3), &
1603 & answer_shape(4), &
1605 & answer_shape(5), &
1607 & answer_shape(6), &
1609 & answer_shape(7) ) &
1612 allocate( judge_rev( &
1613 & answer_shape(1), &
1615 & answer_shape(2), &
1617 & answer_shape(3), &
1619 & answer_shape(4), &
1621 & answer_shape(5), &
1623 & answer_shape(6), &
1625 & answer_shape(7) ) &
1629 allocate( answer_fixed_length( &
1630 & answer_shape(1), &
1632 & answer_shape(2), &
1634 & answer_shape(3), &
1636 & answer_shape(4), &
1638 & answer_shape(5), &
1640 & answer_shape(6), &
1642 & answer_shape(7) ) &
1645 allocate( check_fixed_length( &
1658 & check_shape(7) ) &
1661 answer_fixed_length = answer
1662 check_fixed_length = check
1664 judge = answer_fixed_length == check_fixed_length
1665 deallocate(answer_fixed_length, check_fixed_length)
1669 judge_rev = .not. judge
1670 err_flag = any(judge_rev)
1672 pos = maxloc(mask_array, judge_rev)
1706 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
1708 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
1710 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
1712 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
1714 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
1716 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
1718 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
1722 & trim(adjustl(pos_array(1))) //
',' // &
1724 & trim(adjustl(pos_array(2))) //
',' // &
1726 & trim(adjustl(pos_array(3))) //
',' // &
1728 & trim(adjustl(pos_array(4))) //
',' // &
1730 & trim(adjustl(pos_array(5))) //
',' // &
1732 & trim(adjustl(pos_array(6))) //
',' // &
1734 & trim(adjustl(pos_array(7))) //
')' 1737 deallocate(mask_array, judge, judge_rev)
1743 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1745 write(*,*)
' check' // trim(pos_str) //
' = ', trim(wrong)
1746 write(*,*)
' is NOT EQUAL to' 1747 write(*,*)
' answer' // trim(pos_str) //
' = ', trim(right)
1751 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 1762 character(*),
intent(in):: message
1763 integer,
intent(in):: answer
1764 integer,
intent(in):: check
1766 character(STRING):: pos_str
1767 integer:: wrong, right
1777 err_flag = .not. answer == check
1786 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1788 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
1789 write(*,*)
' is NOT EQUAL to' 1790 write(*,*)
' answer' // trim(pos_str) //
' = ', right
1794 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 1805 character(*),
intent(in):: message
1806 integer,
intent(in):: answer(:)
1807 integer,
intent(in):: check(:)
1809 character(STRING):: pos_str
1810 integer:: wrong, right
1812 integer:: answer_shape(1), check_shape(1), pos(1)
1813 logical:: consist_shape(1)
1814 character(TOKEN):: pos_array(1)
1815 integer,
allocatable:: mask_array(:)
1816 logical,
allocatable:: judge(:)
1817 logical,
allocatable:: judge_rev(:)
1826 answer_shape = shape(answer)
1827 check_shape = shape(check)
1829 consist_shape = answer_shape == check_shape
1831 if (.not. all(consist_shape))
then 1832 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1834 write(*,*)
' shape of check is (', check_shape,
')' 1835 write(*,*)
' is INCORRECT' 1836 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 1842 allocate( mask_array( &
1844 & answer_shape(1) ) &
1849 & answer_shape(1) ) &
1852 allocate( judge_rev( &
1854 & answer_shape(1) ) &
1858 judge = answer == check
1862 judge_rev = .not. judge
1863 err_flag = any(judge_rev)
1865 pos = maxloc(mask_array, judge_rev)
1877 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
1882 & trim(adjustl(pos_array(1))) //
')' 1885 deallocate(mask_array, judge, judge_rev)
1891 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1893 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
1894 write(*,*)
' is NOT EQUAL to' 1895 write(*,*)
' answer' // trim(pos_str) //
' = ', right
1899 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 1910 character(*),
intent(in):: message
1911 integer,
intent(in):: answer(:,:)
1912 integer,
intent(in):: check(:,:)
1914 character(STRING):: pos_str
1915 integer:: wrong, right
1917 integer:: answer_shape(2), check_shape(2), pos(2)
1918 logical:: consist_shape(2)
1919 character(TOKEN):: pos_array(2)
1920 integer,
allocatable:: mask_array(:,:)
1921 logical,
allocatable:: judge(:,:)
1922 logical,
allocatable:: judge_rev(:,:)
1931 answer_shape = shape(answer)
1932 check_shape = shape(check)
1934 consist_shape = answer_shape == check_shape
1936 if (.not. all(consist_shape))
then 1937 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 1939 write(*,*)
' shape of check is (', check_shape,
')' 1940 write(*,*)
' is INCORRECT' 1941 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 1947 allocate( mask_array( &
1948 & answer_shape(1), &
1950 & answer_shape(2) ) &
1954 & answer_shape(1), &
1956 & answer_shape(2) ) &
1959 allocate( judge_rev( &
1960 & answer_shape(1), &
1962 & answer_shape(2) ) &
1966 judge = answer == check
1970 judge_rev = .not. judge
1971 err_flag = any(judge_rev)
1973 pos = maxloc(mask_array, judge_rev)
1987 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
1989 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
1993 & trim(adjustl(pos_array(1))) //
',' // &
1995 & trim(adjustl(pos_array(2))) //
')' 1998 deallocate(mask_array, judge, judge_rev)
2004 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2006 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
2007 write(*,*)
' is NOT EQUAL to' 2008 write(*,*)
' answer' // trim(pos_str) //
' = ', right
2012 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 2023 character(*),
intent(in):: message
2024 integer,
intent(in):: answer(:,:,:)
2025 integer,
intent(in):: check(:,:,:)
2027 character(STRING):: pos_str
2028 integer:: wrong, right
2030 integer:: answer_shape(3), check_shape(3), pos(3)
2031 logical:: consist_shape(3)
2032 character(TOKEN):: pos_array(3)
2033 integer,
allocatable:: mask_array(:,:,:)
2034 logical,
allocatable:: judge(:,:,:)
2035 logical,
allocatable:: judge_rev(:,:,:)
2044 answer_shape = shape(answer)
2045 check_shape = shape(check)
2047 consist_shape = answer_shape == check_shape
2049 if (.not. all(consist_shape))
then 2050 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2052 write(*,*)
' shape of check is (', check_shape,
')' 2053 write(*,*)
' is INCORRECT' 2054 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 2060 allocate( mask_array( &
2061 & answer_shape(1), &
2063 & answer_shape(2), &
2065 & answer_shape(3) ) &
2069 & answer_shape(1), &
2071 & answer_shape(2), &
2073 & answer_shape(3) ) &
2076 allocate( judge_rev( &
2077 & answer_shape(1), &
2079 & answer_shape(2), &
2081 & answer_shape(3) ) &
2085 judge = answer == check
2089 judge_rev = .not. judge
2090 err_flag = any(judge_rev)
2092 pos = maxloc(mask_array, judge_rev)
2110 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
2112 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
2114 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
2118 & trim(adjustl(pos_array(1))) //
',' // &
2120 & trim(adjustl(pos_array(2))) //
',' // &
2122 & trim(adjustl(pos_array(3))) //
')' 2125 deallocate(mask_array, judge, judge_rev)
2131 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2133 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
2134 write(*,*)
' is NOT EQUAL to' 2135 write(*,*)
' answer' // trim(pos_str) //
' = ', right
2139 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 2150 character(*),
intent(in):: message
2151 integer,
intent(in):: answer(:,:,:,:)
2152 integer,
intent(in):: check(:,:,:,:)
2154 character(STRING):: pos_str
2155 integer:: wrong, right
2157 integer:: answer_shape(4), check_shape(4), pos(4)
2158 logical:: consist_shape(4)
2159 character(TOKEN):: pos_array(4)
2160 integer,
allocatable:: mask_array(:,:,:,:)
2161 logical,
allocatable:: judge(:,:,:,:)
2162 logical,
allocatable:: judge_rev(:,:,:,:)
2171 answer_shape = shape(answer)
2172 check_shape = shape(check)
2174 consist_shape = answer_shape == check_shape
2176 if (.not. all(consist_shape))
then 2177 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2179 write(*,*)
' shape of check is (', check_shape,
')' 2180 write(*,*)
' is INCORRECT' 2181 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 2187 allocate( mask_array( &
2188 & answer_shape(1), &
2190 & answer_shape(2), &
2192 & answer_shape(3), &
2194 & answer_shape(4) ) &
2198 & answer_shape(1), &
2200 & answer_shape(2), &
2202 & answer_shape(3), &
2204 & answer_shape(4) ) &
2207 allocate( judge_rev( &
2208 & answer_shape(1), &
2210 & answer_shape(2), &
2212 & answer_shape(3), &
2214 & answer_shape(4) ) &
2218 judge = answer == check
2222 judge_rev = .not. judge
2223 err_flag = any(judge_rev)
2225 pos = maxloc(mask_array, judge_rev)
2247 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
2249 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
2251 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
2253 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
2257 & trim(adjustl(pos_array(1))) //
',' // &
2259 & trim(adjustl(pos_array(2))) //
',' // &
2261 & trim(adjustl(pos_array(3))) //
',' // &
2263 & trim(adjustl(pos_array(4))) //
')' 2266 deallocate(mask_array, judge, judge_rev)
2272 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2274 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
2275 write(*,*)
' is NOT EQUAL to' 2276 write(*,*)
' answer' // trim(pos_str) //
' = ', right
2280 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 2291 character(*),
intent(in):: message
2292 integer,
intent(in):: answer(:,:,:,:,:)
2293 integer,
intent(in):: check(:,:,:,:,:)
2295 character(STRING):: pos_str
2296 integer:: wrong, right
2298 integer:: answer_shape(5), check_shape(5), pos(5)
2299 logical:: consist_shape(5)
2300 character(TOKEN):: pos_array(5)
2301 integer,
allocatable:: mask_array(:,:,:,:,:)
2302 logical,
allocatable:: judge(:,:,:,:,:)
2303 logical,
allocatable:: judge_rev(:,:,:,:,:)
2312 answer_shape = shape(answer)
2313 check_shape = shape(check)
2315 consist_shape = answer_shape == check_shape
2317 if (.not. all(consist_shape))
then 2318 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2320 write(*,*)
' shape of check is (', check_shape,
')' 2321 write(*,*)
' is INCORRECT' 2322 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 2328 allocate( mask_array( &
2329 & answer_shape(1), &
2331 & answer_shape(2), &
2333 & answer_shape(3), &
2335 & answer_shape(4), &
2337 & answer_shape(5) ) &
2341 & answer_shape(1), &
2343 & answer_shape(2), &
2345 & answer_shape(3), &
2347 & answer_shape(4), &
2349 & answer_shape(5) ) &
2352 allocate( judge_rev( &
2353 & answer_shape(1), &
2355 & answer_shape(2), &
2357 & answer_shape(3), &
2359 & answer_shape(4), &
2361 & answer_shape(5) ) &
2365 judge = answer == check
2369 judge_rev = .not. judge
2370 err_flag = any(judge_rev)
2372 pos = maxloc(mask_array, judge_rev)
2398 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
2400 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
2402 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
2404 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
2406 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
2410 & trim(adjustl(pos_array(1))) //
',' // &
2412 & trim(adjustl(pos_array(2))) //
',' // &
2414 & trim(adjustl(pos_array(3))) //
',' // &
2416 & trim(adjustl(pos_array(4))) //
',' // &
2418 & trim(adjustl(pos_array(5))) //
')' 2421 deallocate(mask_array, judge, judge_rev)
2427 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2429 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
2430 write(*,*)
' is NOT EQUAL to' 2431 write(*,*)
' answer' // trim(pos_str) //
' = ', right
2435 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 2446 character(*),
intent(in):: message
2447 integer,
intent(in):: answer(:,:,:,:,:,:)
2448 integer,
intent(in):: check(:,:,:,:,:,:)
2450 character(STRING):: pos_str
2451 integer:: wrong, right
2453 integer:: answer_shape(6), check_shape(6), pos(6)
2454 logical:: consist_shape(6)
2455 character(TOKEN):: pos_array(6)
2456 integer,
allocatable:: mask_array(:,:,:,:,:,:)
2457 logical,
allocatable:: judge(:,:,:,:,:,:)
2458 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
2467 answer_shape = shape(answer)
2468 check_shape = shape(check)
2470 consist_shape = answer_shape == check_shape
2472 if (.not. all(consist_shape))
then 2473 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2475 write(*,*)
' shape of check is (', check_shape,
')' 2476 write(*,*)
' is INCORRECT' 2477 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 2483 allocate( mask_array( &
2484 & answer_shape(1), &
2486 & answer_shape(2), &
2488 & answer_shape(3), &
2490 & answer_shape(4), &
2492 & answer_shape(5), &
2494 & answer_shape(6) ) &
2498 & answer_shape(1), &
2500 & answer_shape(2), &
2502 & answer_shape(3), &
2504 & answer_shape(4), &
2506 & answer_shape(5), &
2508 & answer_shape(6) ) &
2511 allocate( judge_rev( &
2512 & answer_shape(1), &
2514 & answer_shape(2), &
2516 & answer_shape(3), &
2518 & answer_shape(4), &
2520 & answer_shape(5), &
2522 & answer_shape(6) ) &
2526 judge = answer == check
2530 judge_rev = .not. judge
2531 err_flag = any(judge_rev)
2533 pos = maxloc(mask_array, judge_rev)
2563 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
2565 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
2567 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
2569 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
2571 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
2573 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
2577 & trim(adjustl(pos_array(1))) //
',' // &
2579 & trim(adjustl(pos_array(2))) //
',' // &
2581 & trim(adjustl(pos_array(3))) //
',' // &
2583 & trim(adjustl(pos_array(4))) //
',' // &
2585 & trim(adjustl(pos_array(5))) //
',' // &
2587 & trim(adjustl(pos_array(6))) //
')' 2590 deallocate(mask_array, judge, judge_rev)
2596 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2598 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
2599 write(*,*)
' is NOT EQUAL to' 2600 write(*,*)
' answer' // trim(pos_str) //
' = ', right
2604 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 2615 character(*),
intent(in):: message
2616 integer,
intent(in):: answer(:,:,:,:,:,:,:)
2617 integer,
intent(in):: check(:,:,:,:,:,:,:)
2619 character(STRING):: pos_str
2620 integer:: wrong, right
2622 integer:: answer_shape(7), check_shape(7), pos(7)
2623 logical:: consist_shape(7)
2624 character(TOKEN):: pos_array(7)
2625 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
2626 logical,
allocatable:: judge(:,:,:,:,:,:,:)
2627 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
2636 answer_shape = shape(answer)
2637 check_shape = shape(check)
2639 consist_shape = answer_shape == check_shape
2641 if (.not. all(consist_shape))
then 2642 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2644 write(*,*)
' shape of check is (', check_shape,
')' 2645 write(*,*)
' is INCORRECT' 2646 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 2652 allocate( mask_array( &
2653 & answer_shape(1), &
2655 & answer_shape(2), &
2657 & answer_shape(3), &
2659 & answer_shape(4), &
2661 & answer_shape(5), &
2663 & answer_shape(6), &
2665 & answer_shape(7) ) &
2669 & answer_shape(1), &
2671 & answer_shape(2), &
2673 & answer_shape(3), &
2675 & answer_shape(4), &
2677 & answer_shape(5), &
2679 & answer_shape(6), &
2681 & answer_shape(7) ) &
2684 allocate( judge_rev( &
2685 & answer_shape(1), &
2687 & answer_shape(2), &
2689 & answer_shape(3), &
2691 & answer_shape(4), &
2693 & answer_shape(5), &
2695 & answer_shape(6), &
2697 & answer_shape(7) ) &
2701 judge = answer == check
2705 judge_rev = .not. judge
2706 err_flag = any(judge_rev)
2708 pos = maxloc(mask_array, judge_rev)
2742 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
2744 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
2746 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
2748 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
2750 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
2752 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
2754 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
2758 & trim(adjustl(pos_array(1))) //
',' // &
2760 & trim(adjustl(pos_array(2))) //
',' // &
2762 & trim(adjustl(pos_array(3))) //
',' // &
2764 & trim(adjustl(pos_array(4))) //
',' // &
2766 & trim(adjustl(pos_array(5))) //
',' // &
2768 & trim(adjustl(pos_array(6))) //
',' // &
2770 & trim(adjustl(pos_array(7))) //
')' 2773 deallocate(mask_array, judge, judge_rev)
2779 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2781 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
2782 write(*,*)
' is NOT EQUAL to' 2783 write(*,*)
' answer' // trim(pos_str) //
' = ', right
2787 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 2798 character(*),
intent(in):: message
2799 real,
intent(in):: answer
2800 real,
intent(in):: check
2802 character(STRING):: pos_str
2813 err_flag = .not. answer == check
2822 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2824 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
2825 write(*,*)
' is NOT EQUAL to' 2826 write(*,*)
' answer' // trim(pos_str) //
' = ', right
2830 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 2841 character(*),
intent(in):: message
2842 real,
intent(in):: answer(:)
2843 real,
intent(in):: check(:)
2845 character(STRING):: pos_str
2848 integer:: answer_shape(1), check_shape(1), pos(1)
2849 logical:: consist_shape(1)
2850 character(TOKEN):: pos_array(1)
2851 integer,
allocatable:: mask_array(:)
2852 logical,
allocatable:: judge(:)
2853 logical,
allocatable:: judge_rev(:)
2862 answer_shape = shape(answer)
2863 check_shape = shape(check)
2865 consist_shape = answer_shape == check_shape
2867 if (.not. all(consist_shape))
then 2868 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2870 write(*,*)
' shape of check is (', check_shape,
')' 2871 write(*,*)
' is INCORRECT' 2872 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 2878 allocate( mask_array( &
2880 & answer_shape(1) ) &
2885 & answer_shape(1) ) &
2888 allocate( judge_rev( &
2890 & answer_shape(1) ) &
2894 judge = answer == check
2898 judge_rev = .not. judge
2899 err_flag = any(judge_rev)
2901 pos = maxloc(mask_array, judge_rev)
2913 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
2918 & trim(adjustl(pos_array(1))) //
')' 2921 deallocate(mask_array, judge, judge_rev)
2927 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2929 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
2930 write(*,*)
' is NOT EQUAL to' 2931 write(*,*)
' answer' // trim(pos_str) //
' = ', right
2935 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 2946 character(*),
intent(in):: message
2947 real,
intent(in):: answer(:,:)
2948 real,
intent(in):: check(:,:)
2950 character(STRING):: pos_str
2953 integer:: answer_shape(2), check_shape(2), pos(2)
2954 logical:: consist_shape(2)
2955 character(TOKEN):: pos_array(2)
2956 integer,
allocatable:: mask_array(:,:)
2957 logical,
allocatable:: judge(:,:)
2958 logical,
allocatable:: judge_rev(:,:)
2967 answer_shape = shape(answer)
2968 check_shape = shape(check)
2970 consist_shape = answer_shape == check_shape
2972 if (.not. all(consist_shape))
then 2973 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 2975 write(*,*)
' shape of check is (', check_shape,
')' 2976 write(*,*)
' is INCORRECT' 2977 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 2983 allocate( mask_array( &
2984 & answer_shape(1), &
2986 & answer_shape(2) ) &
2990 & answer_shape(1), &
2992 & answer_shape(2) ) &
2995 allocate( judge_rev( &
2996 & answer_shape(1), &
2998 & answer_shape(2) ) &
3002 judge = answer == check
3006 judge_rev = .not. judge
3007 err_flag = any(judge_rev)
3009 pos = maxloc(mask_array, judge_rev)
3023 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
3025 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
3029 & trim(adjustl(pos_array(1))) //
',' // &
3031 & trim(adjustl(pos_array(2))) //
')' 3034 deallocate(mask_array, judge, judge_rev)
3040 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3042 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
3043 write(*,*)
' is NOT EQUAL to' 3044 write(*,*)
' answer' // trim(pos_str) //
' = ', right
3048 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 3059 character(*),
intent(in):: message
3060 real,
intent(in):: answer(:,:,:)
3061 real,
intent(in):: check(:,:,:)
3063 character(STRING):: pos_str
3066 integer:: answer_shape(3), check_shape(3), pos(3)
3067 logical:: consist_shape(3)
3068 character(TOKEN):: pos_array(3)
3069 integer,
allocatable:: mask_array(:,:,:)
3070 logical,
allocatable:: judge(:,:,:)
3071 logical,
allocatable:: judge_rev(:,:,:)
3080 answer_shape = shape(answer)
3081 check_shape = shape(check)
3083 consist_shape = answer_shape == check_shape
3085 if (.not. all(consist_shape))
then 3086 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3088 write(*,*)
' shape of check is (', check_shape,
')' 3089 write(*,*)
' is INCORRECT' 3090 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 3096 allocate( mask_array( &
3097 & answer_shape(1), &
3099 & answer_shape(2), &
3101 & answer_shape(3) ) &
3105 & answer_shape(1), &
3107 & answer_shape(2), &
3109 & answer_shape(3) ) &
3112 allocate( judge_rev( &
3113 & answer_shape(1), &
3115 & answer_shape(2), &
3117 & answer_shape(3) ) &
3121 judge = answer == check
3125 judge_rev = .not. judge
3126 err_flag = any(judge_rev)
3128 pos = maxloc(mask_array, judge_rev)
3146 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
3148 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
3150 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
3154 & trim(adjustl(pos_array(1))) //
',' // &
3156 & trim(adjustl(pos_array(2))) //
',' // &
3158 & trim(adjustl(pos_array(3))) //
')' 3161 deallocate(mask_array, judge, judge_rev)
3167 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3169 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
3170 write(*,*)
' is NOT EQUAL to' 3171 write(*,*)
' answer' // trim(pos_str) //
' = ', right
3175 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 3186 character(*),
intent(in):: message
3187 real,
intent(in):: answer(:,:,:,:)
3188 real,
intent(in):: check(:,:,:,:)
3190 character(STRING):: pos_str
3193 integer:: answer_shape(4), check_shape(4), pos(4)
3194 logical:: consist_shape(4)
3195 character(TOKEN):: pos_array(4)
3196 integer,
allocatable:: mask_array(:,:,:,:)
3197 logical,
allocatable:: judge(:,:,:,:)
3198 logical,
allocatable:: judge_rev(:,:,:,:)
3207 answer_shape = shape(answer)
3208 check_shape = shape(check)
3210 consist_shape = answer_shape == check_shape
3212 if (.not. all(consist_shape))
then 3213 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3215 write(*,*)
' shape of check is (', check_shape,
')' 3216 write(*,*)
' is INCORRECT' 3217 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 3223 allocate( mask_array( &
3224 & answer_shape(1), &
3226 & answer_shape(2), &
3228 & answer_shape(3), &
3230 & answer_shape(4) ) &
3234 & answer_shape(1), &
3236 & answer_shape(2), &
3238 & answer_shape(3), &
3240 & answer_shape(4) ) &
3243 allocate( judge_rev( &
3244 & answer_shape(1), &
3246 & answer_shape(2), &
3248 & answer_shape(3), &
3250 & answer_shape(4) ) &
3254 judge = answer == check
3258 judge_rev = .not. judge
3259 err_flag = any(judge_rev)
3261 pos = maxloc(mask_array, judge_rev)
3283 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
3285 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
3287 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
3289 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
3293 & trim(adjustl(pos_array(1))) //
',' // &
3295 & trim(adjustl(pos_array(2))) //
',' // &
3297 & trim(adjustl(pos_array(3))) //
',' // &
3299 & trim(adjustl(pos_array(4))) //
')' 3302 deallocate(mask_array, judge, judge_rev)
3308 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3310 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
3311 write(*,*)
' is NOT EQUAL to' 3312 write(*,*)
' answer' // trim(pos_str) //
' = ', right
3316 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 3327 character(*),
intent(in):: message
3328 real,
intent(in):: answer(:,:,:,:,:)
3329 real,
intent(in):: check(:,:,:,:,:)
3331 character(STRING):: pos_str
3334 integer:: answer_shape(5), check_shape(5), pos(5)
3335 logical:: consist_shape(5)
3336 character(TOKEN):: pos_array(5)
3337 integer,
allocatable:: mask_array(:,:,:,:,:)
3338 logical,
allocatable:: judge(:,:,:,:,:)
3339 logical,
allocatable:: judge_rev(:,:,:,:,:)
3348 answer_shape = shape(answer)
3349 check_shape = shape(check)
3351 consist_shape = answer_shape == check_shape
3353 if (.not. all(consist_shape))
then 3354 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3356 write(*,*)
' shape of check is (', check_shape,
')' 3357 write(*,*)
' is INCORRECT' 3358 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 3364 allocate( mask_array( &
3365 & answer_shape(1), &
3367 & answer_shape(2), &
3369 & answer_shape(3), &
3371 & answer_shape(4), &
3373 & answer_shape(5) ) &
3377 & answer_shape(1), &
3379 & answer_shape(2), &
3381 & answer_shape(3), &
3383 & answer_shape(4), &
3385 & answer_shape(5) ) &
3388 allocate( judge_rev( &
3389 & answer_shape(1), &
3391 & answer_shape(2), &
3393 & answer_shape(3), &
3395 & answer_shape(4), &
3397 & answer_shape(5) ) &
3401 judge = answer == check
3405 judge_rev = .not. judge
3406 err_flag = any(judge_rev)
3408 pos = maxloc(mask_array, judge_rev)
3434 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
3436 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
3438 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
3440 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
3442 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
3446 & trim(adjustl(pos_array(1))) //
',' // &
3448 & trim(adjustl(pos_array(2))) //
',' // &
3450 & trim(adjustl(pos_array(3))) //
',' // &
3452 & trim(adjustl(pos_array(4))) //
',' // &
3454 & trim(adjustl(pos_array(5))) //
')' 3457 deallocate(mask_array, judge, judge_rev)
3463 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3465 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
3466 write(*,*)
' is NOT EQUAL to' 3467 write(*,*)
' answer' // trim(pos_str) //
' = ', right
3471 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 3482 character(*),
intent(in):: message
3483 real,
intent(in):: answer(:,:,:,:,:,:)
3484 real,
intent(in):: check(:,:,:,:,:,:)
3486 character(STRING):: pos_str
3489 integer:: answer_shape(6), check_shape(6), pos(6)
3490 logical:: consist_shape(6)
3491 character(TOKEN):: pos_array(6)
3492 integer,
allocatable:: mask_array(:,:,:,:,:,:)
3493 logical,
allocatable:: judge(:,:,:,:,:,:)
3494 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
3503 answer_shape = shape(answer)
3504 check_shape = shape(check)
3506 consist_shape = answer_shape == check_shape
3508 if (.not. all(consist_shape))
then 3509 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3511 write(*,*)
' shape of check is (', check_shape,
')' 3512 write(*,*)
' is INCORRECT' 3513 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 3519 allocate( mask_array( &
3520 & answer_shape(1), &
3522 & answer_shape(2), &
3524 & answer_shape(3), &
3526 & answer_shape(4), &
3528 & answer_shape(5), &
3530 & answer_shape(6) ) &
3534 & answer_shape(1), &
3536 & answer_shape(2), &
3538 & answer_shape(3), &
3540 & answer_shape(4), &
3542 & answer_shape(5), &
3544 & answer_shape(6) ) &
3547 allocate( judge_rev( &
3548 & answer_shape(1), &
3550 & answer_shape(2), &
3552 & answer_shape(3), &
3554 & answer_shape(4), &
3556 & answer_shape(5), &
3558 & answer_shape(6) ) &
3562 judge = answer == check
3566 judge_rev = .not. judge
3567 err_flag = any(judge_rev)
3569 pos = maxloc(mask_array, judge_rev)
3599 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
3601 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
3603 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
3605 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
3607 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
3609 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
3613 & trim(adjustl(pos_array(1))) //
',' // &
3615 & trim(adjustl(pos_array(2))) //
',' // &
3617 & trim(adjustl(pos_array(3))) //
',' // &
3619 & trim(adjustl(pos_array(4))) //
',' // &
3621 & trim(adjustl(pos_array(5))) //
',' // &
3623 & trim(adjustl(pos_array(6))) //
')' 3626 deallocate(mask_array, judge, judge_rev)
3632 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3634 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
3635 write(*,*)
' is NOT EQUAL to' 3636 write(*,*)
' answer' // trim(pos_str) //
' = ', right
3640 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 3651 character(*),
intent(in):: message
3652 real,
intent(in):: answer(:,:,:,:,:,:,:)
3653 real,
intent(in):: check(:,:,:,:,:,:,:)
3655 character(STRING):: pos_str
3658 integer:: answer_shape(7), check_shape(7), pos(7)
3659 logical:: consist_shape(7)
3660 character(TOKEN):: pos_array(7)
3661 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
3662 logical,
allocatable:: judge(:,:,:,:,:,:,:)
3663 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
3672 answer_shape = shape(answer)
3673 check_shape = shape(check)
3675 consist_shape = answer_shape == check_shape
3677 if (.not. all(consist_shape))
then 3678 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3680 write(*,*)
' shape of check is (', check_shape,
')' 3681 write(*,*)
' is INCORRECT' 3682 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 3688 allocate( mask_array( &
3689 & answer_shape(1), &
3691 & answer_shape(2), &
3693 & answer_shape(3), &
3695 & answer_shape(4), &
3697 & answer_shape(5), &
3699 & answer_shape(6), &
3701 & answer_shape(7) ) &
3705 & answer_shape(1), &
3707 & answer_shape(2), &
3709 & answer_shape(3), &
3711 & answer_shape(4), &
3713 & answer_shape(5), &
3715 & answer_shape(6), &
3717 & answer_shape(7) ) &
3720 allocate( judge_rev( &
3721 & answer_shape(1), &
3723 & answer_shape(2), &
3725 & answer_shape(3), &
3727 & answer_shape(4), &
3729 & answer_shape(5), &
3731 & answer_shape(6), &
3733 & answer_shape(7) ) &
3737 judge = answer == check
3741 judge_rev = .not. judge
3742 err_flag = any(judge_rev)
3744 pos = maxloc(mask_array, judge_rev)
3778 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
3780 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
3782 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
3784 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
3786 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
3788 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
3790 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
3794 & trim(adjustl(pos_array(1))) //
',' // &
3796 & trim(adjustl(pos_array(2))) //
',' // &
3798 & trim(adjustl(pos_array(3))) //
',' // &
3800 & trim(adjustl(pos_array(4))) //
',' // &
3802 & trim(adjustl(pos_array(5))) //
',' // &
3804 & trim(adjustl(pos_array(6))) //
',' // &
3806 & trim(adjustl(pos_array(7))) //
')' 3809 deallocate(mask_array, judge, judge_rev)
3815 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3817 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
3818 write(*,*)
' is NOT EQUAL to' 3819 write(*,*)
' answer' // trim(pos_str) //
' = ', right
3823 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 3834 character(*),
intent(in):: message
3835 real(DP),
intent(in):: answer
3836 real(DP),
intent(in):: check
3838 character(STRING):: pos_str
3839 real(DP):: wrong, right
3849 err_flag = .not. answer == check
3858 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3860 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
3861 write(*,*)
' is NOT EQUAL to' 3862 write(*,*)
' answer' // trim(pos_str) //
' = ', right
3866 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 3877 character(*),
intent(in):: message
3878 real(DP),
intent(in):: answer(:)
3879 real(DP),
intent(in):: check(:)
3881 character(STRING):: pos_str
3882 real(DP):: wrong, right
3884 integer:: answer_shape(1), check_shape(1), pos(1)
3885 logical:: consist_shape(1)
3886 character(TOKEN):: pos_array(1)
3887 integer,
allocatable:: mask_array(:)
3888 logical,
allocatable:: judge(:)
3889 logical,
allocatable:: judge_rev(:)
3898 answer_shape = shape(answer)
3899 check_shape = shape(check)
3901 consist_shape = answer_shape == check_shape
3903 if (.not. all(consist_shape))
then 3904 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3906 write(*,*)
' shape of check is (', check_shape,
')' 3907 write(*,*)
' is INCORRECT' 3908 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 3914 allocate( mask_array( &
3916 & answer_shape(1) ) &
3921 & answer_shape(1) ) &
3924 allocate( judge_rev( &
3926 & answer_shape(1) ) &
3930 judge = answer == check
3934 judge_rev = .not. judge
3935 err_flag = any(judge_rev)
3937 pos = maxloc(mask_array, judge_rev)
3949 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
3954 & trim(adjustl(pos_array(1))) //
')' 3957 deallocate(mask_array, judge, judge_rev)
3963 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 3965 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
3966 write(*,*)
' is NOT EQUAL to' 3967 write(*,*)
' answer' // trim(pos_str) //
' = ', right
3971 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 3982 character(*),
intent(in):: message
3983 real(DP),
intent(in):: answer(:,:)
3984 real(DP),
intent(in):: check(:,:)
3986 character(STRING):: pos_str
3987 real(DP):: wrong, right
3989 integer:: answer_shape(2), check_shape(2), pos(2)
3990 logical:: consist_shape(2)
3991 character(TOKEN):: pos_array(2)
3992 integer,
allocatable:: mask_array(:,:)
3993 logical,
allocatable:: judge(:,:)
3994 logical,
allocatable:: judge_rev(:,:)
4003 answer_shape = shape(answer)
4004 check_shape = shape(check)
4006 consist_shape = answer_shape == check_shape
4008 if (.not. all(consist_shape))
then 4009 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4011 write(*,*)
' shape of check is (', check_shape,
')' 4012 write(*,*)
' is INCORRECT' 4013 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 4019 allocate( mask_array( &
4020 & answer_shape(1), &
4022 & answer_shape(2) ) &
4026 & answer_shape(1), &
4028 & answer_shape(2) ) &
4031 allocate( judge_rev( &
4032 & answer_shape(1), &
4034 & answer_shape(2) ) &
4038 judge = answer == check
4042 judge_rev = .not. judge
4043 err_flag = any(judge_rev)
4045 pos = maxloc(mask_array, judge_rev)
4059 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
4061 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
4065 & trim(adjustl(pos_array(1))) //
',' // &
4067 & trim(adjustl(pos_array(2))) //
')' 4070 deallocate(mask_array, judge, judge_rev)
4076 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4078 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
4079 write(*,*)
' is NOT EQUAL to' 4080 write(*,*)
' answer' // trim(pos_str) //
' = ', right
4084 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 4095 character(*),
intent(in):: message
4096 real(DP),
intent(in):: answer(:,:,:)
4097 real(DP),
intent(in):: check(:,:,:)
4099 character(STRING):: pos_str
4100 real(DP):: wrong, right
4102 integer:: answer_shape(3), check_shape(3), pos(3)
4103 logical:: consist_shape(3)
4104 character(TOKEN):: pos_array(3)
4105 integer,
allocatable:: mask_array(:,:,:)
4106 logical,
allocatable:: judge(:,:,:)
4107 logical,
allocatable:: judge_rev(:,:,:)
4116 answer_shape = shape(answer)
4117 check_shape = shape(check)
4119 consist_shape = answer_shape == check_shape
4121 if (.not. all(consist_shape))
then 4122 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4124 write(*,*)
' shape of check is (', check_shape,
')' 4125 write(*,*)
' is INCORRECT' 4126 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 4132 allocate( mask_array( &
4133 & answer_shape(1), &
4135 & answer_shape(2), &
4137 & answer_shape(3) ) &
4141 & answer_shape(1), &
4143 & answer_shape(2), &
4145 & answer_shape(3) ) &
4148 allocate( judge_rev( &
4149 & answer_shape(1), &
4151 & answer_shape(2), &
4153 & answer_shape(3) ) &
4157 judge = answer == check
4161 judge_rev = .not. judge
4162 err_flag = any(judge_rev)
4164 pos = maxloc(mask_array, judge_rev)
4182 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
4184 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
4186 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
4190 & trim(adjustl(pos_array(1))) //
',' // &
4192 & trim(adjustl(pos_array(2))) //
',' // &
4194 & trim(adjustl(pos_array(3))) //
')' 4197 deallocate(mask_array, judge, judge_rev)
4203 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4205 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
4206 write(*,*)
' is NOT EQUAL to' 4207 write(*,*)
' answer' // trim(pos_str) //
' = ', right
4211 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 4222 character(*),
intent(in):: message
4223 real(DP),
intent(in):: answer(:,:,:,:)
4224 real(DP),
intent(in):: check(:,:,:,:)
4226 character(STRING):: pos_str
4227 real(DP):: wrong, right
4229 integer:: answer_shape(4), check_shape(4), pos(4)
4230 logical:: consist_shape(4)
4231 character(TOKEN):: pos_array(4)
4232 integer,
allocatable:: mask_array(:,:,:,:)
4233 logical,
allocatable:: judge(:,:,:,:)
4234 logical,
allocatable:: judge_rev(:,:,:,:)
4243 answer_shape = shape(answer)
4244 check_shape = shape(check)
4246 consist_shape = answer_shape == check_shape
4248 if (.not. all(consist_shape))
then 4249 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4251 write(*,*)
' shape of check is (', check_shape,
')' 4252 write(*,*)
' is INCORRECT' 4253 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 4259 allocate( mask_array( &
4260 & answer_shape(1), &
4262 & answer_shape(2), &
4264 & answer_shape(3), &
4266 & answer_shape(4) ) &
4270 & answer_shape(1), &
4272 & answer_shape(2), &
4274 & answer_shape(3), &
4276 & answer_shape(4) ) &
4279 allocate( judge_rev( &
4280 & answer_shape(1), &
4282 & answer_shape(2), &
4284 & answer_shape(3), &
4286 & answer_shape(4) ) &
4290 judge = answer == check
4294 judge_rev = .not. judge
4295 err_flag = any(judge_rev)
4297 pos = maxloc(mask_array, judge_rev)
4319 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
4321 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
4323 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
4325 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
4329 & trim(adjustl(pos_array(1))) //
',' // &
4331 & trim(adjustl(pos_array(2))) //
',' // &
4333 & trim(adjustl(pos_array(3))) //
',' // &
4335 & trim(adjustl(pos_array(4))) //
')' 4338 deallocate(mask_array, judge, judge_rev)
4344 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4346 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
4347 write(*,*)
' is NOT EQUAL to' 4348 write(*,*)
' answer' // trim(pos_str) //
' = ', right
4352 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 4363 character(*),
intent(in):: message
4364 real(DP),
intent(in):: answer(:,:,:,:,:)
4365 real(DP),
intent(in):: check(:,:,:,:,:)
4367 character(STRING):: pos_str
4368 real(DP):: wrong, right
4370 integer:: answer_shape(5), check_shape(5), pos(5)
4371 logical:: consist_shape(5)
4372 character(TOKEN):: pos_array(5)
4373 integer,
allocatable:: mask_array(:,:,:,:,:)
4374 logical,
allocatable:: judge(:,:,:,:,:)
4375 logical,
allocatable:: judge_rev(:,:,:,:,:)
4384 answer_shape = shape(answer)
4385 check_shape = shape(check)
4387 consist_shape = answer_shape == check_shape
4389 if (.not. all(consist_shape))
then 4390 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4392 write(*,*)
' shape of check is (', check_shape,
')' 4393 write(*,*)
' is INCORRECT' 4394 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 4400 allocate( mask_array( &
4401 & answer_shape(1), &
4403 & answer_shape(2), &
4405 & answer_shape(3), &
4407 & answer_shape(4), &
4409 & answer_shape(5) ) &
4413 & answer_shape(1), &
4415 & answer_shape(2), &
4417 & answer_shape(3), &
4419 & answer_shape(4), &
4421 & answer_shape(5) ) &
4424 allocate( judge_rev( &
4425 & answer_shape(1), &
4427 & answer_shape(2), &
4429 & answer_shape(3), &
4431 & answer_shape(4), &
4433 & answer_shape(5) ) &
4437 judge = answer == check
4441 judge_rev = .not. judge
4442 err_flag = any(judge_rev)
4444 pos = maxloc(mask_array, judge_rev)
4470 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
4472 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
4474 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
4476 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
4478 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
4482 & trim(adjustl(pos_array(1))) //
',' // &
4484 & trim(adjustl(pos_array(2))) //
',' // &
4486 & trim(adjustl(pos_array(3))) //
',' // &
4488 & trim(adjustl(pos_array(4))) //
',' // &
4490 & trim(adjustl(pos_array(5))) //
')' 4493 deallocate(mask_array, judge, judge_rev)
4499 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4501 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
4502 write(*,*)
' is NOT EQUAL to' 4503 write(*,*)
' answer' // trim(pos_str) //
' = ', right
4507 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 4518 character(*),
intent(in):: message
4519 real(DP),
intent(in):: answer(:,:,:,:,:,:)
4520 real(DP),
intent(in):: check(:,:,:,:,:,:)
4522 character(STRING):: pos_str
4523 real(DP):: wrong, right
4525 integer:: answer_shape(6), check_shape(6), pos(6)
4526 logical:: consist_shape(6)
4527 character(TOKEN):: pos_array(6)
4528 integer,
allocatable:: mask_array(:,:,:,:,:,:)
4529 logical,
allocatable:: judge(:,:,:,:,:,:)
4530 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
4539 answer_shape = shape(answer)
4540 check_shape = shape(check)
4542 consist_shape = answer_shape == check_shape
4544 if (.not. all(consist_shape))
then 4545 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4547 write(*,*)
' shape of check is (', check_shape,
')' 4548 write(*,*)
' is INCORRECT' 4549 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 4555 allocate( mask_array( &
4556 & answer_shape(1), &
4558 & answer_shape(2), &
4560 & answer_shape(3), &
4562 & answer_shape(4), &
4564 & answer_shape(5), &
4566 & answer_shape(6) ) &
4570 & answer_shape(1), &
4572 & answer_shape(2), &
4574 & answer_shape(3), &
4576 & answer_shape(4), &
4578 & answer_shape(5), &
4580 & answer_shape(6) ) &
4583 allocate( judge_rev( &
4584 & answer_shape(1), &
4586 & answer_shape(2), &
4588 & answer_shape(3), &
4590 & answer_shape(4), &
4592 & answer_shape(5), &
4594 & answer_shape(6) ) &
4598 judge = answer == check
4602 judge_rev = .not. judge
4603 err_flag = any(judge_rev)
4605 pos = maxloc(mask_array, judge_rev)
4635 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
4637 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
4639 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
4641 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
4643 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
4645 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
4649 & trim(adjustl(pos_array(1))) //
',' // &
4651 & trim(adjustl(pos_array(2))) //
',' // &
4653 & trim(adjustl(pos_array(3))) //
',' // &
4655 & trim(adjustl(pos_array(4))) //
',' // &
4657 & trim(adjustl(pos_array(5))) //
',' // &
4659 & trim(adjustl(pos_array(6))) //
')' 4662 deallocate(mask_array, judge, judge_rev)
4668 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4670 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
4671 write(*,*)
' is NOT EQUAL to' 4672 write(*,*)
' answer' // trim(pos_str) //
' = ', right
4676 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 4687 character(*),
intent(in):: message
4688 real(DP),
intent(in):: answer(:,:,:,:,:,:,:)
4689 real(DP),
intent(in):: check(:,:,:,:,:,:,:)
4691 character(STRING):: pos_str
4692 real(DP):: wrong, right
4694 integer:: answer_shape(7), check_shape(7), pos(7)
4695 logical:: consist_shape(7)
4696 character(TOKEN):: pos_array(7)
4697 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
4698 logical,
allocatable:: judge(:,:,:,:,:,:,:)
4699 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
4708 answer_shape = shape(answer)
4709 check_shape = shape(check)
4711 consist_shape = answer_shape == check_shape
4713 if (.not. all(consist_shape))
then 4714 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4716 write(*,*)
' shape of check is (', check_shape,
')' 4717 write(*,*)
' is INCORRECT' 4718 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 4724 allocate( mask_array( &
4725 & answer_shape(1), &
4727 & answer_shape(2), &
4729 & answer_shape(3), &
4731 & answer_shape(4), &
4733 & answer_shape(5), &
4735 & answer_shape(6), &
4737 & answer_shape(7) ) &
4741 & answer_shape(1), &
4743 & answer_shape(2), &
4745 & answer_shape(3), &
4747 & answer_shape(4), &
4749 & answer_shape(5), &
4751 & answer_shape(6), &
4753 & answer_shape(7) ) &
4756 allocate( judge_rev( &
4757 & answer_shape(1), &
4759 & answer_shape(2), &
4761 & answer_shape(3), &
4763 & answer_shape(4), &
4765 & answer_shape(5), &
4767 & answer_shape(6), &
4769 & answer_shape(7) ) &
4773 judge = answer == check
4777 judge_rev = .not. judge
4778 err_flag = any(judge_rev)
4780 pos = maxloc(mask_array, judge_rev)
4814 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
4816 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
4818 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
4820 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
4822 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
4824 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
4826 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
4830 & trim(adjustl(pos_array(1))) //
',' // &
4832 & trim(adjustl(pos_array(2))) //
',' // &
4834 & trim(adjustl(pos_array(3))) //
',' // &
4836 & trim(adjustl(pos_array(4))) //
',' // &
4838 & trim(adjustl(pos_array(5))) //
',' // &
4840 & trim(adjustl(pos_array(6))) //
',' // &
4842 & trim(adjustl(pos_array(7))) //
')' 4845 deallocate(mask_array, judge, judge_rev)
4851 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 4853 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
4854 write(*,*)
' is NOT EQUAL to' 4855 write(*,*)
' answer' // trim(pos_str) //
' = ', right
4859 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 4868 character(*),
intent(in):: message
4869 logical,
intent(in):: answer
4870 logical,
intent(in):: check
4872 character(STRING):: answer_str
4873 character(STRING):: check_str
4881 answer_str =
".true." 4883 answer_str =
".false." 4887 check_str =
".true." 4889 check_str =
".false." 4902 character(*),
intent(in):: message
4903 logical,
intent(in):: answer(:)
4904 logical,
intent(in):: check(:)
4906 integer:: answer_shape(1), check_shape(1), i
4907 logical,
allocatable:: answer_tmp(:), check_tmp(:)
4908 character(STRING),
allocatable:: answer_str_tmp(:), check_str_tmp(:)
4909 character(STRING),
allocatable:: answer_str(:)
4910 character(STRING),
allocatable:: check_str(:)
4917 allocate(answer_tmp(
size(answer)))
4918 allocate(check_tmp(
size(check)))
4919 allocate(answer_str_tmp(
size(answer)))
4920 allocate(check_str_tmp(
size(check)))
4921 answer_tmp = pack(answer, .true.)
4922 check_tmp = pack(check, .true.)
4924 do i = 1,
size(answer_tmp)
4925 if (answer_tmp(i))
then 4926 answer_str_tmp(i) =
'.true.' 4928 answer_str_tmp(i) =
'.false.' 4932 do i = 1,
size(check_tmp)
4933 if (check_tmp(i))
then 4934 check_str_tmp(i) =
'.true.' 4936 check_str_tmp(i) =
'.false.' 4940 answer_shape = shape(answer)
4941 check_shape = shape(check)
4943 allocate( answer_str( &
4945 & answer_shape(1) ) &
4948 allocate( check_str( &
4950 & check_shape(1) ) &
4953 answer_str = reshape(answer_str_tmp, answer_shape)
4954 check_str = reshape(check_str_tmp, check_shape)
4960 deallocate(answer_str, answer_tmp, answer_str_tmp)
4961 deallocate(check_str, check_tmp, check_str_tmp)
4968 character(*),
intent(in):: message
4969 logical,
intent(in):: answer(:,:)
4970 logical,
intent(in):: check(:,:)
4972 integer:: answer_shape(2), check_shape(2), i
4973 logical,
allocatable:: answer_tmp(:), check_tmp(:)
4974 character(STRING),
allocatable:: answer_str_tmp(:), check_str_tmp(:)
4975 character(STRING),
allocatable:: answer_str(:,:)
4976 character(STRING),
allocatable:: check_str(:,:)
4983 allocate(answer_tmp(
size(answer)))
4984 allocate(check_tmp(
size(check)))
4985 allocate(answer_str_tmp(
size(answer)))
4986 allocate(check_str_tmp(
size(check)))
4987 answer_tmp = pack(answer, .true.)
4988 check_tmp = pack(check, .true.)
4990 do i = 1,
size(answer_tmp)
4991 if (answer_tmp(i))
then 4992 answer_str_tmp(i) =
'.true.' 4994 answer_str_tmp(i) =
'.false.' 4998 do i = 1,
size(check_tmp)
4999 if (check_tmp(i))
then 5000 check_str_tmp(i) =
'.true.' 5002 check_str_tmp(i) =
'.false.' 5006 answer_shape = shape(answer)
5007 check_shape = shape(check)
5009 allocate( answer_str( &
5010 & answer_shape(1), &
5012 & answer_shape(2) ) &
5015 allocate( check_str( &
5018 & check_shape(2) ) &
5021 answer_str = reshape(answer_str_tmp, answer_shape)
5022 check_str = reshape(check_str_tmp, check_shape)
5028 deallocate(answer_str, answer_tmp, answer_str_tmp)
5029 deallocate(check_str, check_tmp, check_str_tmp)
5036 character(*),
intent(in):: message
5037 logical,
intent(in):: answer(:,:,:)
5038 logical,
intent(in):: check(:,:,:)
5040 integer:: answer_shape(3), check_shape(3), i
5041 logical,
allocatable:: answer_tmp(:), check_tmp(:)
5042 character(STRING),
allocatable:: answer_str_tmp(:), check_str_tmp(:)
5043 character(STRING),
allocatable:: answer_str(:,:,:)
5044 character(STRING),
allocatable:: check_str(:,:,:)
5051 allocate(answer_tmp(
size(answer)))
5052 allocate(check_tmp(
size(check)))
5053 allocate(answer_str_tmp(
size(answer)))
5054 allocate(check_str_tmp(
size(check)))
5055 answer_tmp = pack(answer, .true.)
5056 check_tmp = pack(check, .true.)
5058 do i = 1,
size(answer_tmp)
5059 if (answer_tmp(i))
then 5060 answer_str_tmp(i) =
'.true.' 5062 answer_str_tmp(i) =
'.false.' 5066 do i = 1,
size(check_tmp)
5067 if (check_tmp(i))
then 5068 check_str_tmp(i) =
'.true.' 5070 check_str_tmp(i) =
'.false.' 5074 answer_shape = shape(answer)
5075 check_shape = shape(check)
5077 allocate( answer_str( &
5078 & answer_shape(1), &
5080 & answer_shape(2), &
5082 & answer_shape(3) ) &
5085 allocate( check_str( &
5090 & check_shape(3) ) &
5093 answer_str = reshape(answer_str_tmp, answer_shape)
5094 check_str = reshape(check_str_tmp, check_shape)
5100 deallocate(answer_str, answer_tmp, answer_str_tmp)
5101 deallocate(check_str, check_tmp, check_str_tmp)
5108 character(*),
intent(in):: message
5109 logical,
intent(in):: answer(:,:,:,:)
5110 logical,
intent(in):: check(:,:,:,:)
5112 integer:: answer_shape(4), check_shape(4), i
5113 logical,
allocatable:: answer_tmp(:), check_tmp(:)
5114 character(STRING),
allocatable:: answer_str_tmp(:), check_str_tmp(:)
5115 character(STRING),
allocatable:: answer_str(:,:,:,:)
5116 character(STRING),
allocatable:: check_str(:,:,:,:)
5123 allocate(answer_tmp(
size(answer)))
5124 allocate(check_tmp(
size(check)))
5125 allocate(answer_str_tmp(
size(answer)))
5126 allocate(check_str_tmp(
size(check)))
5127 answer_tmp = pack(answer, .true.)
5128 check_tmp = pack(check, .true.)
5130 do i = 1,
size(answer_tmp)
5131 if (answer_tmp(i))
then 5132 answer_str_tmp(i) =
'.true.' 5134 answer_str_tmp(i) =
'.false.' 5138 do i = 1,
size(check_tmp)
5139 if (check_tmp(i))
then 5140 check_str_tmp(i) =
'.true.' 5142 check_str_tmp(i) =
'.false.' 5146 answer_shape = shape(answer)
5147 check_shape = shape(check)
5149 allocate( answer_str( &
5150 & answer_shape(1), &
5152 & answer_shape(2), &
5154 & answer_shape(3), &
5156 & answer_shape(4) ) &
5159 allocate( check_str( &
5166 & check_shape(4) ) &
5169 answer_str = reshape(answer_str_tmp, answer_shape)
5170 check_str = reshape(check_str_tmp, check_shape)
5176 deallocate(answer_str, answer_tmp, answer_str_tmp)
5177 deallocate(check_str, check_tmp, check_str_tmp)
5184 character(*),
intent(in):: message
5185 logical,
intent(in):: answer(:,:,:,:,:)
5186 logical,
intent(in):: check(:,:,:,:,:)
5188 integer:: answer_shape(5), check_shape(5), i
5189 logical,
allocatable:: answer_tmp(:), check_tmp(:)
5190 character(STRING),
allocatable:: answer_str_tmp(:), check_str_tmp(:)
5191 character(STRING),
allocatable:: answer_str(:,:,:,:,:)
5192 character(STRING),
allocatable:: check_str(:,:,:,:,:)
5199 allocate(answer_tmp(
size(answer)))
5200 allocate(check_tmp(
size(check)))
5201 allocate(answer_str_tmp(
size(answer)))
5202 allocate(check_str_tmp(
size(check)))
5203 answer_tmp = pack(answer, .true.)
5204 check_tmp = pack(check, .true.)
5206 do i = 1,
size(answer_tmp)
5207 if (answer_tmp(i))
then 5208 answer_str_tmp(i) =
'.true.' 5210 answer_str_tmp(i) =
'.false.' 5214 do i = 1,
size(check_tmp)
5215 if (check_tmp(i))
then 5216 check_str_tmp(i) =
'.true.' 5218 check_str_tmp(i) =
'.false.' 5222 answer_shape = shape(answer)
5223 check_shape = shape(check)
5225 allocate( answer_str( &
5226 & answer_shape(1), &
5228 & answer_shape(2), &
5230 & answer_shape(3), &
5232 & answer_shape(4), &
5234 & answer_shape(5) ) &
5237 allocate( check_str( &
5246 & check_shape(5) ) &
5249 answer_str = reshape(answer_str_tmp, answer_shape)
5250 check_str = reshape(check_str_tmp, check_shape)
5256 deallocate(answer_str, answer_tmp, answer_str_tmp)
5257 deallocate(check_str, check_tmp, check_str_tmp)
5264 character(*),
intent(in):: message
5265 logical,
intent(in):: answer(:,:,:,:,:,:)
5266 logical,
intent(in):: check(:,:,:,:,:,:)
5268 integer:: answer_shape(6), check_shape(6), i
5269 logical,
allocatable:: answer_tmp(:), check_tmp(:)
5270 character(STRING),
allocatable:: answer_str_tmp(:), check_str_tmp(:)
5271 character(STRING),
allocatable:: answer_str(:,:,:,:,:,:)
5272 character(STRING),
allocatable:: check_str(:,:,:,:,:,:)
5279 allocate(answer_tmp(
size(answer)))
5280 allocate(check_tmp(
size(check)))
5281 allocate(answer_str_tmp(
size(answer)))
5282 allocate(check_str_tmp(
size(check)))
5283 answer_tmp = pack(answer, .true.)
5284 check_tmp = pack(check, .true.)
5286 do i = 1,
size(answer_tmp)
5287 if (answer_tmp(i))
then 5288 answer_str_tmp(i) =
'.true.' 5290 answer_str_tmp(i) =
'.false.' 5294 do i = 1,
size(check_tmp)
5295 if (check_tmp(i))
then 5296 check_str_tmp(i) =
'.true.' 5298 check_str_tmp(i) =
'.false.' 5302 answer_shape = shape(answer)
5303 check_shape = shape(check)
5305 allocate( answer_str( &
5306 & answer_shape(1), &
5308 & answer_shape(2), &
5310 & answer_shape(3), &
5312 & answer_shape(4), &
5314 & answer_shape(5), &
5316 & answer_shape(6) ) &
5319 allocate( check_str( &
5330 & check_shape(6) ) &
5333 answer_str = reshape(answer_str_tmp, answer_shape)
5334 check_str = reshape(check_str_tmp, check_shape)
5340 deallocate(answer_str, answer_tmp, answer_str_tmp)
5341 deallocate(check_str, check_tmp, check_str_tmp)
5348 character(*),
intent(in):: message
5349 logical,
intent(in):: answer(:,:,:,:,:,:,:)
5350 logical,
intent(in):: check(:,:,:,:,:,:,:)
5352 integer:: answer_shape(7), check_shape(7), i
5353 logical,
allocatable:: answer_tmp(:), check_tmp(:)
5354 character(STRING),
allocatable:: answer_str_tmp(:), check_str_tmp(:)
5355 character(STRING),
allocatable:: answer_str(:,:,:,:,:,:,:)
5356 character(STRING),
allocatable:: check_str(:,:,:,:,:,:,:)
5363 allocate(answer_tmp(
size(answer)))
5364 allocate(check_tmp(
size(check)))
5365 allocate(answer_str_tmp(
size(answer)))
5366 allocate(check_str_tmp(
size(check)))
5367 answer_tmp = pack(answer, .true.)
5368 check_tmp = pack(check, .true.)
5370 do i = 1,
size(answer_tmp)
5371 if (answer_tmp(i))
then 5372 answer_str_tmp(i) =
'.true.' 5374 answer_str_tmp(i) =
'.false.' 5378 do i = 1,
size(check_tmp)
5379 if (check_tmp(i))
then 5380 check_str_tmp(i) =
'.true.' 5382 check_str_tmp(i) =
'.false.' 5386 answer_shape = shape(answer)
5387 check_shape = shape(check)
5389 allocate( answer_str( &
5390 & answer_shape(1), &
5392 & answer_shape(2), &
5394 & answer_shape(3), &
5396 & answer_shape(4), &
5398 & answer_shape(5), &
5400 & answer_shape(6), &
5402 & answer_shape(7) ) &
5405 allocate( check_str( &
5418 & check_shape(7) ) &
5421 answer_str = reshape(answer_str_tmp, answer_shape)
5422 check_str = reshape(check_str_tmp, check_shape)
5428 deallocate(answer_str, answer_tmp, answer_str_tmp)
5429 deallocate(check_str, check_tmp, check_str_tmp)
5435 & message, answer, check, significant_digits, ignore_digits )
5439 character(*),
intent(in):: message
5440 real,
intent(in):: answer
5441 real,
intent(in):: check
5442 integer,
intent(in):: significant_digits
5443 integer,
intent(in):: ignore_digits
5445 character(STRING):: pos_str
5446 real:: wrong, right_max, right_min
5447 character(STRING):: pos_str_space
5448 integer:: pos_str_len
5457 if ( significant_digits < 1 )
then 5458 write(*,*)
' *** Error [AssertEQ] *** ' 5459 write(*,*)
' Specify a number more than 1 to "significant_digits"' 5463 if ( answer < 0.0 .and. check < 0.0 )
then 5467 & - 0.1 ** significant_digits ) &
5468 & + 0.1 ** (- ignore_digits)
5473 & + 0.1 ** significant_digits ) &
5474 & - 0.1 ** (- ignore_digits)
5480 & + 0.1 ** significant_digits ) &
5481 & + 0.1 ** (- ignore_digits)
5486 & - 0.1 ** significant_digits ) &
5487 & - 0.1 ** (- ignore_digits)
5491 right_max = answer_max
5492 right_min = answer_min
5493 if ( right_max < right_min )
then 5494 right_tmp = right_max
5495 right_max = right_min
5496 right_min = right_tmp
5499 err_flag = .not. (answer_max > check .and. check > answer_min)
5507 pos_str_len = len_trim(pos_str)
5509 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 5511 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
5512 write(*,*)
' is NOT EQUAL to' 5513 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
5514 & //
' ', right_min,
' < ' 5515 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
5519 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 5527 & message, answer, check, significant_digits, ignore_digits )
5531 character(*),
intent(in):: message
5532 real,
intent(in):: answer(:)
5533 real,
intent(in):: check(:)
5534 integer,
intent(in):: significant_digits
5535 integer,
intent(in):: ignore_digits
5537 character(STRING):: pos_str
5538 real:: wrong, right_max, right_min
5539 character(STRING):: pos_str_space
5540 integer:: pos_str_len
5543 integer:: answer_shape(1), check_shape(1), pos(1)
5544 logical:: consist_shape(1)
5545 character(TOKEN):: pos_array(1)
5546 integer,
allocatable:: mask_array(:)
5547 logical,
allocatable:: judge(:)
5548 logical,
allocatable:: judge_rev(:)
5549 logical,
allocatable:: answer_negative(:)
5550 logical,
allocatable:: check_negative(:)
5551 logical,
allocatable:: both_negative(:)
5552 real,
allocatable:: answer_max(:)
5553 real,
allocatable:: answer_min(:)
5558 if ( significant_digits < 1 )
then 5559 write(*,*)
' *** Error [AssertEQ] *** ' 5560 write(*,*)
' Specify a number more than 1 to "significant_digits"' 5564 answer_shape = shape(answer)
5565 check_shape = shape(check)
5567 consist_shape = answer_shape == check_shape
5569 if (.not. all(consist_shape))
then 5570 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 5572 write(*,*)
' shape of check is (', check_shape,
')' 5573 write(*,*)
' is INCORRECT' 5574 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 5580 allocate( mask_array( &
5582 & answer_shape(1) ) &
5587 & answer_shape(1) ) &
5590 allocate( judge_rev( &
5592 & answer_shape(1) ) &
5595 allocate( answer_negative( &
5597 & answer_shape(1) ) &
5600 allocate( check_negative( &
5602 & answer_shape(1) ) &
5605 allocate( both_negative( &
5607 & answer_shape(1) ) &
5610 allocate( answer_max( &
5612 & answer_shape(1) ) &
5615 allocate( answer_min( &
5617 & answer_shape(1) ) &
5620 answer_negative = answer < 0.0
5621 check_negative = check < 0.0
5622 both_negative = answer_negative .and. check_negative
5624 where (both_negative)
5628 & - 0.1 ** significant_digits ) &
5629 & + 0.1 ** (- ignore_digits)
5634 & + 0.1 ** significant_digits ) &
5635 & - 0.1 ** (- ignore_digits)
5640 & + 0.1 ** significant_digits ) &
5641 & + 0.1 ** (- ignore_digits)
5646 & - 0.1 ** significant_digits ) &
5647 & - 0.1 ** (- ignore_digits)
5650 judge = answer_max > check .and. check > answer_min
5651 judge_rev = .not. judge
5652 err_flag = any(judge_rev)
5654 pos = maxloc(mask_array, judge_rev)
5662 right_max = answer_max( &
5666 right_min = answer_min( &
5670 if ( right_max < right_min )
then 5671 right_tmp = right_max
5672 right_max = right_min
5673 right_min = right_tmp
5676 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
5681 & trim(adjustl(pos_array(1))) //
')' 5684 deallocate(mask_array, judge, judge_rev)
5685 deallocate(answer_negative, check_negative, both_negative)
5686 deallocate(answer_max, answer_min)
5692 pos_str_len = len_trim(pos_str)
5694 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 5696 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
5697 write(*,*)
' is NOT EQUAL to' 5698 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
5699 & //
' ', right_min,
' < ' 5700 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
5704 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 5712 & message, answer, check, significant_digits, ignore_digits )
5716 character(*),
intent(in):: message
5717 real,
intent(in):: answer(:,:)
5718 real,
intent(in):: check(:,:)
5719 integer,
intent(in):: significant_digits
5720 integer,
intent(in):: ignore_digits
5722 character(STRING):: pos_str
5723 real:: wrong, right_max, right_min
5724 character(STRING):: pos_str_space
5725 integer:: pos_str_len
5728 integer:: answer_shape(2), check_shape(2), pos(2)
5729 logical:: consist_shape(2)
5730 character(TOKEN):: pos_array(2)
5731 integer,
allocatable:: mask_array(:,:)
5732 logical,
allocatable:: judge(:,:)
5733 logical,
allocatable:: judge_rev(:,:)
5734 logical,
allocatable:: answer_negative(:,:)
5735 logical,
allocatable:: check_negative(:,:)
5736 logical,
allocatable:: both_negative(:,:)
5737 real,
allocatable:: answer_max(:,:)
5738 real,
allocatable:: answer_min(:,:)
5743 if ( significant_digits < 1 )
then 5744 write(*,*)
' *** Error [AssertEQ] *** ' 5745 write(*,*)
' Specify a number more than 1 to "significant_digits"' 5749 answer_shape = shape(answer)
5750 check_shape = shape(check)
5752 consist_shape = answer_shape == check_shape
5754 if (.not. all(consist_shape))
then 5755 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 5757 write(*,*)
' shape of check is (', check_shape,
')' 5758 write(*,*)
' is INCORRECT' 5759 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 5765 allocate( mask_array( &
5766 & answer_shape(1), &
5768 & answer_shape(2) ) &
5772 & answer_shape(1), &
5774 & answer_shape(2) ) &
5777 allocate( judge_rev( &
5778 & answer_shape(1), &
5780 & answer_shape(2) ) &
5783 allocate( answer_negative( &
5784 & answer_shape(1), &
5786 & answer_shape(2) ) &
5789 allocate( check_negative( &
5790 & answer_shape(1), &
5792 & answer_shape(2) ) &
5795 allocate( both_negative( &
5796 & answer_shape(1), &
5798 & answer_shape(2) ) &
5801 allocate( answer_max( &
5802 & answer_shape(1), &
5804 & answer_shape(2) ) &
5807 allocate( answer_min( &
5808 & answer_shape(1), &
5810 & answer_shape(2) ) &
5813 answer_negative = answer < 0.0
5814 check_negative = check < 0.0
5815 both_negative = answer_negative .and. check_negative
5817 where (both_negative)
5821 & - 0.1 ** significant_digits ) &
5822 & + 0.1 ** (- ignore_digits)
5827 & + 0.1 ** significant_digits ) &
5828 & - 0.1 ** (- ignore_digits)
5833 & + 0.1 ** significant_digits ) &
5834 & + 0.1 ** (- ignore_digits)
5839 & - 0.1 ** significant_digits ) &
5840 & - 0.1 ** (- ignore_digits)
5843 judge = answer_max > check .and. check > answer_min
5844 judge_rev = .not. judge
5845 err_flag = any(judge_rev)
5847 pos = maxloc(mask_array, judge_rev)
5856 right_max = answer_max( &
5861 right_min = answer_min( &
5866 if ( right_max < right_min )
then 5867 right_tmp = right_max
5868 right_max = right_min
5869 right_min = right_tmp
5872 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
5874 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
5878 & trim(adjustl(pos_array(1))) //
',' // &
5880 & trim(adjustl(pos_array(2))) //
')' 5883 deallocate(mask_array, judge, judge_rev)
5884 deallocate(answer_negative, check_negative, both_negative)
5885 deallocate(answer_max, answer_min)
5891 pos_str_len = len_trim(pos_str)
5893 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 5895 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
5896 write(*,*)
' is NOT EQUAL to' 5897 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
5898 & //
' ', right_min,
' < ' 5899 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
5903 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 5911 & message, answer, check, significant_digits, ignore_digits )
5915 character(*),
intent(in):: message
5916 real,
intent(in):: answer(:,:,:)
5917 real,
intent(in):: check(:,:,:)
5918 integer,
intent(in):: significant_digits
5919 integer,
intent(in):: ignore_digits
5921 character(STRING):: pos_str
5922 real:: wrong, right_max, right_min
5923 character(STRING):: pos_str_space
5924 integer:: pos_str_len
5927 integer:: answer_shape(3), check_shape(3), pos(3)
5928 logical:: consist_shape(3)
5929 character(TOKEN):: pos_array(3)
5930 integer,
allocatable:: mask_array(:,:,:)
5931 logical,
allocatable:: judge(:,:,:)
5932 logical,
allocatable:: judge_rev(:,:,:)
5933 logical,
allocatable:: answer_negative(:,:,:)
5934 logical,
allocatable:: check_negative(:,:,:)
5935 logical,
allocatable:: both_negative(:,:,:)
5936 real,
allocatable:: answer_max(:,:,:)
5937 real,
allocatable:: answer_min(:,:,:)
5942 if ( significant_digits < 1 )
then 5943 write(*,*)
' *** Error [AssertEQ] *** ' 5944 write(*,*)
' Specify a number more than 1 to "significant_digits"' 5948 answer_shape = shape(answer)
5949 check_shape = shape(check)
5951 consist_shape = answer_shape == check_shape
5953 if (.not. all(consist_shape))
then 5954 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 5956 write(*,*)
' shape of check is (', check_shape,
')' 5957 write(*,*)
' is INCORRECT' 5958 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 5964 allocate( mask_array( &
5965 & answer_shape(1), &
5967 & answer_shape(2), &
5969 & answer_shape(3) ) &
5973 & answer_shape(1), &
5975 & answer_shape(2), &
5977 & answer_shape(3) ) &
5980 allocate( judge_rev( &
5981 & answer_shape(1), &
5983 & answer_shape(2), &
5985 & answer_shape(3) ) &
5988 allocate( answer_negative( &
5989 & answer_shape(1), &
5991 & answer_shape(2), &
5993 & answer_shape(3) ) &
5996 allocate( check_negative( &
5997 & answer_shape(1), &
5999 & answer_shape(2), &
6001 & answer_shape(3) ) &
6004 allocate( both_negative( &
6005 & answer_shape(1), &
6007 & answer_shape(2), &
6009 & answer_shape(3) ) &
6012 allocate( answer_max( &
6013 & answer_shape(1), &
6015 & answer_shape(2), &
6017 & answer_shape(3) ) &
6020 allocate( answer_min( &
6021 & answer_shape(1), &
6023 & answer_shape(2), &
6025 & answer_shape(3) ) &
6028 answer_negative = answer < 0.0
6029 check_negative = check < 0.0
6030 both_negative = answer_negative .and. check_negative
6032 where (both_negative)
6036 & - 0.1 ** significant_digits ) &
6037 & + 0.1 ** (- ignore_digits)
6042 & + 0.1 ** significant_digits ) &
6043 & - 0.1 ** (- ignore_digits)
6048 & + 0.1 ** significant_digits ) &
6049 & + 0.1 ** (- ignore_digits)
6054 & - 0.1 ** significant_digits ) &
6055 & - 0.1 ** (- ignore_digits)
6058 judge = answer_max > check .and. check > answer_min
6059 judge_rev = .not. judge
6060 err_flag = any(judge_rev)
6062 pos = maxloc(mask_array, judge_rev)
6073 right_max = answer_max( &
6080 right_min = answer_min( &
6087 if ( right_max < right_min )
then 6088 right_tmp = right_max
6089 right_max = right_min
6090 right_min = right_tmp
6093 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
6095 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
6097 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
6101 & trim(adjustl(pos_array(1))) //
',' // &
6103 & trim(adjustl(pos_array(2))) //
',' // &
6105 & trim(adjustl(pos_array(3))) //
')' 6108 deallocate(mask_array, judge, judge_rev)
6109 deallocate(answer_negative, check_negative, both_negative)
6110 deallocate(answer_max, answer_min)
6116 pos_str_len = len_trim(pos_str)
6118 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 6120 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
6121 write(*,*)
' is NOT EQUAL to' 6122 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
6123 & //
' ', right_min,
' < ' 6124 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
6128 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 6136 & message, answer, check, significant_digits, ignore_digits )
6140 character(*),
intent(in):: message
6141 real,
intent(in):: answer(:,:,:,:)
6142 real,
intent(in):: check(:,:,:,:)
6143 integer,
intent(in):: significant_digits
6144 integer,
intent(in):: ignore_digits
6146 character(STRING):: pos_str
6147 real:: wrong, right_max, right_min
6148 character(STRING):: pos_str_space
6149 integer:: pos_str_len
6152 integer:: answer_shape(4), check_shape(4), pos(4)
6153 logical:: consist_shape(4)
6154 character(TOKEN):: pos_array(4)
6155 integer,
allocatable:: mask_array(:,:,:,:)
6156 logical,
allocatable:: judge(:,:,:,:)
6157 logical,
allocatable:: judge_rev(:,:,:,:)
6158 logical,
allocatable:: answer_negative(:,:,:,:)
6159 logical,
allocatable:: check_negative(:,:,:,:)
6160 logical,
allocatable:: both_negative(:,:,:,:)
6161 real,
allocatable:: answer_max(:,:,:,:)
6162 real,
allocatable:: answer_min(:,:,:,:)
6167 if ( significant_digits < 1 )
then 6168 write(*,*)
' *** Error [AssertEQ] *** ' 6169 write(*,*)
' Specify a number more than 1 to "significant_digits"' 6173 answer_shape = shape(answer)
6174 check_shape = shape(check)
6176 consist_shape = answer_shape == check_shape
6178 if (.not. all(consist_shape))
then 6179 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 6181 write(*,*)
' shape of check is (', check_shape,
')' 6182 write(*,*)
' is INCORRECT' 6183 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 6189 allocate( mask_array( &
6190 & answer_shape(1), &
6192 & answer_shape(2), &
6194 & answer_shape(3), &
6196 & answer_shape(4) ) &
6200 & answer_shape(1), &
6202 & answer_shape(2), &
6204 & answer_shape(3), &
6206 & answer_shape(4) ) &
6209 allocate( judge_rev( &
6210 & answer_shape(1), &
6212 & answer_shape(2), &
6214 & answer_shape(3), &
6216 & answer_shape(4) ) &
6219 allocate( answer_negative( &
6220 & answer_shape(1), &
6222 & answer_shape(2), &
6224 & answer_shape(3), &
6226 & answer_shape(4) ) &
6229 allocate( check_negative( &
6230 & answer_shape(1), &
6232 & answer_shape(2), &
6234 & answer_shape(3), &
6236 & answer_shape(4) ) &
6239 allocate( both_negative( &
6240 & answer_shape(1), &
6242 & answer_shape(2), &
6244 & answer_shape(3), &
6246 & answer_shape(4) ) &
6249 allocate( answer_max( &
6250 & answer_shape(1), &
6252 & answer_shape(2), &
6254 & answer_shape(3), &
6256 & answer_shape(4) ) &
6259 allocate( answer_min( &
6260 & answer_shape(1), &
6262 & answer_shape(2), &
6264 & answer_shape(3), &
6266 & answer_shape(4) ) &
6269 answer_negative = answer < 0.0
6270 check_negative = check < 0.0
6271 both_negative = answer_negative .and. check_negative
6273 where (both_negative)
6277 & - 0.1 ** significant_digits ) &
6278 & + 0.1 ** (- ignore_digits)
6283 & + 0.1 ** significant_digits ) &
6284 & - 0.1 ** (- ignore_digits)
6289 & + 0.1 ** significant_digits ) &
6290 & + 0.1 ** (- ignore_digits)
6295 & - 0.1 ** significant_digits ) &
6296 & - 0.1 ** (- ignore_digits)
6299 judge = answer_max > check .and. check > answer_min
6300 judge_rev = .not. judge
6301 err_flag = any(judge_rev)
6303 pos = maxloc(mask_array, judge_rev)
6316 right_max = answer_max( &
6325 right_min = answer_min( &
6334 if ( right_max < right_min )
then 6335 right_tmp = right_max
6336 right_max = right_min
6337 right_min = right_tmp
6340 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
6342 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
6344 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
6346 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
6350 & trim(adjustl(pos_array(1))) //
',' // &
6352 & trim(adjustl(pos_array(2))) //
',' // &
6354 & trim(adjustl(pos_array(3))) //
',' // &
6356 & trim(adjustl(pos_array(4))) //
')' 6359 deallocate(mask_array, judge, judge_rev)
6360 deallocate(answer_negative, check_negative, both_negative)
6361 deallocate(answer_max, answer_min)
6367 pos_str_len = len_trim(pos_str)
6369 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 6371 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
6372 write(*,*)
' is NOT EQUAL to' 6373 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
6374 & //
' ', right_min,
' < ' 6375 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
6379 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 6387 & message, answer, check, significant_digits, ignore_digits )
6391 character(*),
intent(in):: message
6392 real,
intent(in):: answer(:,:,:,:,:)
6393 real,
intent(in):: check(:,:,:,:,:)
6394 integer,
intent(in):: significant_digits
6395 integer,
intent(in):: ignore_digits
6397 character(STRING):: pos_str
6398 real:: wrong, right_max, right_min
6399 character(STRING):: pos_str_space
6400 integer:: pos_str_len
6403 integer:: answer_shape(5), check_shape(5), pos(5)
6404 logical:: consist_shape(5)
6405 character(TOKEN):: pos_array(5)
6406 integer,
allocatable:: mask_array(:,:,:,:,:)
6407 logical,
allocatable:: judge(:,:,:,:,:)
6408 logical,
allocatable:: judge_rev(:,:,:,:,:)
6409 logical,
allocatable:: answer_negative(:,:,:,:,:)
6410 logical,
allocatable:: check_negative(:,:,:,:,:)
6411 logical,
allocatable:: both_negative(:,:,:,:,:)
6412 real,
allocatable:: answer_max(:,:,:,:,:)
6413 real,
allocatable:: answer_min(:,:,:,:,:)
6418 if ( significant_digits < 1 )
then 6419 write(*,*)
' *** Error [AssertEQ] *** ' 6420 write(*,*)
' Specify a number more than 1 to "significant_digits"' 6424 answer_shape = shape(answer)
6425 check_shape = shape(check)
6427 consist_shape = answer_shape == check_shape
6429 if (.not. all(consist_shape))
then 6430 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 6432 write(*,*)
' shape of check is (', check_shape,
')' 6433 write(*,*)
' is INCORRECT' 6434 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 6440 allocate( mask_array( &
6441 & answer_shape(1), &
6443 & answer_shape(2), &
6445 & answer_shape(3), &
6447 & answer_shape(4), &
6449 & answer_shape(5) ) &
6453 & answer_shape(1), &
6455 & answer_shape(2), &
6457 & answer_shape(3), &
6459 & answer_shape(4), &
6461 & answer_shape(5) ) &
6464 allocate( judge_rev( &
6465 & answer_shape(1), &
6467 & answer_shape(2), &
6469 & answer_shape(3), &
6471 & answer_shape(4), &
6473 & answer_shape(5) ) &
6476 allocate( answer_negative( &
6477 & answer_shape(1), &
6479 & answer_shape(2), &
6481 & answer_shape(3), &
6483 & answer_shape(4), &
6485 & answer_shape(5) ) &
6488 allocate( check_negative( &
6489 & answer_shape(1), &
6491 & answer_shape(2), &
6493 & answer_shape(3), &
6495 & answer_shape(4), &
6497 & answer_shape(5) ) &
6500 allocate( both_negative( &
6501 & answer_shape(1), &
6503 & answer_shape(2), &
6505 & answer_shape(3), &
6507 & answer_shape(4), &
6509 & answer_shape(5) ) &
6512 allocate( answer_max( &
6513 & answer_shape(1), &
6515 & answer_shape(2), &
6517 & answer_shape(3), &
6519 & answer_shape(4), &
6521 & answer_shape(5) ) &
6524 allocate( answer_min( &
6525 & answer_shape(1), &
6527 & answer_shape(2), &
6529 & answer_shape(3), &
6531 & answer_shape(4), &
6533 & answer_shape(5) ) &
6536 answer_negative = answer < 0.0
6537 check_negative = check < 0.0
6538 both_negative = answer_negative .and. check_negative
6540 where (both_negative)
6544 & - 0.1 ** significant_digits ) &
6545 & + 0.1 ** (- ignore_digits)
6550 & + 0.1 ** significant_digits ) &
6551 & - 0.1 ** (- ignore_digits)
6556 & + 0.1 ** significant_digits ) &
6557 & + 0.1 ** (- ignore_digits)
6562 & - 0.1 ** significant_digits ) &
6563 & - 0.1 ** (- ignore_digits)
6566 judge = answer_max > check .and. check > answer_min
6567 judge_rev = .not. judge
6568 err_flag = any(judge_rev)
6570 pos = maxloc(mask_array, judge_rev)
6585 right_max = answer_max( &
6596 right_min = answer_min( &
6607 if ( right_max < right_min )
then 6608 right_tmp = right_max
6609 right_max = right_min
6610 right_min = right_tmp
6613 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
6615 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
6617 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
6619 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
6621 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
6625 & trim(adjustl(pos_array(1))) //
',' // &
6627 & trim(adjustl(pos_array(2))) //
',' // &
6629 & trim(adjustl(pos_array(3))) //
',' // &
6631 & trim(adjustl(pos_array(4))) //
',' // &
6633 & trim(adjustl(pos_array(5))) //
')' 6636 deallocate(mask_array, judge, judge_rev)
6637 deallocate(answer_negative, check_negative, both_negative)
6638 deallocate(answer_max, answer_min)
6644 pos_str_len = len_trim(pos_str)
6646 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 6648 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
6649 write(*,*)
' is NOT EQUAL to' 6650 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
6651 & //
' ', right_min,
' < ' 6652 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
6656 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 6664 & message, answer, check, significant_digits, ignore_digits )
6668 character(*),
intent(in):: message
6669 real,
intent(in):: answer(:,:,:,:,:,:)
6670 real,
intent(in):: check(:,:,:,:,:,:)
6671 integer,
intent(in):: significant_digits
6672 integer,
intent(in):: ignore_digits
6674 character(STRING):: pos_str
6675 real:: wrong, right_max, right_min
6676 character(STRING):: pos_str_space
6677 integer:: pos_str_len
6680 integer:: answer_shape(6), check_shape(6), pos(6)
6681 logical:: consist_shape(6)
6682 character(TOKEN):: pos_array(6)
6683 integer,
allocatable:: mask_array(:,:,:,:,:,:)
6684 logical,
allocatable:: judge(:,:,:,:,:,:)
6685 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
6686 logical,
allocatable:: answer_negative(:,:,:,:,:,:)
6687 logical,
allocatable:: check_negative(:,:,:,:,:,:)
6688 logical,
allocatable:: both_negative(:,:,:,:,:,:)
6689 real,
allocatable:: answer_max(:,:,:,:,:,:)
6690 real,
allocatable:: answer_min(:,:,:,:,:,:)
6695 if ( significant_digits < 1 )
then 6696 write(*,*)
' *** Error [AssertEQ] *** ' 6697 write(*,*)
' Specify a number more than 1 to "significant_digits"' 6701 answer_shape = shape(answer)
6702 check_shape = shape(check)
6704 consist_shape = answer_shape == check_shape
6706 if (.not. all(consist_shape))
then 6707 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 6709 write(*,*)
' shape of check is (', check_shape,
')' 6710 write(*,*)
' is INCORRECT' 6711 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 6717 allocate( mask_array( &
6718 & answer_shape(1), &
6720 & answer_shape(2), &
6722 & answer_shape(3), &
6724 & answer_shape(4), &
6726 & answer_shape(5), &
6728 & answer_shape(6) ) &
6732 & answer_shape(1), &
6734 & answer_shape(2), &
6736 & answer_shape(3), &
6738 & answer_shape(4), &
6740 & answer_shape(5), &
6742 & answer_shape(6) ) &
6745 allocate( judge_rev( &
6746 & answer_shape(1), &
6748 & answer_shape(2), &
6750 & answer_shape(3), &
6752 & answer_shape(4), &
6754 & answer_shape(5), &
6756 & answer_shape(6) ) &
6759 allocate( answer_negative( &
6760 & answer_shape(1), &
6762 & answer_shape(2), &
6764 & answer_shape(3), &
6766 & answer_shape(4), &
6768 & answer_shape(5), &
6770 & answer_shape(6) ) &
6773 allocate( check_negative( &
6774 & answer_shape(1), &
6776 & answer_shape(2), &
6778 & answer_shape(3), &
6780 & answer_shape(4), &
6782 & answer_shape(5), &
6784 & answer_shape(6) ) &
6787 allocate( both_negative( &
6788 & answer_shape(1), &
6790 & answer_shape(2), &
6792 & answer_shape(3), &
6794 & answer_shape(4), &
6796 & answer_shape(5), &
6798 & answer_shape(6) ) &
6801 allocate( answer_max( &
6802 & answer_shape(1), &
6804 & answer_shape(2), &
6806 & answer_shape(3), &
6808 & answer_shape(4), &
6810 & answer_shape(5), &
6812 & answer_shape(6) ) &
6815 allocate( answer_min( &
6816 & answer_shape(1), &
6818 & answer_shape(2), &
6820 & answer_shape(3), &
6822 & answer_shape(4), &
6824 & answer_shape(5), &
6826 & answer_shape(6) ) &
6829 answer_negative = answer < 0.0
6830 check_negative = check < 0.0
6831 both_negative = answer_negative .and. check_negative
6833 where (both_negative)
6837 & - 0.1 ** significant_digits ) &
6838 & + 0.1 ** (- ignore_digits)
6843 & + 0.1 ** significant_digits ) &
6844 & - 0.1 ** (- ignore_digits)
6849 & + 0.1 ** significant_digits ) &
6850 & + 0.1 ** (- ignore_digits)
6855 & - 0.1 ** significant_digits ) &
6856 & - 0.1 ** (- ignore_digits)
6859 judge = answer_max > check .and. check > answer_min
6860 judge_rev = .not. judge
6861 err_flag = any(judge_rev)
6863 pos = maxloc(mask_array, judge_rev)
6880 right_max = answer_max( &
6893 right_min = answer_min( &
6906 if ( right_max < right_min )
then 6907 right_tmp = right_max
6908 right_max = right_min
6909 right_min = right_tmp
6912 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
6914 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
6916 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
6918 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
6920 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
6922 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
6926 & trim(adjustl(pos_array(1))) //
',' // &
6928 & trim(adjustl(pos_array(2))) //
',' // &
6930 & trim(adjustl(pos_array(3))) //
',' // &
6932 & trim(adjustl(pos_array(4))) //
',' // &
6934 & trim(adjustl(pos_array(5))) //
',' // &
6936 & trim(adjustl(pos_array(6))) //
')' 6939 deallocate(mask_array, judge, judge_rev)
6940 deallocate(answer_negative, check_negative, both_negative)
6941 deallocate(answer_max, answer_min)
6947 pos_str_len = len_trim(pos_str)
6949 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 6951 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
6952 write(*,*)
' is NOT EQUAL to' 6953 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
6954 & //
' ', right_min,
' < ' 6955 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
6959 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 6967 & message, answer, check, significant_digits, ignore_digits )
6971 character(*),
intent(in):: message
6972 real,
intent(in):: answer(:,:,:,:,:,:,:)
6973 real,
intent(in):: check(:,:,:,:,:,:,:)
6974 integer,
intent(in):: significant_digits
6975 integer,
intent(in):: ignore_digits
6977 character(STRING):: pos_str
6978 real:: wrong, right_max, right_min
6979 character(STRING):: pos_str_space
6980 integer:: pos_str_len
6983 integer:: answer_shape(7), check_shape(7), pos(7)
6984 logical:: consist_shape(7)
6985 character(TOKEN):: pos_array(7)
6986 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
6987 logical,
allocatable:: judge(:,:,:,:,:,:,:)
6988 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
6989 logical,
allocatable:: answer_negative(:,:,:,:,:,:,:)
6990 logical,
allocatable:: check_negative(:,:,:,:,:,:,:)
6991 logical,
allocatable:: both_negative(:,:,:,:,:,:,:)
6992 real,
allocatable:: answer_max(:,:,:,:,:,:,:)
6993 real,
allocatable:: answer_min(:,:,:,:,:,:,:)
6998 if ( significant_digits < 1 )
then 6999 write(*,*)
' *** Error [AssertEQ] *** ' 7000 write(*,*)
' Specify a number more than 1 to "significant_digits"' 7004 answer_shape = shape(answer)
7005 check_shape = shape(check)
7007 consist_shape = answer_shape == check_shape
7009 if (.not. all(consist_shape))
then 7010 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7012 write(*,*)
' shape of check is (', check_shape,
')' 7013 write(*,*)
' is INCORRECT' 7014 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 7020 allocate( mask_array( &
7021 & answer_shape(1), &
7023 & answer_shape(2), &
7025 & answer_shape(3), &
7027 & answer_shape(4), &
7029 & answer_shape(5), &
7031 & answer_shape(6), &
7033 & answer_shape(7) ) &
7037 & answer_shape(1), &
7039 & answer_shape(2), &
7041 & answer_shape(3), &
7043 & answer_shape(4), &
7045 & answer_shape(5), &
7047 & answer_shape(6), &
7049 & answer_shape(7) ) &
7052 allocate( judge_rev( &
7053 & answer_shape(1), &
7055 & answer_shape(2), &
7057 & answer_shape(3), &
7059 & answer_shape(4), &
7061 & answer_shape(5), &
7063 & answer_shape(6), &
7065 & answer_shape(7) ) &
7068 allocate( answer_negative( &
7069 & answer_shape(1), &
7071 & answer_shape(2), &
7073 & answer_shape(3), &
7075 & answer_shape(4), &
7077 & answer_shape(5), &
7079 & answer_shape(6), &
7081 & answer_shape(7) ) &
7084 allocate( check_negative( &
7085 & answer_shape(1), &
7087 & answer_shape(2), &
7089 & answer_shape(3), &
7091 & answer_shape(4), &
7093 & answer_shape(5), &
7095 & answer_shape(6), &
7097 & answer_shape(7) ) &
7100 allocate( both_negative( &
7101 & answer_shape(1), &
7103 & answer_shape(2), &
7105 & answer_shape(3), &
7107 & answer_shape(4), &
7109 & answer_shape(5), &
7111 & answer_shape(6), &
7113 & answer_shape(7) ) &
7116 allocate( answer_max( &
7117 & answer_shape(1), &
7119 & answer_shape(2), &
7121 & answer_shape(3), &
7123 & answer_shape(4), &
7125 & answer_shape(5), &
7127 & answer_shape(6), &
7129 & answer_shape(7) ) &
7132 allocate( answer_min( &
7133 & answer_shape(1), &
7135 & answer_shape(2), &
7137 & answer_shape(3), &
7139 & answer_shape(4), &
7141 & answer_shape(5), &
7143 & answer_shape(6), &
7145 & answer_shape(7) ) &
7148 answer_negative = answer < 0.0
7149 check_negative = check < 0.0
7150 both_negative = answer_negative .and. check_negative
7152 where (both_negative)
7156 & - 0.1 ** significant_digits ) &
7157 & + 0.1 ** (- ignore_digits)
7162 & + 0.1 ** significant_digits ) &
7163 & - 0.1 ** (- ignore_digits)
7168 & + 0.1 ** significant_digits ) &
7169 & + 0.1 ** (- ignore_digits)
7174 & - 0.1 ** significant_digits ) &
7175 & - 0.1 ** (- ignore_digits)
7178 judge = answer_max > check .and. check > answer_min
7179 judge_rev = .not. judge
7180 err_flag = any(judge_rev)
7182 pos = maxloc(mask_array, judge_rev)
7201 right_max = answer_max( &
7216 right_min = answer_min( &
7231 if ( right_max < right_min )
then 7232 right_tmp = right_max
7233 right_max = right_min
7234 right_min = right_tmp
7237 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
7239 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
7241 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
7243 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
7245 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
7247 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
7249 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
7253 & trim(adjustl(pos_array(1))) //
',' // &
7255 & trim(adjustl(pos_array(2))) //
',' // &
7257 & trim(adjustl(pos_array(3))) //
',' // &
7259 & trim(adjustl(pos_array(4))) //
',' // &
7261 & trim(adjustl(pos_array(5))) //
',' // &
7263 & trim(adjustl(pos_array(6))) //
',' // &
7265 & trim(adjustl(pos_array(7))) //
')' 7268 deallocate(mask_array, judge, judge_rev)
7269 deallocate(answer_negative, check_negative, both_negative)
7270 deallocate(answer_max, answer_min)
7276 pos_str_len = len_trim(pos_str)
7278 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7280 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
7281 write(*,*)
' is NOT EQUAL to' 7282 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
7283 & //
' ', right_min,
' < ' 7284 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
7288 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 7296 & message, answer, check, significant_digits, ignore_digits )
7300 character(*),
intent(in):: message
7301 real(DP),
intent(in):: answer
7302 real(DP),
intent(in):: check
7303 integer,
intent(in):: significant_digits
7304 integer,
intent(in):: ignore_digits
7306 character(STRING):: pos_str
7307 real(DP):: wrong, right_max, right_min
7308 character(STRING):: pos_str_space
7309 integer:: pos_str_len
7310 real(DP):: right_tmp
7312 real(DP):: answer_max
7313 real(DP):: answer_min
7318 if ( significant_digits < 1 )
then 7319 write(*,*)
' *** Error [AssertEQ] *** ' 7320 write(*,*)
' Specify a number more than 1 to "significant_digits"' 7324 if ( answer < 0.0_dp .and. check < 0.0_dp )
then 7328 & - 0.1_dp ** significant_digits ) &
7329 & + 0.1_dp ** (- ignore_digits)
7334 & + 0.1_dp ** significant_digits ) &
7335 & - 0.1_dp ** (- ignore_digits)
7341 & + 0.1_dp ** significant_digits ) &
7342 & + 0.1_dp ** (- ignore_digits)
7347 & - 0.1_dp ** significant_digits ) &
7348 & - 0.1_dp ** (- ignore_digits)
7352 right_max = answer_max
7353 right_min = answer_min
7354 if ( right_max < right_min )
then 7355 right_tmp = right_max
7356 right_max = right_min
7357 right_min = right_tmp
7360 err_flag = .not. (answer_max > check .and. check > answer_min)
7368 pos_str_len = len_trim(pos_str)
7370 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7372 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
7373 write(*,*)
' is NOT EQUAL to' 7374 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
7375 & //
' ', right_min,
' < ' 7376 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
7380 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 7388 & message, answer, check, significant_digits, ignore_digits )
7392 character(*),
intent(in):: message
7393 real(DP),
intent(in):: answer(:)
7394 real(DP),
intent(in):: check(:)
7395 integer,
intent(in):: significant_digits
7396 integer,
intent(in):: ignore_digits
7398 character(STRING):: pos_str
7399 real(DP):: wrong, right_max, right_min
7400 character(STRING):: pos_str_space
7401 integer:: pos_str_len
7402 real(DP):: right_tmp
7404 integer:: answer_shape(1), check_shape(1), pos(1)
7405 logical:: consist_shape(1)
7406 character(TOKEN):: pos_array(1)
7407 integer,
allocatable:: mask_array(:)
7408 logical,
allocatable:: judge(:)
7409 logical,
allocatable:: judge_rev(:)
7410 logical,
allocatable:: answer_negative(:)
7411 logical,
allocatable:: check_negative(:)
7412 logical,
allocatable:: both_negative(:)
7413 real(DP),
allocatable:: answer_max(:)
7414 real(DP),
allocatable:: answer_min(:)
7419 if ( significant_digits < 1 )
then 7420 write(*,*)
' *** Error [AssertEQ] *** ' 7421 write(*,*)
' Specify a number more than 1 to "significant_digits"' 7425 answer_shape = shape(answer)
7426 check_shape = shape(check)
7428 consist_shape = answer_shape == check_shape
7430 if (.not. all(consist_shape))
then 7431 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7433 write(*,*)
' shape of check is (', check_shape,
')' 7434 write(*,*)
' is INCORRECT' 7435 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 7441 allocate( mask_array( &
7443 & answer_shape(1) ) &
7448 & answer_shape(1) ) &
7451 allocate( judge_rev( &
7453 & answer_shape(1) ) &
7456 allocate( answer_negative( &
7458 & answer_shape(1) ) &
7461 allocate( check_negative( &
7463 & answer_shape(1) ) &
7466 allocate( both_negative( &
7468 & answer_shape(1) ) &
7471 allocate( answer_max( &
7473 & answer_shape(1) ) &
7476 allocate( answer_min( &
7478 & answer_shape(1) ) &
7481 answer_negative = answer < 0.0_dp
7482 check_negative = check < 0.0_dp
7483 both_negative = answer_negative .and. check_negative
7485 where (both_negative)
7489 & - 0.1_dp ** significant_digits ) &
7490 & + 0.1_dp ** (- ignore_digits)
7495 & + 0.1_dp ** significant_digits ) &
7496 & - 0.1_dp ** (- ignore_digits)
7501 & + 0.1_dp ** significant_digits ) &
7502 & + 0.1_dp ** (- ignore_digits)
7507 & - 0.1_dp ** significant_digits ) &
7508 & - 0.1_dp ** (- ignore_digits)
7511 judge = answer_max > check .and. check > answer_min
7512 judge_rev = .not. judge
7513 err_flag = any(judge_rev)
7515 pos = maxloc(mask_array, judge_rev)
7523 right_max = answer_max( &
7527 right_min = answer_min( &
7531 if ( right_max < right_min )
then 7532 right_tmp = right_max
7533 right_max = right_min
7534 right_min = right_tmp
7537 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
7542 & trim(adjustl(pos_array(1))) //
')' 7545 deallocate(mask_array, judge, judge_rev)
7546 deallocate(answer_negative, check_negative, both_negative)
7547 deallocate(answer_max, answer_min)
7553 pos_str_len = len_trim(pos_str)
7555 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7557 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
7558 write(*,*)
' is NOT EQUAL to' 7559 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
7560 & //
' ', right_min,
' < ' 7561 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
7565 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 7573 & message, answer, check, significant_digits, ignore_digits )
7577 character(*),
intent(in):: message
7578 real(DP),
intent(in):: answer(:,:)
7579 real(DP),
intent(in):: check(:,:)
7580 integer,
intent(in):: significant_digits
7581 integer,
intent(in):: ignore_digits
7583 character(STRING):: pos_str
7584 real(DP):: wrong, right_max, right_min
7585 character(STRING):: pos_str_space
7586 integer:: pos_str_len
7587 real(DP):: right_tmp
7589 integer:: answer_shape(2), check_shape(2), pos(2)
7590 logical:: consist_shape(2)
7591 character(TOKEN):: pos_array(2)
7592 integer,
allocatable:: mask_array(:,:)
7593 logical,
allocatable:: judge(:,:)
7594 logical,
allocatable:: judge_rev(:,:)
7595 logical,
allocatable:: answer_negative(:,:)
7596 logical,
allocatable:: check_negative(:,:)
7597 logical,
allocatable:: both_negative(:,:)
7598 real(DP),
allocatable:: answer_max(:,:)
7599 real(DP),
allocatable:: answer_min(:,:)
7604 if ( significant_digits < 1 )
then 7605 write(*,*)
' *** Error [AssertEQ] *** ' 7606 write(*,*)
' Specify a number more than 1 to "significant_digits"' 7610 answer_shape = shape(answer)
7611 check_shape = shape(check)
7613 consist_shape = answer_shape == check_shape
7615 if (.not. all(consist_shape))
then 7616 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7618 write(*,*)
' shape of check is (', check_shape,
')' 7619 write(*,*)
' is INCORRECT' 7620 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 7626 allocate( mask_array( &
7627 & answer_shape(1), &
7629 & answer_shape(2) ) &
7633 & answer_shape(1), &
7635 & answer_shape(2) ) &
7638 allocate( judge_rev( &
7639 & answer_shape(1), &
7641 & answer_shape(2) ) &
7644 allocate( answer_negative( &
7645 & answer_shape(1), &
7647 & answer_shape(2) ) &
7650 allocate( check_negative( &
7651 & answer_shape(1), &
7653 & answer_shape(2) ) &
7656 allocate( both_negative( &
7657 & answer_shape(1), &
7659 & answer_shape(2) ) &
7662 allocate( answer_max( &
7663 & answer_shape(1), &
7665 & answer_shape(2) ) &
7668 allocate( answer_min( &
7669 & answer_shape(1), &
7671 & answer_shape(2) ) &
7674 answer_negative = answer < 0.0_dp
7675 check_negative = check < 0.0_dp
7676 both_negative = answer_negative .and. check_negative
7678 where (both_negative)
7682 & - 0.1_dp ** significant_digits ) &
7683 & + 0.1_dp ** (- ignore_digits)
7688 & + 0.1_dp ** significant_digits ) &
7689 & - 0.1_dp ** (- ignore_digits)
7694 & + 0.1_dp ** significant_digits ) &
7695 & + 0.1_dp ** (- ignore_digits)
7700 & - 0.1_dp ** significant_digits ) &
7701 & - 0.1_dp ** (- ignore_digits)
7704 judge = answer_max > check .and. check > answer_min
7705 judge_rev = .not. judge
7706 err_flag = any(judge_rev)
7708 pos = maxloc(mask_array, judge_rev)
7717 right_max = answer_max( &
7722 right_min = answer_min( &
7727 if ( right_max < right_min )
then 7728 right_tmp = right_max
7729 right_max = right_min
7730 right_min = right_tmp
7733 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
7735 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
7739 & trim(adjustl(pos_array(1))) //
',' // &
7741 & trim(adjustl(pos_array(2))) //
')' 7744 deallocate(mask_array, judge, judge_rev)
7745 deallocate(answer_negative, check_negative, both_negative)
7746 deallocate(answer_max, answer_min)
7752 pos_str_len = len_trim(pos_str)
7754 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7756 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
7757 write(*,*)
' is NOT EQUAL to' 7758 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
7759 & //
' ', right_min,
' < ' 7760 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
7764 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 7772 & message, answer, check, significant_digits, ignore_digits )
7776 character(*),
intent(in):: message
7777 real(DP),
intent(in):: answer(:,:,:)
7778 real(DP),
intent(in):: check(:,:,:)
7779 integer,
intent(in):: significant_digits
7780 integer,
intent(in):: ignore_digits
7782 character(STRING):: pos_str
7783 real(DP):: wrong, right_max, right_min
7784 character(STRING):: pos_str_space
7785 integer:: pos_str_len
7786 real(DP):: right_tmp
7788 integer:: answer_shape(3), check_shape(3), pos(3)
7789 logical:: consist_shape(3)
7790 character(TOKEN):: pos_array(3)
7791 integer,
allocatable:: mask_array(:,:,:)
7792 logical,
allocatable:: judge(:,:,:)
7793 logical,
allocatable:: judge_rev(:,:,:)
7794 logical,
allocatable:: answer_negative(:,:,:)
7795 logical,
allocatable:: check_negative(:,:,:)
7796 logical,
allocatable:: both_negative(:,:,:)
7797 real(DP),
allocatable:: answer_max(:,:,:)
7798 real(DP),
allocatable:: answer_min(:,:,:)
7803 if ( significant_digits < 1 )
then 7804 write(*,*)
' *** Error [AssertEQ] *** ' 7805 write(*,*)
' Specify a number more than 1 to "significant_digits"' 7809 answer_shape = shape(answer)
7810 check_shape = shape(check)
7812 consist_shape = answer_shape == check_shape
7814 if (.not. all(consist_shape))
then 7815 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7817 write(*,*)
' shape of check is (', check_shape,
')' 7818 write(*,*)
' is INCORRECT' 7819 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 7825 allocate( mask_array( &
7826 & answer_shape(1), &
7828 & answer_shape(2), &
7830 & answer_shape(3) ) &
7834 & answer_shape(1), &
7836 & answer_shape(2), &
7838 & answer_shape(3) ) &
7841 allocate( judge_rev( &
7842 & answer_shape(1), &
7844 & answer_shape(2), &
7846 & answer_shape(3) ) &
7849 allocate( answer_negative( &
7850 & answer_shape(1), &
7852 & answer_shape(2), &
7854 & answer_shape(3) ) &
7857 allocate( check_negative( &
7858 & answer_shape(1), &
7860 & answer_shape(2), &
7862 & answer_shape(3) ) &
7865 allocate( both_negative( &
7866 & answer_shape(1), &
7868 & answer_shape(2), &
7870 & answer_shape(3) ) &
7873 allocate( answer_max( &
7874 & answer_shape(1), &
7876 & answer_shape(2), &
7878 & answer_shape(3) ) &
7881 allocate( answer_min( &
7882 & answer_shape(1), &
7884 & answer_shape(2), &
7886 & answer_shape(3) ) &
7889 answer_negative = answer < 0.0_dp
7890 check_negative = check < 0.0_dp
7891 both_negative = answer_negative .and. check_negative
7893 where (both_negative)
7897 & - 0.1_dp ** significant_digits ) &
7898 & + 0.1_dp ** (- ignore_digits)
7903 & + 0.1_dp ** significant_digits ) &
7904 & - 0.1_dp ** (- ignore_digits)
7909 & + 0.1_dp ** significant_digits ) &
7910 & + 0.1_dp ** (- ignore_digits)
7915 & - 0.1_dp ** significant_digits ) &
7916 & - 0.1_dp ** (- ignore_digits)
7919 judge = answer_max > check .and. check > answer_min
7920 judge_rev = .not. judge
7921 err_flag = any(judge_rev)
7923 pos = maxloc(mask_array, judge_rev)
7934 right_max = answer_max( &
7941 right_min = answer_min( &
7948 if ( right_max < right_min )
then 7949 right_tmp = right_max
7950 right_max = right_min
7951 right_min = right_tmp
7954 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
7956 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
7958 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
7962 & trim(adjustl(pos_array(1))) //
',' // &
7964 & trim(adjustl(pos_array(2))) //
',' // &
7966 & trim(adjustl(pos_array(3))) //
')' 7969 deallocate(mask_array, judge, judge_rev)
7970 deallocate(answer_negative, check_negative, both_negative)
7971 deallocate(answer_max, answer_min)
7977 pos_str_len = len_trim(pos_str)
7979 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 7981 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
7982 write(*,*)
' is NOT EQUAL to' 7983 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
7984 & //
' ', right_min,
' < ' 7985 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
7989 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 7997 & message, answer, check, significant_digits, ignore_digits )
8001 character(*),
intent(in):: message
8002 real(DP),
intent(in):: answer(:,:,:,:)
8003 real(DP),
intent(in):: check(:,:,:,:)
8004 integer,
intent(in):: significant_digits
8005 integer,
intent(in):: ignore_digits
8007 character(STRING):: pos_str
8008 real(DP):: wrong, right_max, right_min
8009 character(STRING):: pos_str_space
8010 integer:: pos_str_len
8011 real(DP):: right_tmp
8013 integer:: answer_shape(4), check_shape(4), pos(4)
8014 logical:: consist_shape(4)
8015 character(TOKEN):: pos_array(4)
8016 integer,
allocatable:: mask_array(:,:,:,:)
8017 logical,
allocatable:: judge(:,:,:,:)
8018 logical,
allocatable:: judge_rev(:,:,:,:)
8019 logical,
allocatable:: answer_negative(:,:,:,:)
8020 logical,
allocatable:: check_negative(:,:,:,:)
8021 logical,
allocatable:: both_negative(:,:,:,:)
8022 real(DP),
allocatable:: answer_max(:,:,:,:)
8023 real(DP),
allocatable:: answer_min(:,:,:,:)
8028 if ( significant_digits < 1 )
then 8029 write(*,*)
' *** Error [AssertEQ] *** ' 8030 write(*,*)
' Specify a number more than 1 to "significant_digits"' 8034 answer_shape = shape(answer)
8035 check_shape = shape(check)
8037 consist_shape = answer_shape == check_shape
8039 if (.not. all(consist_shape))
then 8040 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 8042 write(*,*)
' shape of check is (', check_shape,
')' 8043 write(*,*)
' is INCORRECT' 8044 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 8050 allocate( mask_array( &
8051 & answer_shape(1), &
8053 & answer_shape(2), &
8055 & answer_shape(3), &
8057 & answer_shape(4) ) &
8061 & answer_shape(1), &
8063 & answer_shape(2), &
8065 & answer_shape(3), &
8067 & answer_shape(4) ) &
8070 allocate( judge_rev( &
8071 & answer_shape(1), &
8073 & answer_shape(2), &
8075 & answer_shape(3), &
8077 & answer_shape(4) ) &
8080 allocate( answer_negative( &
8081 & answer_shape(1), &
8083 & answer_shape(2), &
8085 & answer_shape(3), &
8087 & answer_shape(4) ) &
8090 allocate( check_negative( &
8091 & answer_shape(1), &
8093 & answer_shape(2), &
8095 & answer_shape(3), &
8097 & answer_shape(4) ) &
8100 allocate( both_negative( &
8101 & answer_shape(1), &
8103 & answer_shape(2), &
8105 & answer_shape(3), &
8107 & answer_shape(4) ) &
8110 allocate( answer_max( &
8111 & answer_shape(1), &
8113 & answer_shape(2), &
8115 & answer_shape(3), &
8117 & answer_shape(4) ) &
8120 allocate( answer_min( &
8121 & answer_shape(1), &
8123 & answer_shape(2), &
8125 & answer_shape(3), &
8127 & answer_shape(4) ) &
8130 answer_negative = answer < 0.0_dp
8131 check_negative = check < 0.0_dp
8132 both_negative = answer_negative .and. check_negative
8134 where (both_negative)
8138 & - 0.1_dp ** significant_digits ) &
8139 & + 0.1_dp ** (- ignore_digits)
8144 & + 0.1_dp ** significant_digits ) &
8145 & - 0.1_dp ** (- ignore_digits)
8150 & + 0.1_dp ** significant_digits ) &
8151 & + 0.1_dp ** (- ignore_digits)
8156 & - 0.1_dp ** significant_digits ) &
8157 & - 0.1_dp ** (- ignore_digits)
8160 judge = answer_max > check .and. check > answer_min
8161 judge_rev = .not. judge
8162 err_flag = any(judge_rev)
8164 pos = maxloc(mask_array, judge_rev)
8177 right_max = answer_max( &
8186 right_min = answer_min( &
8195 if ( right_max < right_min )
then 8196 right_tmp = right_max
8197 right_max = right_min
8198 right_min = right_tmp
8201 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
8203 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
8205 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
8207 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
8211 & trim(adjustl(pos_array(1))) //
',' // &
8213 & trim(adjustl(pos_array(2))) //
',' // &
8215 & trim(adjustl(pos_array(3))) //
',' // &
8217 & trim(adjustl(pos_array(4))) //
')' 8220 deallocate(mask_array, judge, judge_rev)
8221 deallocate(answer_negative, check_negative, both_negative)
8222 deallocate(answer_max, answer_min)
8228 pos_str_len = len_trim(pos_str)
8230 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 8232 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
8233 write(*,*)
' is NOT EQUAL to' 8234 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
8235 & //
' ', right_min,
' < ' 8236 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
8240 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 8248 & message, answer, check, significant_digits, ignore_digits )
8252 character(*),
intent(in):: message
8253 real(DP),
intent(in):: answer(:,:,:,:,:)
8254 real(DP),
intent(in):: check(:,:,:,:,:)
8255 integer,
intent(in):: significant_digits
8256 integer,
intent(in):: ignore_digits
8258 character(STRING):: pos_str
8259 real(DP):: wrong, right_max, right_min
8260 character(STRING):: pos_str_space
8261 integer:: pos_str_len
8262 real(DP):: right_tmp
8264 integer:: answer_shape(5), check_shape(5), pos(5)
8265 logical:: consist_shape(5)
8266 character(TOKEN):: pos_array(5)
8267 integer,
allocatable:: mask_array(:,:,:,:,:)
8268 logical,
allocatable:: judge(:,:,:,:,:)
8269 logical,
allocatable:: judge_rev(:,:,:,:,:)
8270 logical,
allocatable:: answer_negative(:,:,:,:,:)
8271 logical,
allocatable:: check_negative(:,:,:,:,:)
8272 logical,
allocatable:: both_negative(:,:,:,:,:)
8273 real(DP),
allocatable:: answer_max(:,:,:,:,:)
8274 real(DP),
allocatable:: answer_min(:,:,:,:,:)
8279 if ( significant_digits < 1 )
then 8280 write(*,*)
' *** Error [AssertEQ] *** ' 8281 write(*,*)
' Specify a number more than 1 to "significant_digits"' 8285 answer_shape = shape(answer)
8286 check_shape = shape(check)
8288 consist_shape = answer_shape == check_shape
8290 if (.not. all(consist_shape))
then 8291 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 8293 write(*,*)
' shape of check is (', check_shape,
')' 8294 write(*,*)
' is INCORRECT' 8295 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 8301 allocate( mask_array( &
8302 & answer_shape(1), &
8304 & answer_shape(2), &
8306 & answer_shape(3), &
8308 & answer_shape(4), &
8310 & answer_shape(5) ) &
8314 & answer_shape(1), &
8316 & answer_shape(2), &
8318 & answer_shape(3), &
8320 & answer_shape(4), &
8322 & answer_shape(5) ) &
8325 allocate( judge_rev( &
8326 & answer_shape(1), &
8328 & answer_shape(2), &
8330 & answer_shape(3), &
8332 & answer_shape(4), &
8334 & answer_shape(5) ) &
8337 allocate( answer_negative( &
8338 & answer_shape(1), &
8340 & answer_shape(2), &
8342 & answer_shape(3), &
8344 & answer_shape(4), &
8346 & answer_shape(5) ) &
8349 allocate( check_negative( &
8350 & answer_shape(1), &
8352 & answer_shape(2), &
8354 & answer_shape(3), &
8356 & answer_shape(4), &
8358 & answer_shape(5) ) &
8361 allocate( both_negative( &
8362 & answer_shape(1), &
8364 & answer_shape(2), &
8366 & answer_shape(3), &
8368 & answer_shape(4), &
8370 & answer_shape(5) ) &
8373 allocate( answer_max( &
8374 & answer_shape(1), &
8376 & answer_shape(2), &
8378 & answer_shape(3), &
8380 & answer_shape(4), &
8382 & answer_shape(5) ) &
8385 allocate( answer_min( &
8386 & answer_shape(1), &
8388 & answer_shape(2), &
8390 & answer_shape(3), &
8392 & answer_shape(4), &
8394 & answer_shape(5) ) &
8397 answer_negative = answer < 0.0_dp
8398 check_negative = check < 0.0_dp
8399 both_negative = answer_negative .and. check_negative
8401 where (both_negative)
8405 & - 0.1_dp ** significant_digits ) &
8406 & + 0.1_dp ** (- ignore_digits)
8411 & + 0.1_dp ** significant_digits ) &
8412 & - 0.1_dp ** (- ignore_digits)
8417 & + 0.1_dp ** significant_digits ) &
8418 & + 0.1_dp ** (- ignore_digits)
8423 & - 0.1_dp ** significant_digits ) &
8424 & - 0.1_dp ** (- ignore_digits)
8427 judge = answer_max > check .and. check > answer_min
8428 judge_rev = .not. judge
8429 err_flag = any(judge_rev)
8431 pos = maxloc(mask_array, judge_rev)
8446 right_max = answer_max( &
8457 right_min = answer_min( &
8468 if ( right_max < right_min )
then 8469 right_tmp = right_max
8470 right_max = right_min
8471 right_min = right_tmp
8474 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
8476 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
8478 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
8480 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
8482 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
8486 & trim(adjustl(pos_array(1))) //
',' // &
8488 & trim(adjustl(pos_array(2))) //
',' // &
8490 & trim(adjustl(pos_array(3))) //
',' // &
8492 & trim(adjustl(pos_array(4))) //
',' // &
8494 & trim(adjustl(pos_array(5))) //
')' 8497 deallocate(mask_array, judge, judge_rev)
8498 deallocate(answer_negative, check_negative, both_negative)
8499 deallocate(answer_max, answer_min)
8505 pos_str_len = len_trim(pos_str)
8507 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 8509 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
8510 write(*,*)
' is NOT EQUAL to' 8511 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
8512 & //
' ', right_min,
' < ' 8513 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
8517 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 8525 & message, answer, check, significant_digits, ignore_digits )
8529 character(*),
intent(in):: message
8530 real(DP),
intent(in):: answer(:,:,:,:,:,:)
8531 real(DP),
intent(in):: check(:,:,:,:,:,:)
8532 integer,
intent(in):: significant_digits
8533 integer,
intent(in):: ignore_digits
8535 character(STRING):: pos_str
8536 real(DP):: wrong, right_max, right_min
8537 character(STRING):: pos_str_space
8538 integer:: pos_str_len
8539 real(DP):: right_tmp
8541 integer:: answer_shape(6), check_shape(6), pos(6)
8542 logical:: consist_shape(6)
8543 character(TOKEN):: pos_array(6)
8544 integer,
allocatable:: mask_array(:,:,:,:,:,:)
8545 logical,
allocatable:: judge(:,:,:,:,:,:)
8546 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
8547 logical,
allocatable:: answer_negative(:,:,:,:,:,:)
8548 logical,
allocatable:: check_negative(:,:,:,:,:,:)
8549 logical,
allocatable:: both_negative(:,:,:,:,:,:)
8550 real(DP),
allocatable:: answer_max(:,:,:,:,:,:)
8551 real(DP),
allocatable:: answer_min(:,:,:,:,:,:)
8556 if ( significant_digits < 1 )
then 8557 write(*,*)
' *** Error [AssertEQ] *** ' 8558 write(*,*)
' Specify a number more than 1 to "significant_digits"' 8562 answer_shape = shape(answer)
8563 check_shape = shape(check)
8565 consist_shape = answer_shape == check_shape
8567 if (.not. all(consist_shape))
then 8568 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 8570 write(*,*)
' shape of check is (', check_shape,
')' 8571 write(*,*)
' is INCORRECT' 8572 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 8578 allocate( mask_array( &
8579 & answer_shape(1), &
8581 & answer_shape(2), &
8583 & answer_shape(3), &
8585 & answer_shape(4), &
8587 & answer_shape(5), &
8589 & answer_shape(6) ) &
8593 & answer_shape(1), &
8595 & answer_shape(2), &
8597 & answer_shape(3), &
8599 & answer_shape(4), &
8601 & answer_shape(5), &
8603 & answer_shape(6) ) &
8606 allocate( judge_rev( &
8607 & answer_shape(1), &
8609 & answer_shape(2), &
8611 & answer_shape(3), &
8613 & answer_shape(4), &
8615 & answer_shape(5), &
8617 & answer_shape(6) ) &
8620 allocate( answer_negative( &
8621 & answer_shape(1), &
8623 & answer_shape(2), &
8625 & answer_shape(3), &
8627 & answer_shape(4), &
8629 & answer_shape(5), &
8631 & answer_shape(6) ) &
8634 allocate( check_negative( &
8635 & answer_shape(1), &
8637 & answer_shape(2), &
8639 & answer_shape(3), &
8641 & answer_shape(4), &
8643 & answer_shape(5), &
8645 & answer_shape(6) ) &
8648 allocate( both_negative( &
8649 & answer_shape(1), &
8651 & answer_shape(2), &
8653 & answer_shape(3), &
8655 & answer_shape(4), &
8657 & answer_shape(5), &
8659 & answer_shape(6) ) &
8662 allocate( answer_max( &
8663 & answer_shape(1), &
8665 & answer_shape(2), &
8667 & answer_shape(3), &
8669 & answer_shape(4), &
8671 & answer_shape(5), &
8673 & answer_shape(6) ) &
8676 allocate( answer_min( &
8677 & answer_shape(1), &
8679 & answer_shape(2), &
8681 & answer_shape(3), &
8683 & answer_shape(4), &
8685 & answer_shape(5), &
8687 & answer_shape(6) ) &
8690 answer_negative = answer < 0.0_dp
8691 check_negative = check < 0.0_dp
8692 both_negative = answer_negative .and. check_negative
8694 where (both_negative)
8698 & - 0.1_dp ** significant_digits ) &
8699 & + 0.1_dp ** (- ignore_digits)
8704 & + 0.1_dp ** significant_digits ) &
8705 & - 0.1_dp ** (- ignore_digits)
8710 & + 0.1_dp ** significant_digits ) &
8711 & + 0.1_dp ** (- ignore_digits)
8716 & - 0.1_dp ** significant_digits ) &
8717 & - 0.1_dp ** (- ignore_digits)
8720 judge = answer_max > check .and. check > answer_min
8721 judge_rev = .not. judge
8722 err_flag = any(judge_rev)
8724 pos = maxloc(mask_array, judge_rev)
8741 right_max = answer_max( &
8754 right_min = answer_min( &
8767 if ( right_max < right_min )
then 8768 right_tmp = right_max
8769 right_max = right_min
8770 right_min = right_tmp
8773 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
8775 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
8777 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
8779 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
8781 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
8783 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
8787 & trim(adjustl(pos_array(1))) //
',' // &
8789 & trim(adjustl(pos_array(2))) //
',' // &
8791 & trim(adjustl(pos_array(3))) //
',' // &
8793 & trim(adjustl(pos_array(4))) //
',' // &
8795 & trim(adjustl(pos_array(5))) //
',' // &
8797 & trim(adjustl(pos_array(6))) //
')' 8800 deallocate(mask_array, judge, judge_rev)
8801 deallocate(answer_negative, check_negative, both_negative)
8802 deallocate(answer_max, answer_min)
8808 pos_str_len = len_trim(pos_str)
8810 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 8812 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
8813 write(*,*)
' is NOT EQUAL to' 8814 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
8815 & //
' ', right_min,
' < ' 8816 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
8820 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 8828 & message, answer, check, significant_digits, ignore_digits )
8832 character(*),
intent(in):: message
8833 real(DP),
intent(in):: answer(:,:,:,:,:,:,:)
8834 real(DP),
intent(in):: check(:,:,:,:,:,:,:)
8835 integer,
intent(in):: significant_digits
8836 integer,
intent(in):: ignore_digits
8838 character(STRING):: pos_str
8839 real(DP):: wrong, right_max, right_min
8840 character(STRING):: pos_str_space
8841 integer:: pos_str_len
8842 real(DP):: right_tmp
8844 integer:: answer_shape(7), check_shape(7), pos(7)
8845 logical:: consist_shape(7)
8846 character(TOKEN):: pos_array(7)
8847 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
8848 logical,
allocatable:: judge(:,:,:,:,:,:,:)
8849 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
8850 logical,
allocatable:: answer_negative(:,:,:,:,:,:,:)
8851 logical,
allocatable:: check_negative(:,:,:,:,:,:,:)
8852 logical,
allocatable:: both_negative(:,:,:,:,:,:,:)
8853 real(DP),
allocatable:: answer_max(:,:,:,:,:,:,:)
8854 real(DP),
allocatable:: answer_min(:,:,:,:,:,:,:)
8859 if ( significant_digits < 1 )
then 8860 write(*,*)
' *** Error [AssertEQ] *** ' 8861 write(*,*)
' Specify a number more than 1 to "significant_digits"' 8865 answer_shape = shape(answer)
8866 check_shape = shape(check)
8868 consist_shape = answer_shape == check_shape
8870 if (.not. all(consist_shape))
then 8871 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 8873 write(*,*)
' shape of check is (', check_shape,
')' 8874 write(*,*)
' is INCORRECT' 8875 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 8881 allocate( mask_array( &
8882 & answer_shape(1), &
8884 & answer_shape(2), &
8886 & answer_shape(3), &
8888 & answer_shape(4), &
8890 & answer_shape(5), &
8892 & answer_shape(6), &
8894 & answer_shape(7) ) &
8898 & answer_shape(1), &
8900 & answer_shape(2), &
8902 & answer_shape(3), &
8904 & answer_shape(4), &
8906 & answer_shape(5), &
8908 & answer_shape(6), &
8910 & answer_shape(7) ) &
8913 allocate( judge_rev( &
8914 & answer_shape(1), &
8916 & answer_shape(2), &
8918 & answer_shape(3), &
8920 & answer_shape(4), &
8922 & answer_shape(5), &
8924 & answer_shape(6), &
8926 & answer_shape(7) ) &
8929 allocate( answer_negative( &
8930 & answer_shape(1), &
8932 & answer_shape(2), &
8934 & answer_shape(3), &
8936 & answer_shape(4), &
8938 & answer_shape(5), &
8940 & answer_shape(6), &
8942 & answer_shape(7) ) &
8945 allocate( check_negative( &
8946 & answer_shape(1), &
8948 & answer_shape(2), &
8950 & answer_shape(3), &
8952 & answer_shape(4), &
8954 & answer_shape(5), &
8956 & answer_shape(6), &
8958 & answer_shape(7) ) &
8961 allocate( both_negative( &
8962 & answer_shape(1), &
8964 & answer_shape(2), &
8966 & answer_shape(3), &
8968 & answer_shape(4), &
8970 & answer_shape(5), &
8972 & answer_shape(6), &
8974 & answer_shape(7) ) &
8977 allocate( answer_max( &
8978 & answer_shape(1), &
8980 & answer_shape(2), &
8982 & answer_shape(3), &
8984 & answer_shape(4), &
8986 & answer_shape(5), &
8988 & answer_shape(6), &
8990 & answer_shape(7) ) &
8993 allocate( answer_min( &
8994 & answer_shape(1), &
8996 & answer_shape(2), &
8998 & answer_shape(3), &
9000 & answer_shape(4), &
9002 & answer_shape(5), &
9004 & answer_shape(6), &
9006 & answer_shape(7) ) &
9009 answer_negative = answer < 0.0_dp
9010 check_negative = check < 0.0_dp
9011 both_negative = answer_negative .and. check_negative
9013 where (both_negative)
9017 & - 0.1_dp ** significant_digits ) &
9018 & + 0.1_dp ** (- ignore_digits)
9023 & + 0.1_dp ** significant_digits ) &
9024 & - 0.1_dp ** (- ignore_digits)
9029 & + 0.1_dp ** significant_digits ) &
9030 & + 0.1_dp ** (- ignore_digits)
9035 & - 0.1_dp ** significant_digits ) &
9036 & - 0.1_dp ** (- ignore_digits)
9039 judge = answer_max > check .and. check > answer_min
9040 judge_rev = .not. judge
9041 err_flag = any(judge_rev)
9043 pos = maxloc(mask_array, judge_rev)
9062 right_max = answer_max( &
9077 right_min = answer_min( &
9092 if ( right_max < right_min )
then 9093 right_tmp = right_max
9094 right_max = right_min
9095 right_min = right_tmp
9098 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
9100 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
9102 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
9104 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
9106 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
9108 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
9110 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
9114 & trim(adjustl(pos_array(1))) //
',' // &
9116 & trim(adjustl(pos_array(2))) //
',' // &
9118 & trim(adjustl(pos_array(3))) //
',' // &
9120 & trim(adjustl(pos_array(4))) //
',' // &
9122 & trim(adjustl(pos_array(5))) //
',' // &
9124 & trim(adjustl(pos_array(6))) //
',' // &
9126 & trim(adjustl(pos_array(7))) //
')' 9129 deallocate(mask_array, judge, judge_rev)
9130 deallocate(answer_negative, check_negative, both_negative)
9131 deallocate(answer_max, answer_min)
9137 pos_str_len = len_trim(pos_str)
9139 write(*,*)
' *** Error [AssertEQ] *** Checking ' // trim(message) //
' FAILURE' 9141 write(*,*)
' check' // trim(pos_str) //
' = ', wrong
9142 write(*,*)
' is NOT EQUAL to' 9143 write(*,*)
' ' // pos_str_space(1:pos_str_len) &
9144 & //
' ', right_min,
' < ' 9145 write(*,*)
' answer' // trim(pos_str) //
' < ', right_max
9149 write(*,*)
' *** MESSAGE [AssertEQ] *** Checking ' // trim(message) //
' OK' 9157 & message, answer, check, negative_support)
9161 character(*),
intent(in):: message
9162 integer,
intent(in):: answer
9163 integer,
intent(in):: check
9164 logical,
intent(in),
optional:: negative_support
9166 logical:: negative_support_on
9167 character(STRING):: pos_str
9168 character(TOKEN):: abs_mes
9169 integer:: wrong, right
9174 if (
present(negative_support))
then 9175 negative_support_on = negative_support
9177 negative_support_on = .true.
9183 err_flag = .not. answer < check
9188 & .and. negative_support_on )
then 9190 err_flag = .not. err_flag
9191 abs_mes =
'ABSOLUTE value of' 9202 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9204 write(*,*)
' ' // trim(abs_mes) // &
9205 &
' check' // trim(pos_str) //
' = ', wrong
9206 write(*,*)
' is NOT GREATER THAN' 9207 write(*,*)
' ' // trim(abs_mes) // &
9208 &
' answer' // trim(pos_str) //
' = ', right
9212 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 9220 & message, answer, check, negative_support)
9224 character(*),
intent(in):: message
9225 integer,
intent(in):: answer(:)
9226 integer,
intent(in):: check(:)
9227 logical,
intent(in),
optional:: negative_support
9229 logical:: negative_support_on
9230 character(STRING):: pos_str
9231 character(TOKEN):: abs_mes
9232 integer:: wrong, right
9234 integer:: answer_shape(1), check_shape(1), pos(1)
9235 logical:: consist_shape(1)
9236 character(TOKEN):: pos_array(1)
9237 integer,
allocatable:: mask_array(:)
9238 logical,
allocatable:: judge(:)
9239 logical,
allocatable:: judge_rev(:)
9240 logical,
allocatable:: answer_negative(:)
9241 logical,
allocatable:: check_negative(:)
9242 logical,
allocatable:: both_negative(:)
9246 if (
present(negative_support))
then 9247 negative_support_on = negative_support
9249 negative_support_on = .true.
9255 answer_shape = shape(answer)
9256 check_shape = shape(check)
9258 consist_shape = answer_shape == check_shape
9260 if (.not. all(consist_shape))
then 9261 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9263 write(*,*)
' shape of check is (', check_shape,
')' 9264 write(*,*)
' is INCORRECT' 9265 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 9271 allocate( mask_array( &
9273 & answer_shape(1) ) &
9278 & answer_shape(1) ) &
9281 allocate( judge_rev( &
9283 & answer_shape(1) ) &
9286 allocate( answer_negative( &
9288 & answer_shape(1) ) &
9291 allocate( check_negative( &
9293 & answer_shape(1) ) &
9296 allocate( both_negative( &
9298 & answer_shape(1) ) &
9301 answer_negative = answer < 0
9302 check_negative = check < 0
9303 both_negative = answer_negative .and. check_negative
9304 if (.not. negative_support_on) both_negative = .false.
9306 judge = answer < check
9307 where (both_negative) judge = .not. judge
9309 judge_rev = .not. judge
9310 err_flag = any(judge_rev)
9312 pos = maxloc(mask_array, judge_rev)
9324 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
9329 & trim(adjustl(pos_array(1))) //
')' 9331 if ( both_negative( &
9335 abs_mes =
'ABSOLUTE value of' 9342 deallocate(mask_array, judge, judge_rev)
9343 deallocate(answer_negative, check_negative, both_negative)
9349 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9351 write(*,*)
' ' // trim(abs_mes) // &
9352 &
' check' // trim(pos_str) //
' = ', wrong
9353 write(*,*)
' is NOT GREATER THAN' 9354 write(*,*)
' ' // trim(abs_mes) // &
9355 &
' answer' // trim(pos_str) //
' = ', right
9359 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 9367 & message, answer, check, negative_support)
9371 character(*),
intent(in):: message
9372 integer,
intent(in):: answer(:,:)
9373 integer,
intent(in):: check(:,:)
9374 logical,
intent(in),
optional:: negative_support
9376 logical:: negative_support_on
9377 character(STRING):: pos_str
9378 character(TOKEN):: abs_mes
9379 integer:: wrong, right
9381 integer:: answer_shape(2), check_shape(2), pos(2)
9382 logical:: consist_shape(2)
9383 character(TOKEN):: pos_array(2)
9384 integer,
allocatable:: mask_array(:,:)
9385 logical,
allocatable:: judge(:,:)
9386 logical,
allocatable:: judge_rev(:,:)
9387 logical,
allocatable:: answer_negative(:,:)
9388 logical,
allocatable:: check_negative(:,:)
9389 logical,
allocatable:: both_negative(:,:)
9393 if (
present(negative_support))
then 9394 negative_support_on = negative_support
9396 negative_support_on = .true.
9402 answer_shape = shape(answer)
9403 check_shape = shape(check)
9405 consist_shape = answer_shape == check_shape
9407 if (.not. all(consist_shape))
then 9408 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9410 write(*,*)
' shape of check is (', check_shape,
')' 9411 write(*,*)
' is INCORRECT' 9412 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 9418 allocate( mask_array( &
9419 & answer_shape(1), &
9421 & answer_shape(2) ) &
9425 & answer_shape(1), &
9427 & answer_shape(2) ) &
9430 allocate( judge_rev( &
9431 & answer_shape(1), &
9433 & answer_shape(2) ) &
9436 allocate( answer_negative( &
9437 & answer_shape(1), &
9439 & answer_shape(2) ) &
9442 allocate( check_negative( &
9443 & answer_shape(1), &
9445 & answer_shape(2) ) &
9448 allocate( both_negative( &
9449 & answer_shape(1), &
9451 & answer_shape(2) ) &
9454 answer_negative = answer < 0
9455 check_negative = check < 0
9456 both_negative = answer_negative .and. check_negative
9457 if (.not. negative_support_on) both_negative = .false.
9459 judge = answer < check
9460 where (both_negative) judge = .not. judge
9462 judge_rev = .not. judge
9463 err_flag = any(judge_rev)
9465 pos = maxloc(mask_array, judge_rev)
9479 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
9481 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
9485 & trim(adjustl(pos_array(1))) //
',' // &
9487 & trim(adjustl(pos_array(2))) //
')' 9489 if ( both_negative( &
9494 abs_mes =
'ABSOLUTE value of' 9501 deallocate(mask_array, judge, judge_rev)
9502 deallocate(answer_negative, check_negative, both_negative)
9508 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9510 write(*,*)
' ' // trim(abs_mes) // &
9511 &
' check' // trim(pos_str) //
' = ', wrong
9512 write(*,*)
' is NOT GREATER THAN' 9513 write(*,*)
' ' // trim(abs_mes) // &
9514 &
' answer' // trim(pos_str) //
' = ', right
9518 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 9526 & message, answer, check, negative_support)
9530 character(*),
intent(in):: message
9531 integer,
intent(in):: answer(:,:,:)
9532 integer,
intent(in):: check(:,:,:)
9533 logical,
intent(in),
optional:: negative_support
9535 logical:: negative_support_on
9536 character(STRING):: pos_str
9537 character(TOKEN):: abs_mes
9538 integer:: wrong, right
9540 integer:: answer_shape(3), check_shape(3), pos(3)
9541 logical:: consist_shape(3)
9542 character(TOKEN):: pos_array(3)
9543 integer,
allocatable:: mask_array(:,:,:)
9544 logical,
allocatable:: judge(:,:,:)
9545 logical,
allocatable:: judge_rev(:,:,:)
9546 logical,
allocatable:: answer_negative(:,:,:)
9547 logical,
allocatable:: check_negative(:,:,:)
9548 logical,
allocatable:: both_negative(:,:,:)
9552 if (
present(negative_support))
then 9553 negative_support_on = negative_support
9555 negative_support_on = .true.
9561 answer_shape = shape(answer)
9562 check_shape = shape(check)
9564 consist_shape = answer_shape == check_shape
9566 if (.not. all(consist_shape))
then 9567 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9569 write(*,*)
' shape of check is (', check_shape,
')' 9570 write(*,*)
' is INCORRECT' 9571 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 9577 allocate( mask_array( &
9578 & answer_shape(1), &
9580 & answer_shape(2), &
9582 & answer_shape(3) ) &
9586 & answer_shape(1), &
9588 & answer_shape(2), &
9590 & answer_shape(3) ) &
9593 allocate( judge_rev( &
9594 & answer_shape(1), &
9596 & answer_shape(2), &
9598 & answer_shape(3) ) &
9601 allocate( answer_negative( &
9602 & answer_shape(1), &
9604 & answer_shape(2), &
9606 & answer_shape(3) ) &
9609 allocate( check_negative( &
9610 & answer_shape(1), &
9612 & answer_shape(2), &
9614 & answer_shape(3) ) &
9617 allocate( both_negative( &
9618 & answer_shape(1), &
9620 & answer_shape(2), &
9622 & answer_shape(3) ) &
9625 answer_negative = answer < 0
9626 check_negative = check < 0
9627 both_negative = answer_negative .and. check_negative
9628 if (.not. negative_support_on) both_negative = .false.
9630 judge = answer < check
9631 where (both_negative) judge = .not. judge
9633 judge_rev = .not. judge
9634 err_flag = any(judge_rev)
9636 pos = maxloc(mask_array, judge_rev)
9654 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
9656 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
9658 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
9662 & trim(adjustl(pos_array(1))) //
',' // &
9664 & trim(adjustl(pos_array(2))) //
',' // &
9666 & trim(adjustl(pos_array(3))) //
')' 9668 if ( both_negative( &
9675 abs_mes =
'ABSOLUTE value of' 9682 deallocate(mask_array, judge, judge_rev)
9683 deallocate(answer_negative, check_negative, both_negative)
9689 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9691 write(*,*)
' ' // trim(abs_mes) // &
9692 &
' check' // trim(pos_str) //
' = ', wrong
9693 write(*,*)
' is NOT GREATER THAN' 9694 write(*,*)
' ' // trim(abs_mes) // &
9695 &
' answer' // trim(pos_str) //
' = ', right
9699 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 9707 & message, answer, check, negative_support)
9711 character(*),
intent(in):: message
9712 integer,
intent(in):: answer(:,:,:,:)
9713 integer,
intent(in):: check(:,:,:,:)
9714 logical,
intent(in),
optional:: negative_support
9716 logical:: negative_support_on
9717 character(STRING):: pos_str
9718 character(TOKEN):: abs_mes
9719 integer:: wrong, right
9721 integer:: answer_shape(4), check_shape(4), pos(4)
9722 logical:: consist_shape(4)
9723 character(TOKEN):: pos_array(4)
9724 integer,
allocatable:: mask_array(:,:,:,:)
9725 logical,
allocatable:: judge(:,:,:,:)
9726 logical,
allocatable:: judge_rev(:,:,:,:)
9727 logical,
allocatable:: answer_negative(:,:,:,:)
9728 logical,
allocatable:: check_negative(:,:,:,:)
9729 logical,
allocatable:: both_negative(:,:,:,:)
9733 if (
present(negative_support))
then 9734 negative_support_on = negative_support
9736 negative_support_on = .true.
9742 answer_shape = shape(answer)
9743 check_shape = shape(check)
9745 consist_shape = answer_shape == check_shape
9747 if (.not. all(consist_shape))
then 9748 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9750 write(*,*)
' shape of check is (', check_shape,
')' 9751 write(*,*)
' is INCORRECT' 9752 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 9758 allocate( mask_array( &
9759 & answer_shape(1), &
9761 & answer_shape(2), &
9763 & answer_shape(3), &
9765 & answer_shape(4) ) &
9769 & answer_shape(1), &
9771 & answer_shape(2), &
9773 & answer_shape(3), &
9775 & answer_shape(4) ) &
9778 allocate( judge_rev( &
9779 & answer_shape(1), &
9781 & answer_shape(2), &
9783 & answer_shape(3), &
9785 & answer_shape(4) ) &
9788 allocate( answer_negative( &
9789 & answer_shape(1), &
9791 & answer_shape(2), &
9793 & answer_shape(3), &
9795 & answer_shape(4) ) &
9798 allocate( check_negative( &
9799 & answer_shape(1), &
9801 & answer_shape(2), &
9803 & answer_shape(3), &
9805 & answer_shape(4) ) &
9808 allocate( both_negative( &
9809 & answer_shape(1), &
9811 & answer_shape(2), &
9813 & answer_shape(3), &
9815 & answer_shape(4) ) &
9818 answer_negative = answer < 0
9819 check_negative = check < 0
9820 both_negative = answer_negative .and. check_negative
9821 if (.not. negative_support_on) both_negative = .false.
9823 judge = answer < check
9824 where (both_negative) judge = .not. judge
9826 judge_rev = .not. judge
9827 err_flag = any(judge_rev)
9829 pos = maxloc(mask_array, judge_rev)
9851 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
9853 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
9855 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
9857 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
9861 & trim(adjustl(pos_array(1))) //
',' // &
9863 & trim(adjustl(pos_array(2))) //
',' // &
9865 & trim(adjustl(pos_array(3))) //
',' // &
9867 & trim(adjustl(pos_array(4))) //
')' 9869 if ( both_negative( &
9878 abs_mes =
'ABSOLUTE value of' 9885 deallocate(mask_array, judge, judge_rev)
9886 deallocate(answer_negative, check_negative, both_negative)
9892 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9894 write(*,*)
' ' // trim(abs_mes) // &
9895 &
' check' // trim(pos_str) //
' = ', wrong
9896 write(*,*)
' is NOT GREATER THAN' 9897 write(*,*)
' ' // trim(abs_mes) // &
9898 &
' answer' // trim(pos_str) //
' = ', right
9902 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 9910 & message, answer, check, negative_support)
9914 character(*),
intent(in):: message
9915 integer,
intent(in):: answer(:,:,:,:,:)
9916 integer,
intent(in):: check(:,:,:,:,:)
9917 logical,
intent(in),
optional:: negative_support
9919 logical:: negative_support_on
9920 character(STRING):: pos_str
9921 character(TOKEN):: abs_mes
9922 integer:: wrong, right
9924 integer:: answer_shape(5), check_shape(5), pos(5)
9925 logical:: consist_shape(5)
9926 character(TOKEN):: pos_array(5)
9927 integer,
allocatable:: mask_array(:,:,:,:,:)
9928 logical,
allocatable:: judge(:,:,:,:,:)
9929 logical,
allocatable:: judge_rev(:,:,:,:,:)
9930 logical,
allocatable:: answer_negative(:,:,:,:,:)
9931 logical,
allocatable:: check_negative(:,:,:,:,:)
9932 logical,
allocatable:: both_negative(:,:,:,:,:)
9936 if (
present(negative_support))
then 9937 negative_support_on = negative_support
9939 negative_support_on = .true.
9945 answer_shape = shape(answer)
9946 check_shape = shape(check)
9948 consist_shape = answer_shape == check_shape
9950 if (.not. all(consist_shape))
then 9951 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 9953 write(*,*)
' shape of check is (', check_shape,
')' 9954 write(*,*)
' is INCORRECT' 9955 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 9961 allocate( mask_array( &
9962 & answer_shape(1), &
9964 & answer_shape(2), &
9966 & answer_shape(3), &
9968 & answer_shape(4), &
9970 & answer_shape(5) ) &
9974 & answer_shape(1), &
9976 & answer_shape(2), &
9978 & answer_shape(3), &
9980 & answer_shape(4), &
9982 & answer_shape(5) ) &
9985 allocate( judge_rev( &
9986 & answer_shape(1), &
9988 & answer_shape(2), &
9990 & answer_shape(3), &
9992 & answer_shape(4), &
9994 & answer_shape(5) ) &
9997 allocate( answer_negative( &
9998 & answer_shape(1), &
10000 & answer_shape(2), &
10002 & answer_shape(3), &
10004 & answer_shape(4), &
10006 & answer_shape(5) ) &
10009 allocate( check_negative( &
10010 & answer_shape(1), &
10012 & answer_shape(2), &
10014 & answer_shape(3), &
10016 & answer_shape(4), &
10018 & answer_shape(5) ) &
10021 allocate( both_negative( &
10022 & answer_shape(1), &
10024 & answer_shape(2), &
10026 & answer_shape(3), &
10028 & answer_shape(4), &
10030 & answer_shape(5) ) &
10033 answer_negative = answer < 0
10034 check_negative = check < 0
10035 both_negative = answer_negative .and. check_negative
10036 if (.not. negative_support_on) both_negative = .false.
10038 judge = answer < check
10039 where (both_negative) judge = .not. judge
10041 judge_rev = .not. judge
10042 err_flag = any(judge_rev)
10044 pos = maxloc(mask_array, judge_rev)
10070 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
10072 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
10074 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
10076 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
10078 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
10082 & trim(adjustl(pos_array(1))) //
',' // &
10084 & trim(adjustl(pos_array(2))) //
',' // &
10086 & trim(adjustl(pos_array(3))) //
',' // &
10088 & trim(adjustl(pos_array(4))) //
',' // &
10090 & trim(adjustl(pos_array(5))) //
')' 10092 if ( both_negative( &
10103 abs_mes =
'ABSOLUTE value of' 10110 deallocate(mask_array, judge, judge_rev)
10111 deallocate(answer_negative, check_negative, both_negative)
10117 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10119 write(*,*)
' ' // trim(abs_mes) // &
10120 &
' check' // trim(pos_str) //
' = ', wrong
10121 write(*,*)
' is NOT GREATER THAN' 10122 write(*,*)
' ' // trim(abs_mes) // &
10123 &
' answer' // trim(pos_str) //
' = ', right
10127 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 10135 & message, answer, check, negative_support)
10139 character(*),
intent(in):: message
10140 integer,
intent(in):: answer(:,:,:,:,:,:)
10141 integer,
intent(in):: check(:,:,:,:,:,:)
10142 logical,
intent(in),
optional:: negative_support
10144 logical:: negative_support_on
10145 character(STRING):: pos_str
10146 character(TOKEN):: abs_mes
10147 integer:: wrong, right
10149 integer:: answer_shape(6), check_shape(6), pos(6)
10150 logical:: consist_shape(6)
10151 character(TOKEN):: pos_array(6)
10152 integer,
allocatable:: mask_array(:,:,:,:,:,:)
10153 logical,
allocatable:: judge(:,:,:,:,:,:)
10154 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
10155 logical,
allocatable:: answer_negative(:,:,:,:,:,:)
10156 logical,
allocatable:: check_negative(:,:,:,:,:,:)
10157 logical,
allocatable:: both_negative(:,:,:,:,:,:)
10161 if (
present(negative_support))
then 10162 negative_support_on = negative_support
10164 negative_support_on = .true.
10170 answer_shape = shape(answer)
10171 check_shape = shape(check)
10173 consist_shape = answer_shape == check_shape
10175 if (.not. all(consist_shape))
then 10176 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10178 write(*,*)
' shape of check is (', check_shape,
')' 10179 write(*,*)
' is INCORRECT' 10180 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 10186 allocate( mask_array( &
10187 & answer_shape(1), &
10189 & answer_shape(2), &
10191 & answer_shape(3), &
10193 & answer_shape(4), &
10195 & answer_shape(5), &
10197 & answer_shape(6) ) &
10201 & answer_shape(1), &
10203 & answer_shape(2), &
10205 & answer_shape(3), &
10207 & answer_shape(4), &
10209 & answer_shape(5), &
10211 & answer_shape(6) ) &
10214 allocate( judge_rev( &
10215 & answer_shape(1), &
10217 & answer_shape(2), &
10219 & answer_shape(3), &
10221 & answer_shape(4), &
10223 & answer_shape(5), &
10225 & answer_shape(6) ) &
10228 allocate( answer_negative( &
10229 & answer_shape(1), &
10231 & answer_shape(2), &
10233 & answer_shape(3), &
10235 & answer_shape(4), &
10237 & answer_shape(5), &
10239 & answer_shape(6) ) &
10242 allocate( check_negative( &
10243 & answer_shape(1), &
10245 & answer_shape(2), &
10247 & answer_shape(3), &
10249 & answer_shape(4), &
10251 & answer_shape(5), &
10253 & answer_shape(6) ) &
10256 allocate( both_negative( &
10257 & answer_shape(1), &
10259 & answer_shape(2), &
10261 & answer_shape(3), &
10263 & answer_shape(4), &
10265 & answer_shape(5), &
10267 & answer_shape(6) ) &
10270 answer_negative = answer < 0
10271 check_negative = check < 0
10272 both_negative = answer_negative .and. check_negative
10273 if (.not. negative_support_on) both_negative = .false.
10275 judge = answer < check
10276 where (both_negative) judge = .not. judge
10278 judge_rev = .not. judge
10279 err_flag = any(judge_rev)
10281 pos = maxloc(mask_array, judge_rev)
10311 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
10313 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
10315 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
10317 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
10319 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
10321 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
10325 & trim(adjustl(pos_array(1))) //
',' // &
10327 & trim(adjustl(pos_array(2))) //
',' // &
10329 & trim(adjustl(pos_array(3))) //
',' // &
10331 & trim(adjustl(pos_array(4))) //
',' // &
10333 & trim(adjustl(pos_array(5))) //
',' // &
10335 & trim(adjustl(pos_array(6))) //
')' 10337 if ( both_negative( &
10350 abs_mes =
'ABSOLUTE value of' 10357 deallocate(mask_array, judge, judge_rev)
10358 deallocate(answer_negative, check_negative, both_negative)
10364 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10366 write(*,*)
' ' // trim(abs_mes) // &
10367 &
' check' // trim(pos_str) //
' = ', wrong
10368 write(*,*)
' is NOT GREATER THAN' 10369 write(*,*)
' ' // trim(abs_mes) // &
10370 &
' answer' // trim(pos_str) //
' = ', right
10374 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 10382 & message, answer, check, negative_support)
10386 character(*),
intent(in):: message
10387 integer,
intent(in):: answer(:,:,:,:,:,:,:)
10388 integer,
intent(in):: check(:,:,:,:,:,:,:)
10389 logical,
intent(in),
optional:: negative_support
10391 logical:: negative_support_on
10392 character(STRING):: pos_str
10393 character(TOKEN):: abs_mes
10394 integer:: wrong, right
10396 integer:: answer_shape(7), check_shape(7), pos(7)
10397 logical:: consist_shape(7)
10398 character(TOKEN):: pos_array(7)
10399 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
10400 logical,
allocatable:: judge(:,:,:,:,:,:,:)
10401 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
10402 logical,
allocatable:: answer_negative(:,:,:,:,:,:,:)
10403 logical,
allocatable:: check_negative(:,:,:,:,:,:,:)
10404 logical,
allocatable:: both_negative(:,:,:,:,:,:,:)
10408 if (
present(negative_support))
then 10409 negative_support_on = negative_support
10411 negative_support_on = .true.
10417 answer_shape = shape(answer)
10418 check_shape = shape(check)
10420 consist_shape = answer_shape == check_shape
10422 if (.not. all(consist_shape))
then 10423 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10425 write(*,*)
' shape of check is (', check_shape,
')' 10426 write(*,*)
' is INCORRECT' 10427 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 10433 allocate( mask_array( &
10434 & answer_shape(1), &
10436 & answer_shape(2), &
10438 & answer_shape(3), &
10440 & answer_shape(4), &
10442 & answer_shape(5), &
10444 & answer_shape(6), &
10446 & answer_shape(7) ) &
10450 & answer_shape(1), &
10452 & answer_shape(2), &
10454 & answer_shape(3), &
10456 & answer_shape(4), &
10458 & answer_shape(5), &
10460 & answer_shape(6), &
10462 & answer_shape(7) ) &
10465 allocate( judge_rev( &
10466 & answer_shape(1), &
10468 & answer_shape(2), &
10470 & answer_shape(3), &
10472 & answer_shape(4), &
10474 & answer_shape(5), &
10476 & answer_shape(6), &
10478 & answer_shape(7) ) &
10481 allocate( answer_negative( &
10482 & answer_shape(1), &
10484 & answer_shape(2), &
10486 & answer_shape(3), &
10488 & answer_shape(4), &
10490 & answer_shape(5), &
10492 & answer_shape(6), &
10494 & answer_shape(7) ) &
10497 allocate( check_negative( &
10498 & answer_shape(1), &
10500 & answer_shape(2), &
10502 & answer_shape(3), &
10504 & answer_shape(4), &
10506 & answer_shape(5), &
10508 & answer_shape(6), &
10510 & answer_shape(7) ) &
10513 allocate( both_negative( &
10514 & answer_shape(1), &
10516 & answer_shape(2), &
10518 & answer_shape(3), &
10520 & answer_shape(4), &
10522 & answer_shape(5), &
10524 & answer_shape(6), &
10526 & answer_shape(7) ) &
10529 answer_negative = answer < 0
10530 check_negative = check < 0
10531 both_negative = answer_negative .and. check_negative
10532 if (.not. negative_support_on) both_negative = .false.
10534 judge = answer < check
10535 where (both_negative) judge = .not. judge
10537 judge_rev = .not. judge
10538 err_flag = any(judge_rev)
10540 pos = maxloc(mask_array, judge_rev)
10574 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
10576 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
10578 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
10580 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
10582 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
10584 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
10586 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
10590 & trim(adjustl(pos_array(1))) //
',' // &
10592 & trim(adjustl(pos_array(2))) //
',' // &
10594 & trim(adjustl(pos_array(3))) //
',' // &
10596 & trim(adjustl(pos_array(4))) //
',' // &
10598 & trim(adjustl(pos_array(5))) //
',' // &
10600 & trim(adjustl(pos_array(6))) //
',' // &
10602 & trim(adjustl(pos_array(7))) //
')' 10604 if ( both_negative( &
10619 abs_mes =
'ABSOLUTE value of' 10626 deallocate(mask_array, judge, judge_rev)
10627 deallocate(answer_negative, check_negative, both_negative)
10633 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10635 write(*,*)
' ' // trim(abs_mes) // &
10636 &
' check' // trim(pos_str) //
' = ', wrong
10637 write(*,*)
' is NOT GREATER THAN' 10638 write(*,*)
' ' // trim(abs_mes) // &
10639 &
' answer' // trim(pos_str) //
' = ', right
10643 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 10651 & message, answer, check, negative_support)
10655 character(*),
intent(in):: message
10656 real,
intent(in):: answer
10657 real,
intent(in):: check
10658 logical,
intent(in),
optional:: negative_support
10660 logical:: negative_support_on
10661 character(STRING):: pos_str
10662 character(TOKEN):: abs_mes
10663 real:: wrong, right
10668 if (
present(negative_support))
then 10669 negative_support_on = negative_support
10671 negative_support_on = .true.
10677 err_flag = .not. answer < check
10680 if ( answer < 0.0 &
10681 & .and. check < 0.0 &
10682 & .and. negative_support_on )
then 10684 err_flag = .not. err_flag
10685 abs_mes =
'ABSOLUTE value of' 10696 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10698 write(*,*)
' ' // trim(abs_mes) // &
10699 &
' check' // trim(pos_str) //
' = ', wrong
10700 write(*,*)
' is NOT GREATER THAN' 10701 write(*,*)
' ' // trim(abs_mes) // &
10702 &
' answer' // trim(pos_str) //
' = ', right
10706 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 10714 & message, answer, check, negative_support)
10718 character(*),
intent(in):: message
10719 real,
intent(in):: answer(:)
10720 real,
intent(in):: check(:)
10721 logical,
intent(in),
optional:: negative_support
10723 logical:: negative_support_on
10724 character(STRING):: pos_str
10725 character(TOKEN):: abs_mes
10726 real:: wrong, right
10728 integer:: answer_shape(1), check_shape(1), pos(1)
10729 logical:: consist_shape(1)
10730 character(TOKEN):: pos_array(1)
10731 integer,
allocatable:: mask_array(:)
10732 logical,
allocatable:: judge(:)
10733 logical,
allocatable:: judge_rev(:)
10734 logical,
allocatable:: answer_negative(:)
10735 logical,
allocatable:: check_negative(:)
10736 logical,
allocatable:: both_negative(:)
10740 if (
present(negative_support))
then 10741 negative_support_on = negative_support
10743 negative_support_on = .true.
10749 answer_shape = shape(answer)
10750 check_shape = shape(check)
10752 consist_shape = answer_shape == check_shape
10754 if (.not. all(consist_shape))
then 10755 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10757 write(*,*)
' shape of check is (', check_shape,
')' 10758 write(*,*)
' is INCORRECT' 10759 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 10765 allocate( mask_array( &
10767 & answer_shape(1) ) &
10772 & answer_shape(1) ) &
10775 allocate( judge_rev( &
10777 & answer_shape(1) ) &
10780 allocate( answer_negative( &
10782 & answer_shape(1) ) &
10785 allocate( check_negative( &
10787 & answer_shape(1) ) &
10790 allocate( both_negative( &
10792 & answer_shape(1) ) &
10795 answer_negative = answer < 0.0
10796 check_negative = check < 0.0
10797 both_negative = answer_negative .and. check_negative
10798 if (.not. negative_support_on) both_negative = .false.
10800 judge = answer < check
10801 where (both_negative) judge = .not. judge
10803 judge_rev = .not. judge
10804 err_flag = any(judge_rev)
10806 pos = maxloc(mask_array, judge_rev)
10818 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
10823 & trim(adjustl(pos_array(1))) //
')' 10825 if ( both_negative( &
10829 abs_mes =
'ABSOLUTE value of' 10836 deallocate(mask_array, judge, judge_rev)
10837 deallocate(answer_negative, check_negative, both_negative)
10843 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10845 write(*,*)
' ' // trim(abs_mes) // &
10846 &
' check' // trim(pos_str) //
' = ', wrong
10847 write(*,*)
' is NOT GREATER THAN' 10848 write(*,*)
' ' // trim(abs_mes) // &
10849 &
' answer' // trim(pos_str) //
' = ', right
10853 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 10861 & message, answer, check, negative_support)
10865 character(*),
intent(in):: message
10866 real,
intent(in):: answer(:,:)
10867 real,
intent(in):: check(:,:)
10868 logical,
intent(in),
optional:: negative_support
10870 logical:: negative_support_on
10871 character(STRING):: pos_str
10872 character(TOKEN):: abs_mes
10873 real:: wrong, right
10875 integer:: answer_shape(2), check_shape(2), pos(2)
10876 logical:: consist_shape(2)
10877 character(TOKEN):: pos_array(2)
10878 integer,
allocatable:: mask_array(:,:)
10879 logical,
allocatable:: judge(:,:)
10880 logical,
allocatable:: judge_rev(:,:)
10881 logical,
allocatable:: answer_negative(:,:)
10882 logical,
allocatable:: check_negative(:,:)
10883 logical,
allocatable:: both_negative(:,:)
10887 if (
present(negative_support))
then 10888 negative_support_on = negative_support
10890 negative_support_on = .true.
10896 answer_shape = shape(answer)
10897 check_shape = shape(check)
10899 consist_shape = answer_shape == check_shape
10901 if (.not. all(consist_shape))
then 10902 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 10904 write(*,*)
' shape of check is (', check_shape,
')' 10905 write(*,*)
' is INCORRECT' 10906 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 10912 allocate( mask_array( &
10913 & answer_shape(1), &
10915 & answer_shape(2) ) &
10919 & answer_shape(1), &
10921 & answer_shape(2) ) &
10924 allocate( judge_rev( &
10925 & answer_shape(1), &
10927 & answer_shape(2) ) &
10930 allocate( answer_negative( &
10931 & answer_shape(1), &
10933 & answer_shape(2) ) &
10936 allocate( check_negative( &
10937 & answer_shape(1), &
10939 & answer_shape(2) ) &
10942 allocate( both_negative( &
10943 & answer_shape(1), &
10945 & answer_shape(2) ) &
10948 answer_negative = answer < 0.0
10949 check_negative = check < 0.0
10950 both_negative = answer_negative .and. check_negative
10951 if (.not. negative_support_on) both_negative = .false.
10953 judge = answer < check
10954 where (both_negative) judge = .not. judge
10956 judge_rev = .not. judge
10957 err_flag = any(judge_rev)
10959 pos = maxloc(mask_array, judge_rev)
10973 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
10975 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
10979 & trim(adjustl(pos_array(1))) //
',' // &
10981 & trim(adjustl(pos_array(2))) //
')' 10983 if ( both_negative( &
10988 abs_mes =
'ABSOLUTE value of' 10995 deallocate(mask_array, judge, judge_rev)
10996 deallocate(answer_negative, check_negative, both_negative)
11002 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11004 write(*,*)
' ' // trim(abs_mes) // &
11005 &
' check' // trim(pos_str) //
' = ', wrong
11006 write(*,*)
' is NOT GREATER THAN' 11007 write(*,*)
' ' // trim(abs_mes) // &
11008 &
' answer' // trim(pos_str) //
' = ', right
11012 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 11020 & message, answer, check, negative_support)
11024 character(*),
intent(in):: message
11025 real,
intent(in):: answer(:,:,:)
11026 real,
intent(in):: check(:,:,:)
11027 logical,
intent(in),
optional:: negative_support
11029 logical:: negative_support_on
11030 character(STRING):: pos_str
11031 character(TOKEN):: abs_mes
11032 real:: wrong, right
11034 integer:: answer_shape(3), check_shape(3), pos(3)
11035 logical:: consist_shape(3)
11036 character(TOKEN):: pos_array(3)
11037 integer,
allocatable:: mask_array(:,:,:)
11038 logical,
allocatable:: judge(:,:,:)
11039 logical,
allocatable:: judge_rev(:,:,:)
11040 logical,
allocatable:: answer_negative(:,:,:)
11041 logical,
allocatable:: check_negative(:,:,:)
11042 logical,
allocatable:: both_negative(:,:,:)
11046 if (
present(negative_support))
then 11047 negative_support_on = negative_support
11049 negative_support_on = .true.
11055 answer_shape = shape(answer)
11056 check_shape = shape(check)
11058 consist_shape = answer_shape == check_shape
11060 if (.not. all(consist_shape))
then 11061 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11063 write(*,*)
' shape of check is (', check_shape,
')' 11064 write(*,*)
' is INCORRECT' 11065 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 11071 allocate( mask_array( &
11072 & answer_shape(1), &
11074 & answer_shape(2), &
11076 & answer_shape(3) ) &
11080 & answer_shape(1), &
11082 & answer_shape(2), &
11084 & answer_shape(3) ) &
11087 allocate( judge_rev( &
11088 & answer_shape(1), &
11090 & answer_shape(2), &
11092 & answer_shape(3) ) &
11095 allocate( answer_negative( &
11096 & answer_shape(1), &
11098 & answer_shape(2), &
11100 & answer_shape(3) ) &
11103 allocate( check_negative( &
11104 & answer_shape(1), &
11106 & answer_shape(2), &
11108 & answer_shape(3) ) &
11111 allocate( both_negative( &
11112 & answer_shape(1), &
11114 & answer_shape(2), &
11116 & answer_shape(3) ) &
11119 answer_negative = answer < 0.0
11120 check_negative = check < 0.0
11121 both_negative = answer_negative .and. check_negative
11122 if (.not. negative_support_on) both_negative = .false.
11124 judge = answer < check
11125 where (both_negative) judge = .not. judge
11127 judge_rev = .not. judge
11128 err_flag = any(judge_rev)
11130 pos = maxloc(mask_array, judge_rev)
11148 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
11150 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
11152 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
11156 & trim(adjustl(pos_array(1))) //
',' // &
11158 & trim(adjustl(pos_array(2))) //
',' // &
11160 & trim(adjustl(pos_array(3))) //
')' 11162 if ( both_negative( &
11169 abs_mes =
'ABSOLUTE value of' 11176 deallocate(mask_array, judge, judge_rev)
11177 deallocate(answer_negative, check_negative, both_negative)
11183 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11185 write(*,*)
' ' // trim(abs_mes) // &
11186 &
' check' // trim(pos_str) //
' = ', wrong
11187 write(*,*)
' is NOT GREATER THAN' 11188 write(*,*)
' ' // trim(abs_mes) // &
11189 &
' answer' // trim(pos_str) //
' = ', right
11193 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 11201 & message, answer, check, negative_support)
11205 character(*),
intent(in):: message
11206 real,
intent(in):: answer(:,:,:,:)
11207 real,
intent(in):: check(:,:,:,:)
11208 logical,
intent(in),
optional:: negative_support
11210 logical:: negative_support_on
11211 character(STRING):: pos_str
11212 character(TOKEN):: abs_mes
11213 real:: wrong, right
11215 integer:: answer_shape(4), check_shape(4), pos(4)
11216 logical:: consist_shape(4)
11217 character(TOKEN):: pos_array(4)
11218 integer,
allocatable:: mask_array(:,:,:,:)
11219 logical,
allocatable:: judge(:,:,:,:)
11220 logical,
allocatable:: judge_rev(:,:,:,:)
11221 logical,
allocatable:: answer_negative(:,:,:,:)
11222 logical,
allocatable:: check_negative(:,:,:,:)
11223 logical,
allocatable:: both_negative(:,:,:,:)
11227 if (
present(negative_support))
then 11228 negative_support_on = negative_support
11230 negative_support_on = .true.
11236 answer_shape = shape(answer)
11237 check_shape = shape(check)
11239 consist_shape = answer_shape == check_shape
11241 if (.not. all(consist_shape))
then 11242 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11244 write(*,*)
' shape of check is (', check_shape,
')' 11245 write(*,*)
' is INCORRECT' 11246 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 11252 allocate( mask_array( &
11253 & answer_shape(1), &
11255 & answer_shape(2), &
11257 & answer_shape(3), &
11259 & answer_shape(4) ) &
11263 & answer_shape(1), &
11265 & answer_shape(2), &
11267 & answer_shape(3), &
11269 & answer_shape(4) ) &
11272 allocate( judge_rev( &
11273 & answer_shape(1), &
11275 & answer_shape(2), &
11277 & answer_shape(3), &
11279 & answer_shape(4) ) &
11282 allocate( answer_negative( &
11283 & answer_shape(1), &
11285 & answer_shape(2), &
11287 & answer_shape(3), &
11289 & answer_shape(4) ) &
11292 allocate( check_negative( &
11293 & answer_shape(1), &
11295 & answer_shape(2), &
11297 & answer_shape(3), &
11299 & answer_shape(4) ) &
11302 allocate( both_negative( &
11303 & answer_shape(1), &
11305 & answer_shape(2), &
11307 & answer_shape(3), &
11309 & answer_shape(4) ) &
11312 answer_negative = answer < 0.0
11313 check_negative = check < 0.0
11314 both_negative = answer_negative .and. check_negative
11315 if (.not. negative_support_on) both_negative = .false.
11317 judge = answer < check
11318 where (both_negative) judge = .not. judge
11320 judge_rev = .not. judge
11321 err_flag = any(judge_rev)
11323 pos = maxloc(mask_array, judge_rev)
11345 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
11347 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
11349 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
11351 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
11355 & trim(adjustl(pos_array(1))) //
',' // &
11357 & trim(adjustl(pos_array(2))) //
',' // &
11359 & trim(adjustl(pos_array(3))) //
',' // &
11361 & trim(adjustl(pos_array(4))) //
')' 11363 if ( both_negative( &
11372 abs_mes =
'ABSOLUTE value of' 11379 deallocate(mask_array, judge, judge_rev)
11380 deallocate(answer_negative, check_negative, both_negative)
11386 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11388 write(*,*)
' ' // trim(abs_mes) // &
11389 &
' check' // trim(pos_str) //
' = ', wrong
11390 write(*,*)
' is NOT GREATER THAN' 11391 write(*,*)
' ' // trim(abs_mes) // &
11392 &
' answer' // trim(pos_str) //
' = ', right
11396 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 11404 & message, answer, check, negative_support)
11408 character(*),
intent(in):: message
11409 real,
intent(in):: answer(:,:,:,:,:)
11410 real,
intent(in):: check(:,:,:,:,:)
11411 logical,
intent(in),
optional:: negative_support
11413 logical:: negative_support_on
11414 character(STRING):: pos_str
11415 character(TOKEN):: abs_mes
11416 real:: wrong, right
11418 integer:: answer_shape(5), check_shape(5), pos(5)
11419 logical:: consist_shape(5)
11420 character(TOKEN):: pos_array(5)
11421 integer,
allocatable:: mask_array(:,:,:,:,:)
11422 logical,
allocatable:: judge(:,:,:,:,:)
11423 logical,
allocatable:: judge_rev(:,:,:,:,:)
11424 logical,
allocatable:: answer_negative(:,:,:,:,:)
11425 logical,
allocatable:: check_negative(:,:,:,:,:)
11426 logical,
allocatable:: both_negative(:,:,:,:,:)
11430 if (
present(negative_support))
then 11431 negative_support_on = negative_support
11433 negative_support_on = .true.
11439 answer_shape = shape(answer)
11440 check_shape = shape(check)
11442 consist_shape = answer_shape == check_shape
11444 if (.not. all(consist_shape))
then 11445 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11447 write(*,*)
' shape of check is (', check_shape,
')' 11448 write(*,*)
' is INCORRECT' 11449 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 11455 allocate( mask_array( &
11456 & answer_shape(1), &
11458 & answer_shape(2), &
11460 & answer_shape(3), &
11462 & answer_shape(4), &
11464 & answer_shape(5) ) &
11468 & answer_shape(1), &
11470 & answer_shape(2), &
11472 & answer_shape(3), &
11474 & answer_shape(4), &
11476 & answer_shape(5) ) &
11479 allocate( judge_rev( &
11480 & answer_shape(1), &
11482 & answer_shape(2), &
11484 & answer_shape(3), &
11486 & answer_shape(4), &
11488 & answer_shape(5) ) &
11491 allocate( answer_negative( &
11492 & answer_shape(1), &
11494 & answer_shape(2), &
11496 & answer_shape(3), &
11498 & answer_shape(4), &
11500 & answer_shape(5) ) &
11503 allocate( check_negative( &
11504 & answer_shape(1), &
11506 & answer_shape(2), &
11508 & answer_shape(3), &
11510 & answer_shape(4), &
11512 & answer_shape(5) ) &
11515 allocate( both_negative( &
11516 & answer_shape(1), &
11518 & answer_shape(2), &
11520 & answer_shape(3), &
11522 & answer_shape(4), &
11524 & answer_shape(5) ) &
11527 answer_negative = answer < 0.0
11528 check_negative = check < 0.0
11529 both_negative = answer_negative .and. check_negative
11530 if (.not. negative_support_on) both_negative = .false.
11532 judge = answer < check
11533 where (both_negative) judge = .not. judge
11535 judge_rev = .not. judge
11536 err_flag = any(judge_rev)
11538 pos = maxloc(mask_array, judge_rev)
11564 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
11566 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
11568 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
11570 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
11572 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
11576 & trim(adjustl(pos_array(1))) //
',' // &
11578 & trim(adjustl(pos_array(2))) //
',' // &
11580 & trim(adjustl(pos_array(3))) //
',' // &
11582 & trim(adjustl(pos_array(4))) //
',' // &
11584 & trim(adjustl(pos_array(5))) //
')' 11586 if ( both_negative( &
11597 abs_mes =
'ABSOLUTE value of' 11604 deallocate(mask_array, judge, judge_rev)
11605 deallocate(answer_negative, check_negative, both_negative)
11611 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11613 write(*,*)
' ' // trim(abs_mes) // &
11614 &
' check' // trim(pos_str) //
' = ', wrong
11615 write(*,*)
' is NOT GREATER THAN' 11616 write(*,*)
' ' // trim(abs_mes) // &
11617 &
' answer' // trim(pos_str) //
' = ', right
11621 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 11629 & message, answer, check, negative_support)
11633 character(*),
intent(in):: message
11634 real,
intent(in):: answer(:,:,:,:,:,:)
11635 real,
intent(in):: check(:,:,:,:,:,:)
11636 logical,
intent(in),
optional:: negative_support
11638 logical:: negative_support_on
11639 character(STRING):: pos_str
11640 character(TOKEN):: abs_mes
11641 real:: wrong, right
11643 integer:: answer_shape(6), check_shape(6), pos(6)
11644 logical:: consist_shape(6)
11645 character(TOKEN):: pos_array(6)
11646 integer,
allocatable:: mask_array(:,:,:,:,:,:)
11647 logical,
allocatable:: judge(:,:,:,:,:,:)
11648 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
11649 logical,
allocatable:: answer_negative(:,:,:,:,:,:)
11650 logical,
allocatable:: check_negative(:,:,:,:,:,:)
11651 logical,
allocatable:: both_negative(:,:,:,:,:,:)
11655 if (
present(negative_support))
then 11656 negative_support_on = negative_support
11658 negative_support_on = .true.
11664 answer_shape = shape(answer)
11665 check_shape = shape(check)
11667 consist_shape = answer_shape == check_shape
11669 if (.not. all(consist_shape))
then 11670 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11672 write(*,*)
' shape of check is (', check_shape,
')' 11673 write(*,*)
' is INCORRECT' 11674 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 11680 allocate( mask_array( &
11681 & answer_shape(1), &
11683 & answer_shape(2), &
11685 & answer_shape(3), &
11687 & answer_shape(4), &
11689 & answer_shape(5), &
11691 & answer_shape(6) ) &
11695 & answer_shape(1), &
11697 & answer_shape(2), &
11699 & answer_shape(3), &
11701 & answer_shape(4), &
11703 & answer_shape(5), &
11705 & answer_shape(6) ) &
11708 allocate( judge_rev( &
11709 & answer_shape(1), &
11711 & answer_shape(2), &
11713 & answer_shape(3), &
11715 & answer_shape(4), &
11717 & answer_shape(5), &
11719 & answer_shape(6) ) &
11722 allocate( answer_negative( &
11723 & answer_shape(1), &
11725 & answer_shape(2), &
11727 & answer_shape(3), &
11729 & answer_shape(4), &
11731 & answer_shape(5), &
11733 & answer_shape(6) ) &
11736 allocate( check_negative( &
11737 & answer_shape(1), &
11739 & answer_shape(2), &
11741 & answer_shape(3), &
11743 & answer_shape(4), &
11745 & answer_shape(5), &
11747 & answer_shape(6) ) &
11750 allocate( both_negative( &
11751 & answer_shape(1), &
11753 & answer_shape(2), &
11755 & answer_shape(3), &
11757 & answer_shape(4), &
11759 & answer_shape(5), &
11761 & answer_shape(6) ) &
11764 answer_negative = answer < 0.0
11765 check_negative = check < 0.0
11766 both_negative = answer_negative .and. check_negative
11767 if (.not. negative_support_on) both_negative = .false.
11769 judge = answer < check
11770 where (both_negative) judge = .not. judge
11772 judge_rev = .not. judge
11773 err_flag = any(judge_rev)
11775 pos = maxloc(mask_array, judge_rev)
11805 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
11807 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
11809 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
11811 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
11813 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
11815 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
11819 & trim(adjustl(pos_array(1))) //
',' // &
11821 & trim(adjustl(pos_array(2))) //
',' // &
11823 & trim(adjustl(pos_array(3))) //
',' // &
11825 & trim(adjustl(pos_array(4))) //
',' // &
11827 & trim(adjustl(pos_array(5))) //
',' // &
11829 & trim(adjustl(pos_array(6))) //
')' 11831 if ( both_negative( &
11844 abs_mes =
'ABSOLUTE value of' 11851 deallocate(mask_array, judge, judge_rev)
11852 deallocate(answer_negative, check_negative, both_negative)
11858 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11860 write(*,*)
' ' // trim(abs_mes) // &
11861 &
' check' // trim(pos_str) //
' = ', wrong
11862 write(*,*)
' is NOT GREATER THAN' 11863 write(*,*)
' ' // trim(abs_mes) // &
11864 &
' answer' // trim(pos_str) //
' = ', right
11868 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 11876 & message, answer, check, negative_support)
11880 character(*),
intent(in):: message
11881 real,
intent(in):: answer(:,:,:,:,:,:,:)
11882 real,
intent(in):: check(:,:,:,:,:,:,:)
11883 logical,
intent(in),
optional:: negative_support
11885 logical:: negative_support_on
11886 character(STRING):: pos_str
11887 character(TOKEN):: abs_mes
11888 real:: wrong, right
11890 integer:: answer_shape(7), check_shape(7), pos(7)
11891 logical:: consist_shape(7)
11892 character(TOKEN):: pos_array(7)
11893 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
11894 logical,
allocatable:: judge(:,:,:,:,:,:,:)
11895 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
11896 logical,
allocatable:: answer_negative(:,:,:,:,:,:,:)
11897 logical,
allocatable:: check_negative(:,:,:,:,:,:,:)
11898 logical,
allocatable:: both_negative(:,:,:,:,:,:,:)
11902 if (
present(negative_support))
then 11903 negative_support_on = negative_support
11905 negative_support_on = .true.
11911 answer_shape = shape(answer)
11912 check_shape = shape(check)
11914 consist_shape = answer_shape == check_shape
11916 if (.not. all(consist_shape))
then 11917 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 11919 write(*,*)
' shape of check is (', check_shape,
')' 11920 write(*,*)
' is INCORRECT' 11921 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 11927 allocate( mask_array( &
11928 & answer_shape(1), &
11930 & answer_shape(2), &
11932 & answer_shape(3), &
11934 & answer_shape(4), &
11936 & answer_shape(5), &
11938 & answer_shape(6), &
11940 & answer_shape(7) ) &
11944 & answer_shape(1), &
11946 & answer_shape(2), &
11948 & answer_shape(3), &
11950 & answer_shape(4), &
11952 & answer_shape(5), &
11954 & answer_shape(6), &
11956 & answer_shape(7) ) &
11959 allocate( judge_rev( &
11960 & answer_shape(1), &
11962 & answer_shape(2), &
11964 & answer_shape(3), &
11966 & answer_shape(4), &
11968 & answer_shape(5), &
11970 & answer_shape(6), &
11972 & answer_shape(7) ) &
11975 allocate( answer_negative( &
11976 & answer_shape(1), &
11978 & answer_shape(2), &
11980 & answer_shape(3), &
11982 & answer_shape(4), &
11984 & answer_shape(5), &
11986 & answer_shape(6), &
11988 & answer_shape(7) ) &
11991 allocate( check_negative( &
11992 & answer_shape(1), &
11994 & answer_shape(2), &
11996 & answer_shape(3), &
11998 & answer_shape(4), &
12000 & answer_shape(5), &
12002 & answer_shape(6), &
12004 & answer_shape(7) ) &
12007 allocate( both_negative( &
12008 & answer_shape(1), &
12010 & answer_shape(2), &
12012 & answer_shape(3), &
12014 & answer_shape(4), &
12016 & answer_shape(5), &
12018 & answer_shape(6), &
12020 & answer_shape(7) ) &
12023 answer_negative = answer < 0.0
12024 check_negative = check < 0.0
12025 both_negative = answer_negative .and. check_negative
12026 if (.not. negative_support_on) both_negative = .false.
12028 judge = answer < check
12029 where (both_negative) judge = .not. judge
12031 judge_rev = .not. judge
12032 err_flag = any(judge_rev)
12034 pos = maxloc(mask_array, judge_rev)
12068 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
12070 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
12072 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
12074 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
12076 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
12078 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
12080 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
12084 & trim(adjustl(pos_array(1))) //
',' // &
12086 & trim(adjustl(pos_array(2))) //
',' // &
12088 & trim(adjustl(pos_array(3))) //
',' // &
12090 & trim(adjustl(pos_array(4))) //
',' // &
12092 & trim(adjustl(pos_array(5))) //
',' // &
12094 & trim(adjustl(pos_array(6))) //
',' // &
12096 & trim(adjustl(pos_array(7))) //
')' 12098 if ( both_negative( &
12113 abs_mes =
'ABSOLUTE value of' 12120 deallocate(mask_array, judge, judge_rev)
12121 deallocate(answer_negative, check_negative, both_negative)
12127 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12129 write(*,*)
' ' // trim(abs_mes) // &
12130 &
' check' // trim(pos_str) //
' = ', wrong
12131 write(*,*)
' is NOT GREATER THAN' 12132 write(*,*)
' ' // trim(abs_mes) // &
12133 &
' answer' // trim(pos_str) //
' = ', right
12137 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 12145 & message, answer, check, negative_support)
12149 character(*),
intent(in):: message
12150 real(DP),
intent(in):: answer
12151 real(DP),
intent(in):: check
12152 logical,
intent(in),
optional:: negative_support
12154 logical:: negative_support_on
12155 character(STRING):: pos_str
12156 character(TOKEN):: abs_mes
12157 real(DP):: wrong, right
12162 if (
present(negative_support))
then 12163 negative_support_on = negative_support
12165 negative_support_on = .true.
12171 err_flag = .not. answer < check
12174 if ( answer < 0.0_dp &
12175 & .and. check < 0.0_dp &
12176 & .and. negative_support_on )
then 12178 err_flag = .not. err_flag
12179 abs_mes =
'ABSOLUTE value of' 12190 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12192 write(*,*)
' ' // trim(abs_mes) // &
12193 &
' check' // trim(pos_str) //
' = ', wrong
12194 write(*,*)
' is NOT GREATER THAN' 12195 write(*,*)
' ' // trim(abs_mes) // &
12196 &
' answer' // trim(pos_str) //
' = ', right
12200 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 12208 & message, answer, check, negative_support)
12212 character(*),
intent(in):: message
12213 real(DP),
intent(in):: answer(:)
12214 real(DP),
intent(in):: check(:)
12215 logical,
intent(in),
optional:: negative_support
12217 logical:: negative_support_on
12218 character(STRING):: pos_str
12219 character(TOKEN):: abs_mes
12220 real(DP):: wrong, right
12222 integer:: answer_shape(1), check_shape(1), pos(1)
12223 logical:: consist_shape(1)
12224 character(TOKEN):: pos_array(1)
12225 integer,
allocatable:: mask_array(:)
12226 logical,
allocatable:: judge(:)
12227 logical,
allocatable:: judge_rev(:)
12228 logical,
allocatable:: answer_negative(:)
12229 logical,
allocatable:: check_negative(:)
12230 logical,
allocatable:: both_negative(:)
12234 if (
present(negative_support))
then 12235 negative_support_on = negative_support
12237 negative_support_on = .true.
12243 answer_shape = shape(answer)
12244 check_shape = shape(check)
12246 consist_shape = answer_shape == check_shape
12248 if (.not. all(consist_shape))
then 12249 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12251 write(*,*)
' shape of check is (', check_shape,
')' 12252 write(*,*)
' is INCORRECT' 12253 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 12259 allocate( mask_array( &
12261 & answer_shape(1) ) &
12266 & answer_shape(1) ) &
12269 allocate( judge_rev( &
12271 & answer_shape(1) ) &
12274 allocate( answer_negative( &
12276 & answer_shape(1) ) &
12279 allocate( check_negative( &
12281 & answer_shape(1) ) &
12284 allocate( both_negative( &
12286 & answer_shape(1) ) &
12289 answer_negative = answer < 0.0_dp
12290 check_negative = check < 0.0_dp
12291 both_negative = answer_negative .and. check_negative
12292 if (.not. negative_support_on) both_negative = .false.
12294 judge = answer < check
12295 where (both_negative) judge = .not. judge
12297 judge_rev = .not. judge
12298 err_flag = any(judge_rev)
12300 pos = maxloc(mask_array, judge_rev)
12312 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
12317 & trim(adjustl(pos_array(1))) //
')' 12319 if ( both_negative( &
12323 abs_mes =
'ABSOLUTE value of' 12330 deallocate(mask_array, judge, judge_rev)
12331 deallocate(answer_negative, check_negative, both_negative)
12337 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12339 write(*,*)
' ' // trim(abs_mes) // &
12340 &
' check' // trim(pos_str) //
' = ', wrong
12341 write(*,*)
' is NOT GREATER THAN' 12342 write(*,*)
' ' // trim(abs_mes) // &
12343 &
' answer' // trim(pos_str) //
' = ', right
12347 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 12355 & message, answer, check, negative_support)
12359 character(*),
intent(in):: message
12360 real(DP),
intent(in):: answer(:,:)
12361 real(DP),
intent(in):: check(:,:)
12362 logical,
intent(in),
optional:: negative_support
12364 logical:: negative_support_on
12365 character(STRING):: pos_str
12366 character(TOKEN):: abs_mes
12367 real(DP):: wrong, right
12369 integer:: answer_shape(2), check_shape(2), pos(2)
12370 logical:: consist_shape(2)
12371 character(TOKEN):: pos_array(2)
12372 integer,
allocatable:: mask_array(:,:)
12373 logical,
allocatable:: judge(:,:)
12374 logical,
allocatable:: judge_rev(:,:)
12375 logical,
allocatable:: answer_negative(:,:)
12376 logical,
allocatable:: check_negative(:,:)
12377 logical,
allocatable:: both_negative(:,:)
12381 if (
present(negative_support))
then 12382 negative_support_on = negative_support
12384 negative_support_on = .true.
12390 answer_shape = shape(answer)
12391 check_shape = shape(check)
12393 consist_shape = answer_shape == check_shape
12395 if (.not. all(consist_shape))
then 12396 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12398 write(*,*)
' shape of check is (', check_shape,
')' 12399 write(*,*)
' is INCORRECT' 12400 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 12406 allocate( mask_array( &
12407 & answer_shape(1), &
12409 & answer_shape(2) ) &
12413 & answer_shape(1), &
12415 & answer_shape(2) ) &
12418 allocate( judge_rev( &
12419 & answer_shape(1), &
12421 & answer_shape(2) ) &
12424 allocate( answer_negative( &
12425 & answer_shape(1), &
12427 & answer_shape(2) ) &
12430 allocate( check_negative( &
12431 & answer_shape(1), &
12433 & answer_shape(2) ) &
12436 allocate( both_negative( &
12437 & answer_shape(1), &
12439 & answer_shape(2) ) &
12442 answer_negative = answer < 0.0_dp
12443 check_negative = check < 0.0_dp
12444 both_negative = answer_negative .and. check_negative
12445 if (.not. negative_support_on) both_negative = .false.
12447 judge = answer < check
12448 where (both_negative) judge = .not. judge
12450 judge_rev = .not. judge
12451 err_flag = any(judge_rev)
12453 pos = maxloc(mask_array, judge_rev)
12467 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
12469 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
12473 & trim(adjustl(pos_array(1))) //
',' // &
12475 & trim(adjustl(pos_array(2))) //
')' 12477 if ( both_negative( &
12482 abs_mes =
'ABSOLUTE value of' 12489 deallocate(mask_array, judge, judge_rev)
12490 deallocate(answer_negative, check_negative, both_negative)
12496 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12498 write(*,*)
' ' // trim(abs_mes) // &
12499 &
' check' // trim(pos_str) //
' = ', wrong
12500 write(*,*)
' is NOT GREATER THAN' 12501 write(*,*)
' ' // trim(abs_mes) // &
12502 &
' answer' // trim(pos_str) //
' = ', right
12506 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 12514 & message, answer, check, negative_support)
12518 character(*),
intent(in):: message
12519 real(DP),
intent(in):: answer(:,:,:)
12520 real(DP),
intent(in):: check(:,:,:)
12521 logical,
intent(in),
optional:: negative_support
12523 logical:: negative_support_on
12524 character(STRING):: pos_str
12525 character(TOKEN):: abs_mes
12526 real(DP):: wrong, right
12528 integer:: answer_shape(3), check_shape(3), pos(3)
12529 logical:: consist_shape(3)
12530 character(TOKEN):: pos_array(3)
12531 integer,
allocatable:: mask_array(:,:,:)
12532 logical,
allocatable:: judge(:,:,:)
12533 logical,
allocatable:: judge_rev(:,:,:)
12534 logical,
allocatable:: answer_negative(:,:,:)
12535 logical,
allocatable:: check_negative(:,:,:)
12536 logical,
allocatable:: both_negative(:,:,:)
12540 if (
present(negative_support))
then 12541 negative_support_on = negative_support
12543 negative_support_on = .true.
12549 answer_shape = shape(answer)
12550 check_shape = shape(check)
12552 consist_shape = answer_shape == check_shape
12554 if (.not. all(consist_shape))
then 12555 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12557 write(*,*)
' shape of check is (', check_shape,
')' 12558 write(*,*)
' is INCORRECT' 12559 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 12565 allocate( mask_array( &
12566 & answer_shape(1), &
12568 & answer_shape(2), &
12570 & answer_shape(3) ) &
12574 & answer_shape(1), &
12576 & answer_shape(2), &
12578 & answer_shape(3) ) &
12581 allocate( judge_rev( &
12582 & answer_shape(1), &
12584 & answer_shape(2), &
12586 & answer_shape(3) ) &
12589 allocate( answer_negative( &
12590 & answer_shape(1), &
12592 & answer_shape(2), &
12594 & answer_shape(3) ) &
12597 allocate( check_negative( &
12598 & answer_shape(1), &
12600 & answer_shape(2), &
12602 & answer_shape(3) ) &
12605 allocate( both_negative( &
12606 & answer_shape(1), &
12608 & answer_shape(2), &
12610 & answer_shape(3) ) &
12613 answer_negative = answer < 0.0_dp
12614 check_negative = check < 0.0_dp
12615 both_negative = answer_negative .and. check_negative
12616 if (.not. negative_support_on) both_negative = .false.
12618 judge = answer < check
12619 where (both_negative) judge = .not. judge
12621 judge_rev = .not. judge
12622 err_flag = any(judge_rev)
12624 pos = maxloc(mask_array, judge_rev)
12642 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
12644 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
12646 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
12650 & trim(adjustl(pos_array(1))) //
',' // &
12652 & trim(adjustl(pos_array(2))) //
',' // &
12654 & trim(adjustl(pos_array(3))) //
')' 12656 if ( both_negative( &
12663 abs_mes =
'ABSOLUTE value of' 12670 deallocate(mask_array, judge, judge_rev)
12671 deallocate(answer_negative, check_negative, both_negative)
12677 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12679 write(*,*)
' ' // trim(abs_mes) // &
12680 &
' check' // trim(pos_str) //
' = ', wrong
12681 write(*,*)
' is NOT GREATER THAN' 12682 write(*,*)
' ' // trim(abs_mes) // &
12683 &
' answer' // trim(pos_str) //
' = ', right
12687 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 12695 & message, answer, check, negative_support)
12699 character(*),
intent(in):: message
12700 real(DP),
intent(in):: answer(:,:,:,:)
12701 real(DP),
intent(in):: check(:,:,:,:)
12702 logical,
intent(in),
optional:: negative_support
12704 logical:: negative_support_on
12705 character(STRING):: pos_str
12706 character(TOKEN):: abs_mes
12707 real(DP):: wrong, right
12709 integer:: answer_shape(4), check_shape(4), pos(4)
12710 logical:: consist_shape(4)
12711 character(TOKEN):: pos_array(4)
12712 integer,
allocatable:: mask_array(:,:,:,:)
12713 logical,
allocatable:: judge(:,:,:,:)
12714 logical,
allocatable:: judge_rev(:,:,:,:)
12715 logical,
allocatable:: answer_negative(:,:,:,:)
12716 logical,
allocatable:: check_negative(:,:,:,:)
12717 logical,
allocatable:: both_negative(:,:,:,:)
12721 if (
present(negative_support))
then 12722 negative_support_on = negative_support
12724 negative_support_on = .true.
12730 answer_shape = shape(answer)
12731 check_shape = shape(check)
12733 consist_shape = answer_shape == check_shape
12735 if (.not. all(consist_shape))
then 12736 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12738 write(*,*)
' shape of check is (', check_shape,
')' 12739 write(*,*)
' is INCORRECT' 12740 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 12746 allocate( mask_array( &
12747 & answer_shape(1), &
12749 & answer_shape(2), &
12751 & answer_shape(3), &
12753 & answer_shape(4) ) &
12757 & answer_shape(1), &
12759 & answer_shape(2), &
12761 & answer_shape(3), &
12763 & answer_shape(4) ) &
12766 allocate( judge_rev( &
12767 & answer_shape(1), &
12769 & answer_shape(2), &
12771 & answer_shape(3), &
12773 & answer_shape(4) ) &
12776 allocate( answer_negative( &
12777 & answer_shape(1), &
12779 & answer_shape(2), &
12781 & answer_shape(3), &
12783 & answer_shape(4) ) &
12786 allocate( check_negative( &
12787 & answer_shape(1), &
12789 & answer_shape(2), &
12791 & answer_shape(3), &
12793 & answer_shape(4) ) &
12796 allocate( both_negative( &
12797 & answer_shape(1), &
12799 & answer_shape(2), &
12801 & answer_shape(3), &
12803 & answer_shape(4) ) &
12806 answer_negative = answer < 0.0_dp
12807 check_negative = check < 0.0_dp
12808 both_negative = answer_negative .and. check_negative
12809 if (.not. negative_support_on) both_negative = .false.
12811 judge = answer < check
12812 where (both_negative) judge = .not. judge
12814 judge_rev = .not. judge
12815 err_flag = any(judge_rev)
12817 pos = maxloc(mask_array, judge_rev)
12839 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
12841 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
12843 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
12845 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
12849 & trim(adjustl(pos_array(1))) //
',' // &
12851 & trim(adjustl(pos_array(2))) //
',' // &
12853 & trim(adjustl(pos_array(3))) //
',' // &
12855 & trim(adjustl(pos_array(4))) //
')' 12857 if ( both_negative( &
12866 abs_mes =
'ABSOLUTE value of' 12873 deallocate(mask_array, judge, judge_rev)
12874 deallocate(answer_negative, check_negative, both_negative)
12880 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12882 write(*,*)
' ' // trim(abs_mes) // &
12883 &
' check' // trim(pos_str) //
' = ', wrong
12884 write(*,*)
' is NOT GREATER THAN' 12885 write(*,*)
' ' // trim(abs_mes) // &
12886 &
' answer' // trim(pos_str) //
' = ', right
12890 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 12898 & message, answer, check, negative_support)
12902 character(*),
intent(in):: message
12903 real(DP),
intent(in):: answer(:,:,:,:,:)
12904 real(DP),
intent(in):: check(:,:,:,:,:)
12905 logical,
intent(in),
optional:: negative_support
12907 logical:: negative_support_on
12908 character(STRING):: pos_str
12909 character(TOKEN):: abs_mes
12910 real(DP):: wrong, right
12912 integer:: answer_shape(5), check_shape(5), pos(5)
12913 logical:: consist_shape(5)
12914 character(TOKEN):: pos_array(5)
12915 integer,
allocatable:: mask_array(:,:,:,:,:)
12916 logical,
allocatable:: judge(:,:,:,:,:)
12917 logical,
allocatable:: judge_rev(:,:,:,:,:)
12918 logical,
allocatable:: answer_negative(:,:,:,:,:)
12919 logical,
allocatable:: check_negative(:,:,:,:,:)
12920 logical,
allocatable:: both_negative(:,:,:,:,:)
12924 if (
present(negative_support))
then 12925 negative_support_on = negative_support
12927 negative_support_on = .true.
12933 answer_shape = shape(answer)
12934 check_shape = shape(check)
12936 consist_shape = answer_shape == check_shape
12938 if (.not. all(consist_shape))
then 12939 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 12941 write(*,*)
' shape of check is (', check_shape,
')' 12942 write(*,*)
' is INCORRECT' 12943 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 12949 allocate( mask_array( &
12950 & answer_shape(1), &
12952 & answer_shape(2), &
12954 & answer_shape(3), &
12956 & answer_shape(4), &
12958 & answer_shape(5) ) &
12962 & answer_shape(1), &
12964 & answer_shape(2), &
12966 & answer_shape(3), &
12968 & answer_shape(4), &
12970 & answer_shape(5) ) &
12973 allocate( judge_rev( &
12974 & answer_shape(1), &
12976 & answer_shape(2), &
12978 & answer_shape(3), &
12980 & answer_shape(4), &
12982 & answer_shape(5) ) &
12985 allocate( answer_negative( &
12986 & answer_shape(1), &
12988 & answer_shape(2), &
12990 & answer_shape(3), &
12992 & answer_shape(4), &
12994 & answer_shape(5) ) &
12997 allocate( check_negative( &
12998 & answer_shape(1), &
13000 & answer_shape(2), &
13002 & answer_shape(3), &
13004 & answer_shape(4), &
13006 & answer_shape(5) ) &
13009 allocate( both_negative( &
13010 & answer_shape(1), &
13012 & answer_shape(2), &
13014 & answer_shape(3), &
13016 & answer_shape(4), &
13018 & answer_shape(5) ) &
13021 answer_negative = answer < 0.0_dp
13022 check_negative = check < 0.0_dp
13023 both_negative = answer_negative .and. check_negative
13024 if (.not. negative_support_on) both_negative = .false.
13026 judge = answer < check
13027 where (both_negative) judge = .not. judge
13029 judge_rev = .not. judge
13030 err_flag = any(judge_rev)
13032 pos = maxloc(mask_array, judge_rev)
13058 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
13060 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
13062 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
13064 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
13066 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
13070 & trim(adjustl(pos_array(1))) //
',' // &
13072 & trim(adjustl(pos_array(2))) //
',' // &
13074 & trim(adjustl(pos_array(3))) //
',' // &
13076 & trim(adjustl(pos_array(4))) //
',' // &
13078 & trim(adjustl(pos_array(5))) //
')' 13080 if ( both_negative( &
13091 abs_mes =
'ABSOLUTE value of' 13098 deallocate(mask_array, judge, judge_rev)
13099 deallocate(answer_negative, check_negative, both_negative)
13105 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 13107 write(*,*)
' ' // trim(abs_mes) // &
13108 &
' check' // trim(pos_str) //
' = ', wrong
13109 write(*,*)
' is NOT GREATER THAN' 13110 write(*,*)
' ' // trim(abs_mes) // &
13111 &
' answer' // trim(pos_str) //
' = ', right
13115 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 13123 & message, answer, check, negative_support)
13127 character(*),
intent(in):: message
13128 real(DP),
intent(in):: answer(:,:,:,:,:,:)
13129 real(DP),
intent(in):: check(:,:,:,:,:,:)
13130 logical,
intent(in),
optional:: negative_support
13132 logical:: negative_support_on
13133 character(STRING):: pos_str
13134 character(TOKEN):: abs_mes
13135 real(DP):: wrong, right
13137 integer:: answer_shape(6), check_shape(6), pos(6)
13138 logical:: consist_shape(6)
13139 character(TOKEN):: pos_array(6)
13140 integer,
allocatable:: mask_array(:,:,:,:,:,:)
13141 logical,
allocatable:: judge(:,:,:,:,:,:)
13142 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
13143 logical,
allocatable:: answer_negative(:,:,:,:,:,:)
13144 logical,
allocatable:: check_negative(:,:,:,:,:,:)
13145 logical,
allocatable:: both_negative(:,:,:,:,:,:)
13149 if (
present(negative_support))
then 13150 negative_support_on = negative_support
13152 negative_support_on = .true.
13158 answer_shape = shape(answer)
13159 check_shape = shape(check)
13161 consist_shape = answer_shape == check_shape
13163 if (.not. all(consist_shape))
then 13164 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 13166 write(*,*)
' shape of check is (', check_shape,
')' 13167 write(*,*)
' is INCORRECT' 13168 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 13174 allocate( mask_array( &
13175 & answer_shape(1), &
13177 & answer_shape(2), &
13179 & answer_shape(3), &
13181 & answer_shape(4), &
13183 & answer_shape(5), &
13185 & answer_shape(6) ) &
13189 & answer_shape(1), &
13191 & answer_shape(2), &
13193 & answer_shape(3), &
13195 & answer_shape(4), &
13197 & answer_shape(5), &
13199 & answer_shape(6) ) &
13202 allocate( judge_rev( &
13203 & answer_shape(1), &
13205 & answer_shape(2), &
13207 & answer_shape(3), &
13209 & answer_shape(4), &
13211 & answer_shape(5), &
13213 & answer_shape(6) ) &
13216 allocate( answer_negative( &
13217 & answer_shape(1), &
13219 & answer_shape(2), &
13221 & answer_shape(3), &
13223 & answer_shape(4), &
13225 & answer_shape(5), &
13227 & answer_shape(6) ) &
13230 allocate( check_negative( &
13231 & answer_shape(1), &
13233 & answer_shape(2), &
13235 & answer_shape(3), &
13237 & answer_shape(4), &
13239 & answer_shape(5), &
13241 & answer_shape(6) ) &
13244 allocate( both_negative( &
13245 & answer_shape(1), &
13247 & answer_shape(2), &
13249 & answer_shape(3), &
13251 & answer_shape(4), &
13253 & answer_shape(5), &
13255 & answer_shape(6) ) &
13258 answer_negative = answer < 0.0_dp
13259 check_negative = check < 0.0_dp
13260 both_negative = answer_negative .and. check_negative
13261 if (.not. negative_support_on) both_negative = .false.
13263 judge = answer < check
13264 where (both_negative) judge = .not. judge
13266 judge_rev = .not. judge
13267 err_flag = any(judge_rev)
13269 pos = maxloc(mask_array, judge_rev)
13299 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
13301 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
13303 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
13305 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
13307 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
13309 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
13313 & trim(adjustl(pos_array(1))) //
',' // &
13315 & trim(adjustl(pos_array(2))) //
',' // &
13317 & trim(adjustl(pos_array(3))) //
',' // &
13319 & trim(adjustl(pos_array(4))) //
',' // &
13321 & trim(adjustl(pos_array(5))) //
',' // &
13323 & trim(adjustl(pos_array(6))) //
')' 13325 if ( both_negative( &
13338 abs_mes =
'ABSOLUTE value of' 13345 deallocate(mask_array, judge, judge_rev)
13346 deallocate(answer_negative, check_negative, both_negative)
13352 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 13354 write(*,*)
' ' // trim(abs_mes) // &
13355 &
' check' // trim(pos_str) //
' = ', wrong
13356 write(*,*)
' is NOT GREATER THAN' 13357 write(*,*)
' ' // trim(abs_mes) // &
13358 &
' answer' // trim(pos_str) //
' = ', right
13362 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 13370 & message, answer, check, negative_support)
13374 character(*),
intent(in):: message
13375 real(DP),
intent(in):: answer(:,:,:,:,:,:,:)
13376 real(DP),
intent(in):: check(:,:,:,:,:,:,:)
13377 logical,
intent(in),
optional:: negative_support
13379 logical:: negative_support_on
13380 character(STRING):: pos_str
13381 character(TOKEN):: abs_mes
13382 real(DP):: wrong, right
13384 integer:: answer_shape(7), check_shape(7), pos(7)
13385 logical:: consist_shape(7)
13386 character(TOKEN):: pos_array(7)
13387 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
13388 logical,
allocatable:: judge(:,:,:,:,:,:,:)
13389 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
13390 logical,
allocatable:: answer_negative(:,:,:,:,:,:,:)
13391 logical,
allocatable:: check_negative(:,:,:,:,:,:,:)
13392 logical,
allocatable:: both_negative(:,:,:,:,:,:,:)
13396 if (
present(negative_support))
then 13397 negative_support_on = negative_support
13399 negative_support_on = .true.
13405 answer_shape = shape(answer)
13406 check_shape = shape(check)
13408 consist_shape = answer_shape == check_shape
13410 if (.not. all(consist_shape))
then 13411 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 13413 write(*,*)
' shape of check is (', check_shape,
')' 13414 write(*,*)
' is INCORRECT' 13415 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 13421 allocate( mask_array( &
13422 & answer_shape(1), &
13424 & answer_shape(2), &
13426 & answer_shape(3), &
13428 & answer_shape(4), &
13430 & answer_shape(5), &
13432 & answer_shape(6), &
13434 & answer_shape(7) ) &
13438 & answer_shape(1), &
13440 & answer_shape(2), &
13442 & answer_shape(3), &
13444 & answer_shape(4), &
13446 & answer_shape(5), &
13448 & answer_shape(6), &
13450 & answer_shape(7) ) &
13453 allocate( judge_rev( &
13454 & answer_shape(1), &
13456 & answer_shape(2), &
13458 & answer_shape(3), &
13460 & answer_shape(4), &
13462 & answer_shape(5), &
13464 & answer_shape(6), &
13466 & answer_shape(7) ) &
13469 allocate( answer_negative( &
13470 & answer_shape(1), &
13472 & answer_shape(2), &
13474 & answer_shape(3), &
13476 & answer_shape(4), &
13478 & answer_shape(5), &
13480 & answer_shape(6), &
13482 & answer_shape(7) ) &
13485 allocate( check_negative( &
13486 & answer_shape(1), &
13488 & answer_shape(2), &
13490 & answer_shape(3), &
13492 & answer_shape(4), &
13494 & answer_shape(5), &
13496 & answer_shape(6), &
13498 & answer_shape(7) ) &
13501 allocate( both_negative( &
13502 & answer_shape(1), &
13504 & answer_shape(2), &
13506 & answer_shape(3), &
13508 & answer_shape(4), &
13510 & answer_shape(5), &
13512 & answer_shape(6), &
13514 & answer_shape(7) ) &
13517 answer_negative = answer < 0.0_dp
13518 check_negative = check < 0.0_dp
13519 both_negative = answer_negative .and. check_negative
13520 if (.not. negative_support_on) both_negative = .false.
13522 judge = answer < check
13523 where (both_negative) judge = .not. judge
13525 judge_rev = .not. judge
13526 err_flag = any(judge_rev)
13528 pos = maxloc(mask_array, judge_rev)
13562 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
13564 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
13566 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
13568 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
13570 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
13572 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
13574 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
13578 & trim(adjustl(pos_array(1))) //
',' // &
13580 & trim(adjustl(pos_array(2))) //
',' // &
13582 & trim(adjustl(pos_array(3))) //
',' // &
13584 & trim(adjustl(pos_array(4))) //
',' // &
13586 & trim(adjustl(pos_array(5))) //
',' // &
13588 & trim(adjustl(pos_array(6))) //
',' // &
13590 & trim(adjustl(pos_array(7))) //
')' 13592 if ( both_negative( &
13607 abs_mes =
'ABSOLUTE value of' 13614 deallocate(mask_array, judge, judge_rev)
13615 deallocate(answer_negative, check_negative, both_negative)
13621 write(*,*)
' *** Error [AssertGT] *** Checking ' // trim(message) //
' FAILURE' 13623 write(*,*)
' ' // trim(abs_mes) // &
13624 &
' check' // trim(pos_str) //
' = ', wrong
13625 write(*,*)
' is NOT GREATER THAN' 13626 write(*,*)
' ' // trim(abs_mes) // &
13627 &
' answer' // trim(pos_str) //
' = ', right
13631 write(*,*)
' *** MESSAGE [AssertGT] *** Checking ' // trim(message) //
' OK' 13639 & message, answer, check, negative_support)
13643 character(*),
intent(in):: message
13644 integer,
intent(in):: answer
13645 integer,
intent(in):: check
13646 logical,
intent(in),
optional:: negative_support
13648 logical:: negative_support_on
13649 character(STRING):: pos_str
13650 character(TOKEN):: abs_mes
13651 integer:: wrong, right
13656 if (
present(negative_support))
then 13657 negative_support_on = negative_support
13659 negative_support_on = .true.
13667 err_flag = .not. answer > check
13671 & .and. check < 0 &
13672 & .and. negative_support_on )
then 13674 err_flag = .not. err_flag
13675 abs_mes =
'ABSOLUTE value of' 13686 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 13688 write(*,*)
' ' // trim(abs_mes) // &
13689 &
' check' // trim(pos_str) //
' = ', wrong
13690 write(*,*)
' is NOT LESS THAN' 13691 write(*,*)
' ' // trim(abs_mes) // &
13692 &
' answer' // trim(pos_str) //
' = ', right
13696 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 13704 & message, answer, check, negative_support)
13708 character(*),
intent(in):: message
13709 integer,
intent(in):: answer(:)
13710 integer,
intent(in):: check(:)
13711 logical,
intent(in),
optional:: negative_support
13713 logical:: negative_support_on
13714 character(STRING):: pos_str
13715 character(TOKEN):: abs_mes
13716 integer:: wrong, right
13718 integer:: answer_shape(1), check_shape(1), pos(1)
13719 logical:: consist_shape(1)
13720 character(TOKEN):: pos_array(1)
13721 integer,
allocatable:: mask_array(:)
13722 logical,
allocatable:: judge(:)
13723 logical,
allocatable:: judge_rev(:)
13724 logical,
allocatable:: answer_negative(:)
13725 logical,
allocatable:: check_negative(:)
13726 logical,
allocatable:: both_negative(:)
13730 if (
present(negative_support))
then 13731 negative_support_on = negative_support
13733 negative_support_on = .true.
13739 answer_shape = shape(answer)
13740 check_shape = shape(check)
13742 consist_shape = answer_shape == check_shape
13744 if (.not. all(consist_shape))
then 13745 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 13747 write(*,*)
' shape of check is (', check_shape,
')' 13748 write(*,*)
' is INCORRECT' 13749 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 13755 allocate( mask_array( &
13757 & answer_shape(1) ) &
13762 & answer_shape(1) ) &
13765 allocate( judge_rev( &
13767 & answer_shape(1) ) &
13770 allocate( answer_negative( &
13772 & answer_shape(1) ) &
13775 allocate( check_negative( &
13777 & answer_shape(1) ) &
13780 allocate( both_negative( &
13782 & answer_shape(1) ) &
13785 answer_negative = answer < 0
13786 check_negative = check < 0
13787 both_negative = answer_negative .and. check_negative
13788 if (.not. negative_support_on) both_negative = .false.
13790 judge = answer > check
13791 where (both_negative) judge = .not. judge
13793 judge_rev = .not. judge
13794 err_flag = any(judge_rev)
13796 pos = maxloc(mask_array, judge_rev)
13808 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
13813 & trim(adjustl(pos_array(1))) //
')' 13815 if ( both_negative( &
13819 abs_mes =
'ABSOLUTE value of' 13826 deallocate(mask_array, judge, judge_rev)
13827 deallocate(answer_negative, check_negative, both_negative)
13833 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 13835 write(*,*)
' ' // trim(abs_mes) // &
13836 &
' check' // trim(pos_str) //
' = ', wrong
13837 write(*,*)
' is NOT LESS THAN' 13838 write(*,*)
' ' // trim(abs_mes) // &
13839 &
' answer' // trim(pos_str) //
' = ', right
13843 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 13851 & message, answer, check, negative_support)
13855 character(*),
intent(in):: message
13856 integer,
intent(in):: answer(:,:)
13857 integer,
intent(in):: check(:,:)
13858 logical,
intent(in),
optional:: negative_support
13860 logical:: negative_support_on
13861 character(STRING):: pos_str
13862 character(TOKEN):: abs_mes
13863 integer:: wrong, right
13865 integer:: answer_shape(2), check_shape(2), pos(2)
13866 logical:: consist_shape(2)
13867 character(TOKEN):: pos_array(2)
13868 integer,
allocatable:: mask_array(:,:)
13869 logical,
allocatable:: judge(:,:)
13870 logical,
allocatable:: judge_rev(:,:)
13871 logical,
allocatable:: answer_negative(:,:)
13872 logical,
allocatable:: check_negative(:,:)
13873 logical,
allocatable:: both_negative(:,:)
13877 if (
present(negative_support))
then 13878 negative_support_on = negative_support
13880 negative_support_on = .true.
13886 answer_shape = shape(answer)
13887 check_shape = shape(check)
13889 consist_shape = answer_shape == check_shape
13891 if (.not. all(consist_shape))
then 13892 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 13894 write(*,*)
' shape of check is (', check_shape,
')' 13895 write(*,*)
' is INCORRECT' 13896 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 13902 allocate( mask_array( &
13903 & answer_shape(1), &
13905 & answer_shape(2) ) &
13909 & answer_shape(1), &
13911 & answer_shape(2) ) &
13914 allocate( judge_rev( &
13915 & answer_shape(1), &
13917 & answer_shape(2) ) &
13920 allocate( answer_negative( &
13921 & answer_shape(1), &
13923 & answer_shape(2) ) &
13926 allocate( check_negative( &
13927 & answer_shape(1), &
13929 & answer_shape(2) ) &
13932 allocate( both_negative( &
13933 & answer_shape(1), &
13935 & answer_shape(2) ) &
13938 answer_negative = answer < 0
13939 check_negative = check < 0
13940 both_negative = answer_negative .and. check_negative
13941 if (.not. negative_support_on) both_negative = .false.
13943 judge = answer > check
13944 where (both_negative) judge = .not. judge
13946 judge_rev = .not. judge
13947 err_flag = any(judge_rev)
13949 pos = maxloc(mask_array, judge_rev)
13963 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
13965 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
13969 & trim(adjustl(pos_array(1))) //
',' // &
13971 & trim(adjustl(pos_array(2))) //
')' 13973 if ( both_negative( &
13978 abs_mes =
'ABSOLUTE value of' 13985 deallocate(mask_array, judge, judge_rev)
13986 deallocate(answer_negative, check_negative, both_negative)
13992 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 13994 write(*,*)
' ' // trim(abs_mes) // &
13995 &
' check' // trim(pos_str) //
' = ', wrong
13996 write(*,*)
' is NOT LESS THAN' 13997 write(*,*)
' ' // trim(abs_mes) // &
13998 &
' answer' // trim(pos_str) //
' = ', right
14002 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 14010 & message, answer, check, negative_support)
14014 character(*),
intent(in):: message
14015 integer,
intent(in):: answer(:,:,:)
14016 integer,
intent(in):: check(:,:,:)
14017 logical,
intent(in),
optional:: negative_support
14019 logical:: negative_support_on
14020 character(STRING):: pos_str
14021 character(TOKEN):: abs_mes
14022 integer:: wrong, right
14024 integer:: answer_shape(3), check_shape(3), pos(3)
14025 logical:: consist_shape(3)
14026 character(TOKEN):: pos_array(3)
14027 integer,
allocatable:: mask_array(:,:,:)
14028 logical,
allocatable:: judge(:,:,:)
14029 logical,
allocatable:: judge_rev(:,:,:)
14030 logical,
allocatable:: answer_negative(:,:,:)
14031 logical,
allocatable:: check_negative(:,:,:)
14032 logical,
allocatable:: both_negative(:,:,:)
14036 if (
present(negative_support))
then 14037 negative_support_on = negative_support
14039 negative_support_on = .true.
14045 answer_shape = shape(answer)
14046 check_shape = shape(check)
14048 consist_shape = answer_shape == check_shape
14050 if (.not. all(consist_shape))
then 14051 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14053 write(*,*)
' shape of check is (', check_shape,
')' 14054 write(*,*)
' is INCORRECT' 14055 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 14061 allocate( mask_array( &
14062 & answer_shape(1), &
14064 & answer_shape(2), &
14066 & answer_shape(3) ) &
14070 & answer_shape(1), &
14072 & answer_shape(2), &
14074 & answer_shape(3) ) &
14077 allocate( judge_rev( &
14078 & answer_shape(1), &
14080 & answer_shape(2), &
14082 & answer_shape(3) ) &
14085 allocate( answer_negative( &
14086 & answer_shape(1), &
14088 & answer_shape(2), &
14090 & answer_shape(3) ) &
14093 allocate( check_negative( &
14094 & answer_shape(1), &
14096 & answer_shape(2), &
14098 & answer_shape(3) ) &
14101 allocate( both_negative( &
14102 & answer_shape(1), &
14104 & answer_shape(2), &
14106 & answer_shape(3) ) &
14109 answer_negative = answer < 0
14110 check_negative = check < 0
14111 both_negative = answer_negative .and. check_negative
14112 if (.not. negative_support_on) both_negative = .false.
14114 judge = answer > check
14115 where (both_negative) judge = .not. judge
14117 judge_rev = .not. judge
14118 err_flag = any(judge_rev)
14120 pos = maxloc(mask_array, judge_rev)
14138 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
14140 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
14142 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
14146 & trim(adjustl(pos_array(1))) //
',' // &
14148 & trim(adjustl(pos_array(2))) //
',' // &
14150 & trim(adjustl(pos_array(3))) //
')' 14152 if ( both_negative( &
14159 abs_mes =
'ABSOLUTE value of' 14166 deallocate(mask_array, judge, judge_rev)
14167 deallocate(answer_negative, check_negative, both_negative)
14173 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14175 write(*,*)
' ' // trim(abs_mes) // &
14176 &
' check' // trim(pos_str) //
' = ', wrong
14177 write(*,*)
' is NOT LESS THAN' 14178 write(*,*)
' ' // trim(abs_mes) // &
14179 &
' answer' // trim(pos_str) //
' = ', right
14183 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 14191 & message, answer, check, negative_support)
14195 character(*),
intent(in):: message
14196 integer,
intent(in):: answer(:,:,:,:)
14197 integer,
intent(in):: check(:,:,:,:)
14198 logical,
intent(in),
optional:: negative_support
14200 logical:: negative_support_on
14201 character(STRING):: pos_str
14202 character(TOKEN):: abs_mes
14203 integer:: wrong, right
14205 integer:: answer_shape(4), check_shape(4), pos(4)
14206 logical:: consist_shape(4)
14207 character(TOKEN):: pos_array(4)
14208 integer,
allocatable:: mask_array(:,:,:,:)
14209 logical,
allocatable:: judge(:,:,:,:)
14210 logical,
allocatable:: judge_rev(:,:,:,:)
14211 logical,
allocatable:: answer_negative(:,:,:,:)
14212 logical,
allocatable:: check_negative(:,:,:,:)
14213 logical,
allocatable:: both_negative(:,:,:,:)
14217 if (
present(negative_support))
then 14218 negative_support_on = negative_support
14220 negative_support_on = .true.
14226 answer_shape = shape(answer)
14227 check_shape = shape(check)
14229 consist_shape = answer_shape == check_shape
14231 if (.not. all(consist_shape))
then 14232 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14234 write(*,*)
' shape of check is (', check_shape,
')' 14235 write(*,*)
' is INCORRECT' 14236 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 14242 allocate( mask_array( &
14243 & answer_shape(1), &
14245 & answer_shape(2), &
14247 & answer_shape(3), &
14249 & answer_shape(4) ) &
14253 & answer_shape(1), &
14255 & answer_shape(2), &
14257 & answer_shape(3), &
14259 & answer_shape(4) ) &
14262 allocate( judge_rev( &
14263 & answer_shape(1), &
14265 & answer_shape(2), &
14267 & answer_shape(3), &
14269 & answer_shape(4) ) &
14272 allocate( answer_negative( &
14273 & answer_shape(1), &
14275 & answer_shape(2), &
14277 & answer_shape(3), &
14279 & answer_shape(4) ) &
14282 allocate( check_negative( &
14283 & answer_shape(1), &
14285 & answer_shape(2), &
14287 & answer_shape(3), &
14289 & answer_shape(4) ) &
14292 allocate( both_negative( &
14293 & answer_shape(1), &
14295 & answer_shape(2), &
14297 & answer_shape(3), &
14299 & answer_shape(4) ) &
14302 answer_negative = answer < 0
14303 check_negative = check < 0
14304 both_negative = answer_negative .and. check_negative
14305 if (.not. negative_support_on) both_negative = .false.
14307 judge = answer > check
14308 where (both_negative) judge = .not. judge
14310 judge_rev = .not. judge
14311 err_flag = any(judge_rev)
14313 pos = maxloc(mask_array, judge_rev)
14335 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
14337 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
14339 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
14341 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
14345 & trim(adjustl(pos_array(1))) //
',' // &
14347 & trim(adjustl(pos_array(2))) //
',' // &
14349 & trim(adjustl(pos_array(3))) //
',' // &
14351 & trim(adjustl(pos_array(4))) //
')' 14353 if ( both_negative( &
14362 abs_mes =
'ABSOLUTE value of' 14369 deallocate(mask_array, judge, judge_rev)
14370 deallocate(answer_negative, check_negative, both_negative)
14376 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14378 write(*,*)
' ' // trim(abs_mes) // &
14379 &
' check' // trim(pos_str) //
' = ', wrong
14380 write(*,*)
' is NOT LESS THAN' 14381 write(*,*)
' ' // trim(abs_mes) // &
14382 &
' answer' // trim(pos_str) //
' = ', right
14386 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 14394 & message, answer, check, negative_support)
14398 character(*),
intent(in):: message
14399 integer,
intent(in):: answer(:,:,:,:,:)
14400 integer,
intent(in):: check(:,:,:,:,:)
14401 logical,
intent(in),
optional:: negative_support
14403 logical:: negative_support_on
14404 character(STRING):: pos_str
14405 character(TOKEN):: abs_mes
14406 integer:: wrong, right
14408 integer:: answer_shape(5), check_shape(5), pos(5)
14409 logical:: consist_shape(5)
14410 character(TOKEN):: pos_array(5)
14411 integer,
allocatable:: mask_array(:,:,:,:,:)
14412 logical,
allocatable:: judge(:,:,:,:,:)
14413 logical,
allocatable:: judge_rev(:,:,:,:,:)
14414 logical,
allocatable:: answer_negative(:,:,:,:,:)
14415 logical,
allocatable:: check_negative(:,:,:,:,:)
14416 logical,
allocatable:: both_negative(:,:,:,:,:)
14420 if (
present(negative_support))
then 14421 negative_support_on = negative_support
14423 negative_support_on = .true.
14429 answer_shape = shape(answer)
14430 check_shape = shape(check)
14432 consist_shape = answer_shape == check_shape
14434 if (.not. all(consist_shape))
then 14435 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14437 write(*,*)
' shape of check is (', check_shape,
')' 14438 write(*,*)
' is INCORRECT' 14439 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 14445 allocate( mask_array( &
14446 & answer_shape(1), &
14448 & answer_shape(2), &
14450 & answer_shape(3), &
14452 & answer_shape(4), &
14454 & answer_shape(5) ) &
14458 & answer_shape(1), &
14460 & answer_shape(2), &
14462 & answer_shape(3), &
14464 & answer_shape(4), &
14466 & answer_shape(5) ) &
14469 allocate( judge_rev( &
14470 & answer_shape(1), &
14472 & answer_shape(2), &
14474 & answer_shape(3), &
14476 & answer_shape(4), &
14478 & answer_shape(5) ) &
14481 allocate( answer_negative( &
14482 & answer_shape(1), &
14484 & answer_shape(2), &
14486 & answer_shape(3), &
14488 & answer_shape(4), &
14490 & answer_shape(5) ) &
14493 allocate( check_negative( &
14494 & answer_shape(1), &
14496 & answer_shape(2), &
14498 & answer_shape(3), &
14500 & answer_shape(4), &
14502 & answer_shape(5) ) &
14505 allocate( both_negative( &
14506 & answer_shape(1), &
14508 & answer_shape(2), &
14510 & answer_shape(3), &
14512 & answer_shape(4), &
14514 & answer_shape(5) ) &
14517 answer_negative = answer < 0
14518 check_negative = check < 0
14519 both_negative = answer_negative .and. check_negative
14520 if (.not. negative_support_on) both_negative = .false.
14522 judge = answer > check
14523 where (both_negative) judge = .not. judge
14525 judge_rev = .not. judge
14526 err_flag = any(judge_rev)
14528 pos = maxloc(mask_array, judge_rev)
14554 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
14556 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
14558 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
14560 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
14562 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
14566 & trim(adjustl(pos_array(1))) //
',' // &
14568 & trim(adjustl(pos_array(2))) //
',' // &
14570 & trim(adjustl(pos_array(3))) //
',' // &
14572 & trim(adjustl(pos_array(4))) //
',' // &
14574 & trim(adjustl(pos_array(5))) //
')' 14576 if ( both_negative( &
14587 abs_mes =
'ABSOLUTE value of' 14594 deallocate(mask_array, judge, judge_rev)
14595 deallocate(answer_negative, check_negative, both_negative)
14601 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14603 write(*,*)
' ' // trim(abs_mes) // &
14604 &
' check' // trim(pos_str) //
' = ', wrong
14605 write(*,*)
' is NOT LESS THAN' 14606 write(*,*)
' ' // trim(abs_mes) // &
14607 &
' answer' // trim(pos_str) //
' = ', right
14611 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 14619 & message, answer, check, negative_support)
14623 character(*),
intent(in):: message
14624 integer,
intent(in):: answer(:,:,:,:,:,:)
14625 integer,
intent(in):: check(:,:,:,:,:,:)
14626 logical,
intent(in),
optional:: negative_support
14628 logical:: negative_support_on
14629 character(STRING):: pos_str
14630 character(TOKEN):: abs_mes
14631 integer:: wrong, right
14633 integer:: answer_shape(6), check_shape(6), pos(6)
14634 logical:: consist_shape(6)
14635 character(TOKEN):: pos_array(6)
14636 integer,
allocatable:: mask_array(:,:,:,:,:,:)
14637 logical,
allocatable:: judge(:,:,:,:,:,:)
14638 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
14639 logical,
allocatable:: answer_negative(:,:,:,:,:,:)
14640 logical,
allocatable:: check_negative(:,:,:,:,:,:)
14641 logical,
allocatable:: both_negative(:,:,:,:,:,:)
14645 if (
present(negative_support))
then 14646 negative_support_on = negative_support
14648 negative_support_on = .true.
14654 answer_shape = shape(answer)
14655 check_shape = shape(check)
14657 consist_shape = answer_shape == check_shape
14659 if (.not. all(consist_shape))
then 14660 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14662 write(*,*)
' shape of check is (', check_shape,
')' 14663 write(*,*)
' is INCORRECT' 14664 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 14670 allocate( mask_array( &
14671 & answer_shape(1), &
14673 & answer_shape(2), &
14675 & answer_shape(3), &
14677 & answer_shape(4), &
14679 & answer_shape(5), &
14681 & answer_shape(6) ) &
14685 & answer_shape(1), &
14687 & answer_shape(2), &
14689 & answer_shape(3), &
14691 & answer_shape(4), &
14693 & answer_shape(5), &
14695 & answer_shape(6) ) &
14698 allocate( judge_rev( &
14699 & answer_shape(1), &
14701 & answer_shape(2), &
14703 & answer_shape(3), &
14705 & answer_shape(4), &
14707 & answer_shape(5), &
14709 & answer_shape(6) ) &
14712 allocate( answer_negative( &
14713 & answer_shape(1), &
14715 & answer_shape(2), &
14717 & answer_shape(3), &
14719 & answer_shape(4), &
14721 & answer_shape(5), &
14723 & answer_shape(6) ) &
14726 allocate( check_negative( &
14727 & answer_shape(1), &
14729 & answer_shape(2), &
14731 & answer_shape(3), &
14733 & answer_shape(4), &
14735 & answer_shape(5), &
14737 & answer_shape(6) ) &
14740 allocate( both_negative( &
14741 & answer_shape(1), &
14743 & answer_shape(2), &
14745 & answer_shape(3), &
14747 & answer_shape(4), &
14749 & answer_shape(5), &
14751 & answer_shape(6) ) &
14754 answer_negative = answer < 0
14755 check_negative = check < 0
14756 both_negative = answer_negative .and. check_negative
14757 if (.not. negative_support_on) both_negative = .false.
14759 judge = answer > check
14760 where (both_negative) judge = .not. judge
14762 judge_rev = .not. judge
14763 err_flag = any(judge_rev)
14765 pos = maxloc(mask_array, judge_rev)
14795 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
14797 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
14799 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
14801 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
14803 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
14805 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
14809 & trim(adjustl(pos_array(1))) //
',' // &
14811 & trim(adjustl(pos_array(2))) //
',' // &
14813 & trim(adjustl(pos_array(3))) //
',' // &
14815 & trim(adjustl(pos_array(4))) //
',' // &
14817 & trim(adjustl(pos_array(5))) //
',' // &
14819 & trim(adjustl(pos_array(6))) //
')' 14821 if ( both_negative( &
14834 abs_mes =
'ABSOLUTE value of' 14841 deallocate(mask_array, judge, judge_rev)
14842 deallocate(answer_negative, check_negative, both_negative)
14848 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14850 write(*,*)
' ' // trim(abs_mes) // &
14851 &
' check' // trim(pos_str) //
' = ', wrong
14852 write(*,*)
' is NOT LESS THAN' 14853 write(*,*)
' ' // trim(abs_mes) // &
14854 &
' answer' // trim(pos_str) //
' = ', right
14858 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 14866 & message, answer, check, negative_support)
14870 character(*),
intent(in):: message
14871 integer,
intent(in):: answer(:,:,:,:,:,:,:)
14872 integer,
intent(in):: check(:,:,:,:,:,:,:)
14873 logical,
intent(in),
optional:: negative_support
14875 logical:: negative_support_on
14876 character(STRING):: pos_str
14877 character(TOKEN):: abs_mes
14878 integer:: wrong, right
14880 integer:: answer_shape(7), check_shape(7), pos(7)
14881 logical:: consist_shape(7)
14882 character(TOKEN):: pos_array(7)
14883 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
14884 logical,
allocatable:: judge(:,:,:,:,:,:,:)
14885 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
14886 logical,
allocatable:: answer_negative(:,:,:,:,:,:,:)
14887 logical,
allocatable:: check_negative(:,:,:,:,:,:,:)
14888 logical,
allocatable:: both_negative(:,:,:,:,:,:,:)
14892 if (
present(negative_support))
then 14893 negative_support_on = negative_support
14895 negative_support_on = .true.
14901 answer_shape = shape(answer)
14902 check_shape = shape(check)
14904 consist_shape = answer_shape == check_shape
14906 if (.not. all(consist_shape))
then 14907 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 14909 write(*,*)
' shape of check is (', check_shape,
')' 14910 write(*,*)
' is INCORRECT' 14911 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 14917 allocate( mask_array( &
14918 & answer_shape(1), &
14920 & answer_shape(2), &
14922 & answer_shape(3), &
14924 & answer_shape(4), &
14926 & answer_shape(5), &
14928 & answer_shape(6), &
14930 & answer_shape(7) ) &
14934 & answer_shape(1), &
14936 & answer_shape(2), &
14938 & answer_shape(3), &
14940 & answer_shape(4), &
14942 & answer_shape(5), &
14944 & answer_shape(6), &
14946 & answer_shape(7) ) &
14949 allocate( judge_rev( &
14950 & answer_shape(1), &
14952 & answer_shape(2), &
14954 & answer_shape(3), &
14956 & answer_shape(4), &
14958 & answer_shape(5), &
14960 & answer_shape(6), &
14962 & answer_shape(7) ) &
14965 allocate( answer_negative( &
14966 & answer_shape(1), &
14968 & answer_shape(2), &
14970 & answer_shape(3), &
14972 & answer_shape(4), &
14974 & answer_shape(5), &
14976 & answer_shape(6), &
14978 & answer_shape(7) ) &
14981 allocate( check_negative( &
14982 & answer_shape(1), &
14984 & answer_shape(2), &
14986 & answer_shape(3), &
14988 & answer_shape(4), &
14990 & answer_shape(5), &
14992 & answer_shape(6), &
14994 & answer_shape(7) ) &
14997 allocate( both_negative( &
14998 & answer_shape(1), &
15000 & answer_shape(2), &
15002 & answer_shape(3), &
15004 & answer_shape(4), &
15006 & answer_shape(5), &
15008 & answer_shape(6), &
15010 & answer_shape(7) ) &
15013 answer_negative = answer < 0
15014 check_negative = check < 0
15015 both_negative = answer_negative .and. check_negative
15016 if (.not. negative_support_on) both_negative = .false.
15018 judge = answer > check
15019 where (both_negative) judge = .not. judge
15021 judge_rev = .not. judge
15022 err_flag = any(judge_rev)
15024 pos = maxloc(mask_array, judge_rev)
15058 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
15060 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
15062 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
15064 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
15066 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
15068 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
15070 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
15074 & trim(adjustl(pos_array(1))) //
',' // &
15076 & trim(adjustl(pos_array(2))) //
',' // &
15078 & trim(adjustl(pos_array(3))) //
',' // &
15080 & trim(adjustl(pos_array(4))) //
',' // &
15082 & trim(adjustl(pos_array(5))) //
',' // &
15084 & trim(adjustl(pos_array(6))) //
',' // &
15086 & trim(adjustl(pos_array(7))) //
')' 15088 if ( both_negative( &
15103 abs_mes =
'ABSOLUTE value of' 15110 deallocate(mask_array, judge, judge_rev)
15111 deallocate(answer_negative, check_negative, both_negative)
15117 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15119 write(*,*)
' ' // trim(abs_mes) // &
15120 &
' check' // trim(pos_str) //
' = ', wrong
15121 write(*,*)
' is NOT LESS THAN' 15122 write(*,*)
' ' // trim(abs_mes) // &
15123 &
' answer' // trim(pos_str) //
' = ', right
15127 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 15135 & message, answer, check, negative_support)
15139 character(*),
intent(in):: message
15140 real,
intent(in):: answer
15141 real,
intent(in):: check
15142 logical,
intent(in),
optional:: negative_support
15144 logical:: negative_support_on
15145 character(STRING):: pos_str
15146 character(TOKEN):: abs_mes
15147 real:: wrong, right
15152 if (
present(negative_support))
then 15153 negative_support_on = negative_support
15155 negative_support_on = .true.
15163 err_flag = .not. answer > check
15166 if ( answer < 0.0 &
15167 & .and. check < 0.0 &
15168 & .and. negative_support_on )
then 15170 err_flag = .not. err_flag
15171 abs_mes =
'ABSOLUTE value of' 15182 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15184 write(*,*)
' ' // trim(abs_mes) // &
15185 &
' check' // trim(pos_str) //
' = ', wrong
15186 write(*,*)
' is NOT LESS THAN' 15187 write(*,*)
' ' // trim(abs_mes) // &
15188 &
' answer' // trim(pos_str) //
' = ', right
15192 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 15200 & message, answer, check, negative_support)
15204 character(*),
intent(in):: message
15205 real,
intent(in):: answer(:)
15206 real,
intent(in):: check(:)
15207 logical,
intent(in),
optional:: negative_support
15209 logical:: negative_support_on
15210 character(STRING):: pos_str
15211 character(TOKEN):: abs_mes
15212 real:: wrong, right
15214 integer:: answer_shape(1), check_shape(1), pos(1)
15215 logical:: consist_shape(1)
15216 character(TOKEN):: pos_array(1)
15217 integer,
allocatable:: mask_array(:)
15218 logical,
allocatable:: judge(:)
15219 logical,
allocatable:: judge_rev(:)
15220 logical,
allocatable:: answer_negative(:)
15221 logical,
allocatable:: check_negative(:)
15222 logical,
allocatable:: both_negative(:)
15226 if (
present(negative_support))
then 15227 negative_support_on = negative_support
15229 negative_support_on = .true.
15235 answer_shape = shape(answer)
15236 check_shape = shape(check)
15238 consist_shape = answer_shape == check_shape
15240 if (.not. all(consist_shape))
then 15241 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15243 write(*,*)
' shape of check is (', check_shape,
')' 15244 write(*,*)
' is INCORRECT' 15245 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 15251 allocate( mask_array( &
15253 & answer_shape(1) ) &
15258 & answer_shape(1) ) &
15261 allocate( judge_rev( &
15263 & answer_shape(1) ) &
15266 allocate( answer_negative( &
15268 & answer_shape(1) ) &
15271 allocate( check_negative( &
15273 & answer_shape(1) ) &
15276 allocate( both_negative( &
15278 & answer_shape(1) ) &
15281 answer_negative = answer < 0.0
15282 check_negative = check < 0.0
15283 both_negative = answer_negative .and. check_negative
15284 if (.not. negative_support_on) both_negative = .false.
15286 judge = answer > check
15287 where (both_negative) judge = .not. judge
15289 judge_rev = .not. judge
15290 err_flag = any(judge_rev)
15292 pos = maxloc(mask_array, judge_rev)
15304 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
15309 & trim(adjustl(pos_array(1))) //
')' 15311 if ( both_negative( &
15315 abs_mes =
'ABSOLUTE value of' 15322 deallocate(mask_array, judge, judge_rev)
15323 deallocate(answer_negative, check_negative, both_negative)
15329 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15331 write(*,*)
' ' // trim(abs_mes) // &
15332 &
' check' // trim(pos_str) //
' = ', wrong
15333 write(*,*)
' is NOT LESS THAN' 15334 write(*,*)
' ' // trim(abs_mes) // &
15335 &
' answer' // trim(pos_str) //
' = ', right
15339 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 15347 & message, answer, check, negative_support)
15351 character(*),
intent(in):: message
15352 real,
intent(in):: answer(:,:)
15353 real,
intent(in):: check(:,:)
15354 logical,
intent(in),
optional:: negative_support
15356 logical:: negative_support_on
15357 character(STRING):: pos_str
15358 character(TOKEN):: abs_mes
15359 real:: wrong, right
15361 integer:: answer_shape(2), check_shape(2), pos(2)
15362 logical:: consist_shape(2)
15363 character(TOKEN):: pos_array(2)
15364 integer,
allocatable:: mask_array(:,:)
15365 logical,
allocatable:: judge(:,:)
15366 logical,
allocatable:: judge_rev(:,:)
15367 logical,
allocatable:: answer_negative(:,:)
15368 logical,
allocatable:: check_negative(:,:)
15369 logical,
allocatable:: both_negative(:,:)
15373 if (
present(negative_support))
then 15374 negative_support_on = negative_support
15376 negative_support_on = .true.
15382 answer_shape = shape(answer)
15383 check_shape = shape(check)
15385 consist_shape = answer_shape == check_shape
15387 if (.not. all(consist_shape))
then 15388 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15390 write(*,*)
' shape of check is (', check_shape,
')' 15391 write(*,*)
' is INCORRECT' 15392 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 15398 allocate( mask_array( &
15399 & answer_shape(1), &
15401 & answer_shape(2) ) &
15405 & answer_shape(1), &
15407 & answer_shape(2) ) &
15410 allocate( judge_rev( &
15411 & answer_shape(1), &
15413 & answer_shape(2) ) &
15416 allocate( answer_negative( &
15417 & answer_shape(1), &
15419 & answer_shape(2) ) &
15422 allocate( check_negative( &
15423 & answer_shape(1), &
15425 & answer_shape(2) ) &
15428 allocate( both_negative( &
15429 & answer_shape(1), &
15431 & answer_shape(2) ) &
15434 answer_negative = answer < 0.0
15435 check_negative = check < 0.0
15436 both_negative = answer_negative .and. check_negative
15437 if (.not. negative_support_on) both_negative = .false.
15439 judge = answer > check
15440 where (both_negative) judge = .not. judge
15442 judge_rev = .not. judge
15443 err_flag = any(judge_rev)
15445 pos = maxloc(mask_array, judge_rev)
15459 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
15461 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
15465 & trim(adjustl(pos_array(1))) //
',' // &
15467 & trim(adjustl(pos_array(2))) //
')' 15469 if ( both_negative( &
15474 abs_mes =
'ABSOLUTE value of' 15481 deallocate(mask_array, judge, judge_rev)
15482 deallocate(answer_negative, check_negative, both_negative)
15488 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15490 write(*,*)
' ' // trim(abs_mes) // &
15491 &
' check' // trim(pos_str) //
' = ', wrong
15492 write(*,*)
' is NOT LESS THAN' 15493 write(*,*)
' ' // trim(abs_mes) // &
15494 &
' answer' // trim(pos_str) //
' = ', right
15498 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 15506 & message, answer, check, negative_support)
15510 character(*),
intent(in):: message
15511 real,
intent(in):: answer(:,:,:)
15512 real,
intent(in):: check(:,:,:)
15513 logical,
intent(in),
optional:: negative_support
15515 logical:: negative_support_on
15516 character(STRING):: pos_str
15517 character(TOKEN):: abs_mes
15518 real:: wrong, right
15520 integer:: answer_shape(3), check_shape(3), pos(3)
15521 logical:: consist_shape(3)
15522 character(TOKEN):: pos_array(3)
15523 integer,
allocatable:: mask_array(:,:,:)
15524 logical,
allocatable:: judge(:,:,:)
15525 logical,
allocatable:: judge_rev(:,:,:)
15526 logical,
allocatable:: answer_negative(:,:,:)
15527 logical,
allocatable:: check_negative(:,:,:)
15528 logical,
allocatable:: both_negative(:,:,:)
15532 if (
present(negative_support))
then 15533 negative_support_on = negative_support
15535 negative_support_on = .true.
15541 answer_shape = shape(answer)
15542 check_shape = shape(check)
15544 consist_shape = answer_shape == check_shape
15546 if (.not. all(consist_shape))
then 15547 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15549 write(*,*)
' shape of check is (', check_shape,
')' 15550 write(*,*)
' is INCORRECT' 15551 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 15557 allocate( mask_array( &
15558 & answer_shape(1), &
15560 & answer_shape(2), &
15562 & answer_shape(3) ) &
15566 & answer_shape(1), &
15568 & answer_shape(2), &
15570 & answer_shape(3) ) &
15573 allocate( judge_rev( &
15574 & answer_shape(1), &
15576 & answer_shape(2), &
15578 & answer_shape(3) ) &
15581 allocate( answer_negative( &
15582 & answer_shape(1), &
15584 & answer_shape(2), &
15586 & answer_shape(3) ) &
15589 allocate( check_negative( &
15590 & answer_shape(1), &
15592 & answer_shape(2), &
15594 & answer_shape(3) ) &
15597 allocate( both_negative( &
15598 & answer_shape(1), &
15600 & answer_shape(2), &
15602 & answer_shape(3) ) &
15605 answer_negative = answer < 0.0
15606 check_negative = check < 0.0
15607 both_negative = answer_negative .and. check_negative
15608 if (.not. negative_support_on) both_negative = .false.
15610 judge = answer > check
15611 where (both_negative) judge = .not. judge
15613 judge_rev = .not. judge
15614 err_flag = any(judge_rev)
15616 pos = maxloc(mask_array, judge_rev)
15634 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
15636 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
15638 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
15642 & trim(adjustl(pos_array(1))) //
',' // &
15644 & trim(adjustl(pos_array(2))) //
',' // &
15646 & trim(adjustl(pos_array(3))) //
')' 15648 if ( both_negative( &
15655 abs_mes =
'ABSOLUTE value of' 15662 deallocate(mask_array, judge, judge_rev)
15663 deallocate(answer_negative, check_negative, both_negative)
15669 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15671 write(*,*)
' ' // trim(abs_mes) // &
15672 &
' check' // trim(pos_str) //
' = ', wrong
15673 write(*,*)
' is NOT LESS THAN' 15674 write(*,*)
' ' // trim(abs_mes) // &
15675 &
' answer' // trim(pos_str) //
' = ', right
15679 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 15687 & message, answer, check, negative_support)
15691 character(*),
intent(in):: message
15692 real,
intent(in):: answer(:,:,:,:)
15693 real,
intent(in):: check(:,:,:,:)
15694 logical,
intent(in),
optional:: negative_support
15696 logical:: negative_support_on
15697 character(STRING):: pos_str
15698 character(TOKEN):: abs_mes
15699 real:: wrong, right
15701 integer:: answer_shape(4), check_shape(4), pos(4)
15702 logical:: consist_shape(4)
15703 character(TOKEN):: pos_array(4)
15704 integer,
allocatable:: mask_array(:,:,:,:)
15705 logical,
allocatable:: judge(:,:,:,:)
15706 logical,
allocatable:: judge_rev(:,:,:,:)
15707 logical,
allocatable:: answer_negative(:,:,:,:)
15708 logical,
allocatable:: check_negative(:,:,:,:)
15709 logical,
allocatable:: both_negative(:,:,:,:)
15713 if (
present(negative_support))
then 15714 negative_support_on = negative_support
15716 negative_support_on = .true.
15722 answer_shape = shape(answer)
15723 check_shape = shape(check)
15725 consist_shape = answer_shape == check_shape
15727 if (.not. all(consist_shape))
then 15728 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15730 write(*,*)
' shape of check is (', check_shape,
')' 15731 write(*,*)
' is INCORRECT' 15732 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 15738 allocate( mask_array( &
15739 & answer_shape(1), &
15741 & answer_shape(2), &
15743 & answer_shape(3), &
15745 & answer_shape(4) ) &
15749 & answer_shape(1), &
15751 & answer_shape(2), &
15753 & answer_shape(3), &
15755 & answer_shape(4) ) &
15758 allocate( judge_rev( &
15759 & answer_shape(1), &
15761 & answer_shape(2), &
15763 & answer_shape(3), &
15765 & answer_shape(4) ) &
15768 allocate( answer_negative( &
15769 & answer_shape(1), &
15771 & answer_shape(2), &
15773 & answer_shape(3), &
15775 & answer_shape(4) ) &
15778 allocate( check_negative( &
15779 & answer_shape(1), &
15781 & answer_shape(2), &
15783 & answer_shape(3), &
15785 & answer_shape(4) ) &
15788 allocate( both_negative( &
15789 & answer_shape(1), &
15791 & answer_shape(2), &
15793 & answer_shape(3), &
15795 & answer_shape(4) ) &
15798 answer_negative = answer < 0.0
15799 check_negative = check < 0.0
15800 both_negative = answer_negative .and. check_negative
15801 if (.not. negative_support_on) both_negative = .false.
15803 judge = answer > check
15804 where (both_negative) judge = .not. judge
15806 judge_rev = .not. judge
15807 err_flag = any(judge_rev)
15809 pos = maxloc(mask_array, judge_rev)
15831 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
15833 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
15835 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
15837 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
15841 & trim(adjustl(pos_array(1))) //
',' // &
15843 & trim(adjustl(pos_array(2))) //
',' // &
15845 & trim(adjustl(pos_array(3))) //
',' // &
15847 & trim(adjustl(pos_array(4))) //
')' 15849 if ( both_negative( &
15858 abs_mes =
'ABSOLUTE value of' 15865 deallocate(mask_array, judge, judge_rev)
15866 deallocate(answer_negative, check_negative, both_negative)
15872 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15874 write(*,*)
' ' // trim(abs_mes) // &
15875 &
' check' // trim(pos_str) //
' = ', wrong
15876 write(*,*)
' is NOT LESS THAN' 15877 write(*,*)
' ' // trim(abs_mes) // &
15878 &
' answer' // trim(pos_str) //
' = ', right
15882 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 15890 & message, answer, check, negative_support)
15894 character(*),
intent(in):: message
15895 real,
intent(in):: answer(:,:,:,:,:)
15896 real,
intent(in):: check(:,:,:,:,:)
15897 logical,
intent(in),
optional:: negative_support
15899 logical:: negative_support_on
15900 character(STRING):: pos_str
15901 character(TOKEN):: abs_mes
15902 real:: wrong, right
15904 integer:: answer_shape(5), check_shape(5), pos(5)
15905 logical:: consist_shape(5)
15906 character(TOKEN):: pos_array(5)
15907 integer,
allocatable:: mask_array(:,:,:,:,:)
15908 logical,
allocatable:: judge(:,:,:,:,:)
15909 logical,
allocatable:: judge_rev(:,:,:,:,:)
15910 logical,
allocatable:: answer_negative(:,:,:,:,:)
15911 logical,
allocatable:: check_negative(:,:,:,:,:)
15912 logical,
allocatable:: both_negative(:,:,:,:,:)
15916 if (
present(negative_support))
then 15917 negative_support_on = negative_support
15919 negative_support_on = .true.
15925 answer_shape = shape(answer)
15926 check_shape = shape(check)
15928 consist_shape = answer_shape == check_shape
15930 if (.not. all(consist_shape))
then 15931 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 15933 write(*,*)
' shape of check is (', check_shape,
')' 15934 write(*,*)
' is INCORRECT' 15935 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 15941 allocate( mask_array( &
15942 & answer_shape(1), &
15944 & answer_shape(2), &
15946 & answer_shape(3), &
15948 & answer_shape(4), &
15950 & answer_shape(5) ) &
15954 & answer_shape(1), &
15956 & answer_shape(2), &
15958 & answer_shape(3), &
15960 & answer_shape(4), &
15962 & answer_shape(5) ) &
15965 allocate( judge_rev( &
15966 & answer_shape(1), &
15968 & answer_shape(2), &
15970 & answer_shape(3), &
15972 & answer_shape(4), &
15974 & answer_shape(5) ) &
15977 allocate( answer_negative( &
15978 & answer_shape(1), &
15980 & answer_shape(2), &
15982 & answer_shape(3), &
15984 & answer_shape(4), &
15986 & answer_shape(5) ) &
15989 allocate( check_negative( &
15990 & answer_shape(1), &
15992 & answer_shape(2), &
15994 & answer_shape(3), &
15996 & answer_shape(4), &
15998 & answer_shape(5) ) &
16001 allocate( both_negative( &
16002 & answer_shape(1), &
16004 & answer_shape(2), &
16006 & answer_shape(3), &
16008 & answer_shape(4), &
16010 & answer_shape(5) ) &
16013 answer_negative = answer < 0.0
16014 check_negative = check < 0.0
16015 both_negative = answer_negative .and. check_negative
16016 if (.not. negative_support_on) both_negative = .false.
16018 judge = answer > check
16019 where (both_negative) judge = .not. judge
16021 judge_rev = .not. judge
16022 err_flag = any(judge_rev)
16024 pos = maxloc(mask_array, judge_rev)
16050 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
16052 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
16054 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
16056 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
16058 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
16062 & trim(adjustl(pos_array(1))) //
',' // &
16064 & trim(adjustl(pos_array(2))) //
',' // &
16066 & trim(adjustl(pos_array(3))) //
',' // &
16068 & trim(adjustl(pos_array(4))) //
',' // &
16070 & trim(adjustl(pos_array(5))) //
')' 16072 if ( both_negative( &
16083 abs_mes =
'ABSOLUTE value of' 16090 deallocate(mask_array, judge, judge_rev)
16091 deallocate(answer_negative, check_negative, both_negative)
16097 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16099 write(*,*)
' ' // trim(abs_mes) // &
16100 &
' check' // trim(pos_str) //
' = ', wrong
16101 write(*,*)
' is NOT LESS THAN' 16102 write(*,*)
' ' // trim(abs_mes) // &
16103 &
' answer' // trim(pos_str) //
' = ', right
16107 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 16115 & message, answer, check, negative_support)
16119 character(*),
intent(in):: message
16120 real,
intent(in):: answer(:,:,:,:,:,:)
16121 real,
intent(in):: check(:,:,:,:,:,:)
16122 logical,
intent(in),
optional:: negative_support
16124 logical:: negative_support_on
16125 character(STRING):: pos_str
16126 character(TOKEN):: abs_mes
16127 real:: wrong, right
16129 integer:: answer_shape(6), check_shape(6), pos(6)
16130 logical:: consist_shape(6)
16131 character(TOKEN):: pos_array(6)
16132 integer,
allocatable:: mask_array(:,:,:,:,:,:)
16133 logical,
allocatable:: judge(:,:,:,:,:,:)
16134 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
16135 logical,
allocatable:: answer_negative(:,:,:,:,:,:)
16136 logical,
allocatable:: check_negative(:,:,:,:,:,:)
16137 logical,
allocatable:: both_negative(:,:,:,:,:,:)
16141 if (
present(negative_support))
then 16142 negative_support_on = negative_support
16144 negative_support_on = .true.
16150 answer_shape = shape(answer)
16151 check_shape = shape(check)
16153 consist_shape = answer_shape == check_shape
16155 if (.not. all(consist_shape))
then 16156 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16158 write(*,*)
' shape of check is (', check_shape,
')' 16159 write(*,*)
' is INCORRECT' 16160 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 16166 allocate( mask_array( &
16167 & answer_shape(1), &
16169 & answer_shape(2), &
16171 & answer_shape(3), &
16173 & answer_shape(4), &
16175 & answer_shape(5), &
16177 & answer_shape(6) ) &
16181 & answer_shape(1), &
16183 & answer_shape(2), &
16185 & answer_shape(3), &
16187 & answer_shape(4), &
16189 & answer_shape(5), &
16191 & answer_shape(6) ) &
16194 allocate( judge_rev( &
16195 & answer_shape(1), &
16197 & answer_shape(2), &
16199 & answer_shape(3), &
16201 & answer_shape(4), &
16203 & answer_shape(5), &
16205 & answer_shape(6) ) &
16208 allocate( answer_negative( &
16209 & answer_shape(1), &
16211 & answer_shape(2), &
16213 & answer_shape(3), &
16215 & answer_shape(4), &
16217 & answer_shape(5), &
16219 & answer_shape(6) ) &
16222 allocate( check_negative( &
16223 & answer_shape(1), &
16225 & answer_shape(2), &
16227 & answer_shape(3), &
16229 & answer_shape(4), &
16231 & answer_shape(5), &
16233 & answer_shape(6) ) &
16236 allocate( both_negative( &
16237 & answer_shape(1), &
16239 & answer_shape(2), &
16241 & answer_shape(3), &
16243 & answer_shape(4), &
16245 & answer_shape(5), &
16247 & answer_shape(6) ) &
16250 answer_negative = answer < 0.0
16251 check_negative = check < 0.0
16252 both_negative = answer_negative .and. check_negative
16253 if (.not. negative_support_on) both_negative = .false.
16255 judge = answer > check
16256 where (both_negative) judge = .not. judge
16258 judge_rev = .not. judge
16259 err_flag = any(judge_rev)
16261 pos = maxloc(mask_array, judge_rev)
16291 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
16293 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
16295 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
16297 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
16299 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
16301 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
16305 & trim(adjustl(pos_array(1))) //
',' // &
16307 & trim(adjustl(pos_array(2))) //
',' // &
16309 & trim(adjustl(pos_array(3))) //
',' // &
16311 & trim(adjustl(pos_array(4))) //
',' // &
16313 & trim(adjustl(pos_array(5))) //
',' // &
16315 & trim(adjustl(pos_array(6))) //
')' 16317 if ( both_negative( &
16330 abs_mes =
'ABSOLUTE value of' 16337 deallocate(mask_array, judge, judge_rev)
16338 deallocate(answer_negative, check_negative, both_negative)
16344 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16346 write(*,*)
' ' // trim(abs_mes) // &
16347 &
' check' // trim(pos_str) //
' = ', wrong
16348 write(*,*)
' is NOT LESS THAN' 16349 write(*,*)
' ' // trim(abs_mes) // &
16350 &
' answer' // trim(pos_str) //
' = ', right
16354 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 16362 & message, answer, check, negative_support)
16366 character(*),
intent(in):: message
16367 real,
intent(in):: answer(:,:,:,:,:,:,:)
16368 real,
intent(in):: check(:,:,:,:,:,:,:)
16369 logical,
intent(in),
optional:: negative_support
16371 logical:: negative_support_on
16372 character(STRING):: pos_str
16373 character(TOKEN):: abs_mes
16374 real:: wrong, right
16376 integer:: answer_shape(7), check_shape(7), pos(7)
16377 logical:: consist_shape(7)
16378 character(TOKEN):: pos_array(7)
16379 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
16380 logical,
allocatable:: judge(:,:,:,:,:,:,:)
16381 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
16382 logical,
allocatable:: answer_negative(:,:,:,:,:,:,:)
16383 logical,
allocatable:: check_negative(:,:,:,:,:,:,:)
16384 logical,
allocatable:: both_negative(:,:,:,:,:,:,:)
16388 if (
present(negative_support))
then 16389 negative_support_on = negative_support
16391 negative_support_on = .true.
16397 answer_shape = shape(answer)
16398 check_shape = shape(check)
16400 consist_shape = answer_shape == check_shape
16402 if (.not. all(consist_shape))
then 16403 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16405 write(*,*)
' shape of check is (', check_shape,
')' 16406 write(*,*)
' is INCORRECT' 16407 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 16413 allocate( mask_array( &
16414 & answer_shape(1), &
16416 & answer_shape(2), &
16418 & answer_shape(3), &
16420 & answer_shape(4), &
16422 & answer_shape(5), &
16424 & answer_shape(6), &
16426 & answer_shape(7) ) &
16430 & answer_shape(1), &
16432 & answer_shape(2), &
16434 & answer_shape(3), &
16436 & answer_shape(4), &
16438 & answer_shape(5), &
16440 & answer_shape(6), &
16442 & answer_shape(7) ) &
16445 allocate( judge_rev( &
16446 & answer_shape(1), &
16448 & answer_shape(2), &
16450 & answer_shape(3), &
16452 & answer_shape(4), &
16454 & answer_shape(5), &
16456 & answer_shape(6), &
16458 & answer_shape(7) ) &
16461 allocate( answer_negative( &
16462 & answer_shape(1), &
16464 & answer_shape(2), &
16466 & answer_shape(3), &
16468 & answer_shape(4), &
16470 & answer_shape(5), &
16472 & answer_shape(6), &
16474 & answer_shape(7) ) &
16477 allocate( check_negative( &
16478 & answer_shape(1), &
16480 & answer_shape(2), &
16482 & answer_shape(3), &
16484 & answer_shape(4), &
16486 & answer_shape(5), &
16488 & answer_shape(6), &
16490 & answer_shape(7) ) &
16493 allocate( both_negative( &
16494 & answer_shape(1), &
16496 & answer_shape(2), &
16498 & answer_shape(3), &
16500 & answer_shape(4), &
16502 & answer_shape(5), &
16504 & answer_shape(6), &
16506 & answer_shape(7) ) &
16509 answer_negative = answer < 0.0
16510 check_negative = check < 0.0
16511 both_negative = answer_negative .and. check_negative
16512 if (.not. negative_support_on) both_negative = .false.
16514 judge = answer > check
16515 where (both_negative) judge = .not. judge
16517 judge_rev = .not. judge
16518 err_flag = any(judge_rev)
16520 pos = maxloc(mask_array, judge_rev)
16554 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
16556 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
16558 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
16560 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
16562 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
16564 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
16566 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
16570 & trim(adjustl(pos_array(1))) //
',' // &
16572 & trim(adjustl(pos_array(2))) //
',' // &
16574 & trim(adjustl(pos_array(3))) //
',' // &
16576 & trim(adjustl(pos_array(4))) //
',' // &
16578 & trim(adjustl(pos_array(5))) //
',' // &
16580 & trim(adjustl(pos_array(6))) //
',' // &
16582 & trim(adjustl(pos_array(7))) //
')' 16584 if ( both_negative( &
16599 abs_mes =
'ABSOLUTE value of' 16606 deallocate(mask_array, judge, judge_rev)
16607 deallocate(answer_negative, check_negative, both_negative)
16613 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16615 write(*,*)
' ' // trim(abs_mes) // &
16616 &
' check' // trim(pos_str) //
' = ', wrong
16617 write(*,*)
' is NOT LESS THAN' 16618 write(*,*)
' ' // trim(abs_mes) // &
16619 &
' answer' // trim(pos_str) //
' = ', right
16623 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 16631 & message, answer, check, negative_support)
16635 character(*),
intent(in):: message
16636 real(DP),
intent(in):: answer
16637 real(DP),
intent(in):: check
16638 logical,
intent(in),
optional:: negative_support
16640 logical:: negative_support_on
16641 character(STRING):: pos_str
16642 character(TOKEN):: abs_mes
16643 real(DP):: wrong, right
16648 if (
present(negative_support))
then 16649 negative_support_on = negative_support
16651 negative_support_on = .true.
16659 err_flag = .not. answer > check
16662 if ( answer < 0.0_dp &
16663 & .and. check < 0.0_dp &
16664 & .and. negative_support_on )
then 16666 err_flag = .not. err_flag
16667 abs_mes =
'ABSOLUTE value of' 16678 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16680 write(*,*)
' ' // trim(abs_mes) // &
16681 &
' check' // trim(pos_str) //
' = ', wrong
16682 write(*,*)
' is NOT LESS THAN' 16683 write(*,*)
' ' // trim(abs_mes) // &
16684 &
' answer' // trim(pos_str) //
' = ', right
16688 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 16696 & message, answer, check, negative_support)
16700 character(*),
intent(in):: message
16701 real(DP),
intent(in):: answer(:)
16702 real(DP),
intent(in):: check(:)
16703 logical,
intent(in),
optional:: negative_support
16705 logical:: negative_support_on
16706 character(STRING):: pos_str
16707 character(TOKEN):: abs_mes
16708 real(DP):: wrong, right
16710 integer:: answer_shape(1), check_shape(1), pos(1)
16711 logical:: consist_shape(1)
16712 character(TOKEN):: pos_array(1)
16713 integer,
allocatable:: mask_array(:)
16714 logical,
allocatable:: judge(:)
16715 logical,
allocatable:: judge_rev(:)
16716 logical,
allocatable:: answer_negative(:)
16717 logical,
allocatable:: check_negative(:)
16718 logical,
allocatable:: both_negative(:)
16722 if (
present(negative_support))
then 16723 negative_support_on = negative_support
16725 negative_support_on = .true.
16731 answer_shape = shape(answer)
16732 check_shape = shape(check)
16734 consist_shape = answer_shape == check_shape
16736 if (.not. all(consist_shape))
then 16737 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16739 write(*,*)
' shape of check is (', check_shape,
')' 16740 write(*,*)
' is INCORRECT' 16741 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 16747 allocate( mask_array( &
16749 & answer_shape(1) ) &
16754 & answer_shape(1) ) &
16757 allocate( judge_rev( &
16759 & answer_shape(1) ) &
16762 allocate( answer_negative( &
16764 & answer_shape(1) ) &
16767 allocate( check_negative( &
16769 & answer_shape(1) ) &
16772 allocate( both_negative( &
16774 & answer_shape(1) ) &
16777 answer_negative = answer < 0.0_dp
16778 check_negative = check < 0.0_dp
16779 both_negative = answer_negative .and. check_negative
16780 if (.not. negative_support_on) both_negative = .false.
16782 judge = answer > check
16783 where (both_negative) judge = .not. judge
16785 judge_rev = .not. judge
16786 err_flag = any(judge_rev)
16788 pos = maxloc(mask_array, judge_rev)
16800 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
16805 & trim(adjustl(pos_array(1))) //
')' 16807 if ( both_negative( &
16811 abs_mes =
'ABSOLUTE value of' 16818 deallocate(mask_array, judge, judge_rev)
16819 deallocate(answer_negative, check_negative, both_negative)
16825 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16827 write(*,*)
' ' // trim(abs_mes) // &
16828 &
' check' // trim(pos_str) //
' = ', wrong
16829 write(*,*)
' is NOT LESS THAN' 16830 write(*,*)
' ' // trim(abs_mes) // &
16831 &
' answer' // trim(pos_str) //
' = ', right
16835 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 16843 & message, answer, check, negative_support)
16847 character(*),
intent(in):: message
16848 real(DP),
intent(in):: answer(:,:)
16849 real(DP),
intent(in):: check(:,:)
16850 logical,
intent(in),
optional:: negative_support
16852 logical:: negative_support_on
16853 character(STRING):: pos_str
16854 character(TOKEN):: abs_mes
16855 real(DP):: wrong, right
16857 integer:: answer_shape(2), check_shape(2), pos(2)
16858 logical:: consist_shape(2)
16859 character(TOKEN):: pos_array(2)
16860 integer,
allocatable:: mask_array(:,:)
16861 logical,
allocatable:: judge(:,:)
16862 logical,
allocatable:: judge_rev(:,:)
16863 logical,
allocatable:: answer_negative(:,:)
16864 logical,
allocatable:: check_negative(:,:)
16865 logical,
allocatable:: both_negative(:,:)
16869 if (
present(negative_support))
then 16870 negative_support_on = negative_support
16872 negative_support_on = .true.
16878 answer_shape = shape(answer)
16879 check_shape = shape(check)
16881 consist_shape = answer_shape == check_shape
16883 if (.not. all(consist_shape))
then 16884 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16886 write(*,*)
' shape of check is (', check_shape,
')' 16887 write(*,*)
' is INCORRECT' 16888 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 16894 allocate( mask_array( &
16895 & answer_shape(1), &
16897 & answer_shape(2) ) &
16901 & answer_shape(1), &
16903 & answer_shape(2) ) &
16906 allocate( judge_rev( &
16907 & answer_shape(1), &
16909 & answer_shape(2) ) &
16912 allocate( answer_negative( &
16913 & answer_shape(1), &
16915 & answer_shape(2) ) &
16918 allocate( check_negative( &
16919 & answer_shape(1), &
16921 & answer_shape(2) ) &
16924 allocate( both_negative( &
16925 & answer_shape(1), &
16927 & answer_shape(2) ) &
16930 answer_negative = answer < 0.0_dp
16931 check_negative = check < 0.0_dp
16932 both_negative = answer_negative .and. check_negative
16933 if (.not. negative_support_on) both_negative = .false.
16935 judge = answer > check
16936 where (both_negative) judge = .not. judge
16938 judge_rev = .not. judge
16939 err_flag = any(judge_rev)
16941 pos = maxloc(mask_array, judge_rev)
16955 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
16957 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
16961 & trim(adjustl(pos_array(1))) //
',' // &
16963 & trim(adjustl(pos_array(2))) //
')' 16965 if ( both_negative( &
16970 abs_mes =
'ABSOLUTE value of' 16977 deallocate(mask_array, judge, judge_rev)
16978 deallocate(answer_negative, check_negative, both_negative)
16984 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 16986 write(*,*)
' ' // trim(abs_mes) // &
16987 &
' check' // trim(pos_str) //
' = ', wrong
16988 write(*,*)
' is NOT LESS THAN' 16989 write(*,*)
' ' // trim(abs_mes) // &
16990 &
' answer' // trim(pos_str) //
' = ', right
16994 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 17002 & message, answer, check, negative_support)
17006 character(*),
intent(in):: message
17007 real(DP),
intent(in):: answer(:,:,:)
17008 real(DP),
intent(in):: check(:,:,:)
17009 logical,
intent(in),
optional:: negative_support
17011 logical:: negative_support_on
17012 character(STRING):: pos_str
17013 character(TOKEN):: abs_mes
17014 real(DP):: wrong, right
17016 integer:: answer_shape(3), check_shape(3), pos(3)
17017 logical:: consist_shape(3)
17018 character(TOKEN):: pos_array(3)
17019 integer,
allocatable:: mask_array(:,:,:)
17020 logical,
allocatable:: judge(:,:,:)
17021 logical,
allocatable:: judge_rev(:,:,:)
17022 logical,
allocatable:: answer_negative(:,:,:)
17023 logical,
allocatable:: check_negative(:,:,:)
17024 logical,
allocatable:: both_negative(:,:,:)
17028 if (
present(negative_support))
then 17029 negative_support_on = negative_support
17031 negative_support_on = .true.
17037 answer_shape = shape(answer)
17038 check_shape = shape(check)
17040 consist_shape = answer_shape == check_shape
17042 if (.not. all(consist_shape))
then 17043 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17045 write(*,*)
' shape of check is (', check_shape,
')' 17046 write(*,*)
' is INCORRECT' 17047 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 17053 allocate( mask_array( &
17054 & answer_shape(1), &
17056 & answer_shape(2), &
17058 & answer_shape(3) ) &
17062 & answer_shape(1), &
17064 & answer_shape(2), &
17066 & answer_shape(3) ) &
17069 allocate( judge_rev( &
17070 & answer_shape(1), &
17072 & answer_shape(2), &
17074 & answer_shape(3) ) &
17077 allocate( answer_negative( &
17078 & answer_shape(1), &
17080 & answer_shape(2), &
17082 & answer_shape(3) ) &
17085 allocate( check_negative( &
17086 & answer_shape(1), &
17088 & answer_shape(2), &
17090 & answer_shape(3) ) &
17093 allocate( both_negative( &
17094 & answer_shape(1), &
17096 & answer_shape(2), &
17098 & answer_shape(3) ) &
17101 answer_negative = answer < 0.0_dp
17102 check_negative = check < 0.0_dp
17103 both_negative = answer_negative .and. check_negative
17104 if (.not. negative_support_on) both_negative = .false.
17106 judge = answer > check
17107 where (both_negative) judge = .not. judge
17109 judge_rev = .not. judge
17110 err_flag = any(judge_rev)
17112 pos = maxloc(mask_array, judge_rev)
17130 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
17132 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
17134 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
17138 & trim(adjustl(pos_array(1))) //
',' // &
17140 & trim(adjustl(pos_array(2))) //
',' // &
17142 & trim(adjustl(pos_array(3))) //
')' 17144 if ( both_negative( &
17151 abs_mes =
'ABSOLUTE value of' 17158 deallocate(mask_array, judge, judge_rev)
17159 deallocate(answer_negative, check_negative, both_negative)
17165 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17167 write(*,*)
' ' // trim(abs_mes) // &
17168 &
' check' // trim(pos_str) //
' = ', wrong
17169 write(*,*)
' is NOT LESS THAN' 17170 write(*,*)
' ' // trim(abs_mes) // &
17171 &
' answer' // trim(pos_str) //
' = ', right
17175 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 17183 & message, answer, check, negative_support)
17187 character(*),
intent(in):: message
17188 real(DP),
intent(in):: answer(:,:,:,:)
17189 real(DP),
intent(in):: check(:,:,:,:)
17190 logical,
intent(in),
optional:: negative_support
17192 logical:: negative_support_on
17193 character(STRING):: pos_str
17194 character(TOKEN):: abs_mes
17195 real(DP):: wrong, right
17197 integer:: answer_shape(4), check_shape(4), pos(4)
17198 logical:: consist_shape(4)
17199 character(TOKEN):: pos_array(4)
17200 integer,
allocatable:: mask_array(:,:,:,:)
17201 logical,
allocatable:: judge(:,:,:,:)
17202 logical,
allocatable:: judge_rev(:,:,:,:)
17203 logical,
allocatable:: answer_negative(:,:,:,:)
17204 logical,
allocatable:: check_negative(:,:,:,:)
17205 logical,
allocatable:: both_negative(:,:,:,:)
17209 if (
present(negative_support))
then 17210 negative_support_on = negative_support
17212 negative_support_on = .true.
17218 answer_shape = shape(answer)
17219 check_shape = shape(check)
17221 consist_shape = answer_shape == check_shape
17223 if (.not. all(consist_shape))
then 17224 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17226 write(*,*)
' shape of check is (', check_shape,
')' 17227 write(*,*)
' is INCORRECT' 17228 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 17234 allocate( mask_array( &
17235 & answer_shape(1), &
17237 & answer_shape(2), &
17239 & answer_shape(3), &
17241 & answer_shape(4) ) &
17245 & answer_shape(1), &
17247 & answer_shape(2), &
17249 & answer_shape(3), &
17251 & answer_shape(4) ) &
17254 allocate( judge_rev( &
17255 & answer_shape(1), &
17257 & answer_shape(2), &
17259 & answer_shape(3), &
17261 & answer_shape(4) ) &
17264 allocate( answer_negative( &
17265 & answer_shape(1), &
17267 & answer_shape(2), &
17269 & answer_shape(3), &
17271 & answer_shape(4) ) &
17274 allocate( check_negative( &
17275 & answer_shape(1), &
17277 & answer_shape(2), &
17279 & answer_shape(3), &
17281 & answer_shape(4) ) &
17284 allocate( both_negative( &
17285 & answer_shape(1), &
17287 & answer_shape(2), &
17289 & answer_shape(3), &
17291 & answer_shape(4) ) &
17294 answer_negative = answer < 0.0_dp
17295 check_negative = check < 0.0_dp
17296 both_negative = answer_negative .and. check_negative
17297 if (.not. negative_support_on) both_negative = .false.
17299 judge = answer > check
17300 where (both_negative) judge = .not. judge
17302 judge_rev = .not. judge
17303 err_flag = any(judge_rev)
17305 pos = maxloc(mask_array, judge_rev)
17327 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
17329 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
17331 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
17333 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
17337 & trim(adjustl(pos_array(1))) //
',' // &
17339 & trim(adjustl(pos_array(2))) //
',' // &
17341 & trim(adjustl(pos_array(3))) //
',' // &
17343 & trim(adjustl(pos_array(4))) //
')' 17345 if ( both_negative( &
17354 abs_mes =
'ABSOLUTE value of' 17361 deallocate(mask_array, judge, judge_rev)
17362 deallocate(answer_negative, check_negative, both_negative)
17368 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17370 write(*,*)
' ' // trim(abs_mes) // &
17371 &
' check' // trim(pos_str) //
' = ', wrong
17372 write(*,*)
' is NOT LESS THAN' 17373 write(*,*)
' ' // trim(abs_mes) // &
17374 &
' answer' // trim(pos_str) //
' = ', right
17378 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 17386 & message, answer, check, negative_support)
17390 character(*),
intent(in):: message
17391 real(DP),
intent(in):: answer(:,:,:,:,:)
17392 real(DP),
intent(in):: check(:,:,:,:,:)
17393 logical,
intent(in),
optional:: negative_support
17395 logical:: negative_support_on
17396 character(STRING):: pos_str
17397 character(TOKEN):: abs_mes
17398 real(DP):: wrong, right
17400 integer:: answer_shape(5), check_shape(5), pos(5)
17401 logical:: consist_shape(5)
17402 character(TOKEN):: pos_array(5)
17403 integer,
allocatable:: mask_array(:,:,:,:,:)
17404 logical,
allocatable:: judge(:,:,:,:,:)
17405 logical,
allocatable:: judge_rev(:,:,:,:,:)
17406 logical,
allocatable:: answer_negative(:,:,:,:,:)
17407 logical,
allocatable:: check_negative(:,:,:,:,:)
17408 logical,
allocatable:: both_negative(:,:,:,:,:)
17412 if (
present(negative_support))
then 17413 negative_support_on = negative_support
17415 negative_support_on = .true.
17421 answer_shape = shape(answer)
17422 check_shape = shape(check)
17424 consist_shape = answer_shape == check_shape
17426 if (.not. all(consist_shape))
then 17427 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17429 write(*,*)
' shape of check is (', check_shape,
')' 17430 write(*,*)
' is INCORRECT' 17431 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 17437 allocate( mask_array( &
17438 & answer_shape(1), &
17440 & answer_shape(2), &
17442 & answer_shape(3), &
17444 & answer_shape(4), &
17446 & answer_shape(5) ) &
17450 & answer_shape(1), &
17452 & answer_shape(2), &
17454 & answer_shape(3), &
17456 & answer_shape(4), &
17458 & answer_shape(5) ) &
17461 allocate( judge_rev( &
17462 & answer_shape(1), &
17464 & answer_shape(2), &
17466 & answer_shape(3), &
17468 & answer_shape(4), &
17470 & answer_shape(5) ) &
17473 allocate( answer_negative( &
17474 & answer_shape(1), &
17476 & answer_shape(2), &
17478 & answer_shape(3), &
17480 & answer_shape(4), &
17482 & answer_shape(5) ) &
17485 allocate( check_negative( &
17486 & answer_shape(1), &
17488 & answer_shape(2), &
17490 & answer_shape(3), &
17492 & answer_shape(4), &
17494 & answer_shape(5) ) &
17497 allocate( both_negative( &
17498 & answer_shape(1), &
17500 & answer_shape(2), &
17502 & answer_shape(3), &
17504 & answer_shape(4), &
17506 & answer_shape(5) ) &
17509 answer_negative = answer < 0.0_dp
17510 check_negative = check < 0.0_dp
17511 both_negative = answer_negative .and. check_negative
17512 if (.not. negative_support_on) both_negative = .false.
17514 judge = answer > check
17515 where (both_negative) judge = .not. judge
17517 judge_rev = .not. judge
17518 err_flag = any(judge_rev)
17520 pos = maxloc(mask_array, judge_rev)
17546 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
17548 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
17550 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
17552 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
17554 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
17558 & trim(adjustl(pos_array(1))) //
',' // &
17560 & trim(adjustl(pos_array(2))) //
',' // &
17562 & trim(adjustl(pos_array(3))) //
',' // &
17564 & trim(adjustl(pos_array(4))) //
',' // &
17566 & trim(adjustl(pos_array(5))) //
')' 17568 if ( both_negative( &
17579 abs_mes =
'ABSOLUTE value of' 17586 deallocate(mask_array, judge, judge_rev)
17587 deallocate(answer_negative, check_negative, both_negative)
17593 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17595 write(*,*)
' ' // trim(abs_mes) // &
17596 &
' check' // trim(pos_str) //
' = ', wrong
17597 write(*,*)
' is NOT LESS THAN' 17598 write(*,*)
' ' // trim(abs_mes) // &
17599 &
' answer' // trim(pos_str) //
' = ', right
17603 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 17611 & message, answer, check, negative_support)
17615 character(*),
intent(in):: message
17616 real(DP),
intent(in):: answer(:,:,:,:,:,:)
17617 real(DP),
intent(in):: check(:,:,:,:,:,:)
17618 logical,
intent(in),
optional:: negative_support
17620 logical:: negative_support_on
17621 character(STRING):: pos_str
17622 character(TOKEN):: abs_mes
17623 real(DP):: wrong, right
17625 integer:: answer_shape(6), check_shape(6), pos(6)
17626 logical:: consist_shape(6)
17627 character(TOKEN):: pos_array(6)
17628 integer,
allocatable:: mask_array(:,:,:,:,:,:)
17629 logical,
allocatable:: judge(:,:,:,:,:,:)
17630 logical,
allocatable:: judge_rev(:,:,:,:,:,:)
17631 logical,
allocatable:: answer_negative(:,:,:,:,:,:)
17632 logical,
allocatable:: check_negative(:,:,:,:,:,:)
17633 logical,
allocatable:: both_negative(:,:,:,:,:,:)
17637 if (
present(negative_support))
then 17638 negative_support_on = negative_support
17640 negative_support_on = .true.
17646 answer_shape = shape(answer)
17647 check_shape = shape(check)
17649 consist_shape = answer_shape == check_shape
17651 if (.not. all(consist_shape))
then 17652 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17654 write(*,*)
' shape of check is (', check_shape,
')' 17655 write(*,*)
' is INCORRECT' 17656 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 17662 allocate( mask_array( &
17663 & answer_shape(1), &
17665 & answer_shape(2), &
17667 & answer_shape(3), &
17669 & answer_shape(4), &
17671 & answer_shape(5), &
17673 & answer_shape(6) ) &
17677 & answer_shape(1), &
17679 & answer_shape(2), &
17681 & answer_shape(3), &
17683 & answer_shape(4), &
17685 & answer_shape(5), &
17687 & answer_shape(6) ) &
17690 allocate( judge_rev( &
17691 & answer_shape(1), &
17693 & answer_shape(2), &
17695 & answer_shape(3), &
17697 & answer_shape(4), &
17699 & answer_shape(5), &
17701 & answer_shape(6) ) &
17704 allocate( answer_negative( &
17705 & answer_shape(1), &
17707 & answer_shape(2), &
17709 & answer_shape(3), &
17711 & answer_shape(4), &
17713 & answer_shape(5), &
17715 & answer_shape(6) ) &
17718 allocate( check_negative( &
17719 & answer_shape(1), &
17721 & answer_shape(2), &
17723 & answer_shape(3), &
17725 & answer_shape(4), &
17727 & answer_shape(5), &
17729 & answer_shape(6) ) &
17732 allocate( both_negative( &
17733 & answer_shape(1), &
17735 & answer_shape(2), &
17737 & answer_shape(3), &
17739 & answer_shape(4), &
17741 & answer_shape(5), &
17743 & answer_shape(6) ) &
17746 answer_negative = answer < 0.0_dp
17747 check_negative = check < 0.0_dp
17748 both_negative = answer_negative .and. check_negative
17749 if (.not. negative_support_on) both_negative = .false.
17751 judge = answer > check
17752 where (both_negative) judge = .not. judge
17754 judge_rev = .not. judge
17755 err_flag = any(judge_rev)
17757 pos = maxloc(mask_array, judge_rev)
17787 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
17789 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
17791 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
17793 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
17795 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
17797 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
17801 & trim(adjustl(pos_array(1))) //
',' // &
17803 & trim(adjustl(pos_array(2))) //
',' // &
17805 & trim(adjustl(pos_array(3))) //
',' // &
17807 & trim(adjustl(pos_array(4))) //
',' // &
17809 & trim(adjustl(pos_array(5))) //
',' // &
17811 & trim(adjustl(pos_array(6))) //
')' 17813 if ( both_negative( &
17826 abs_mes =
'ABSOLUTE value of' 17833 deallocate(mask_array, judge, judge_rev)
17834 deallocate(answer_negative, check_negative, both_negative)
17840 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17842 write(*,*)
' ' // trim(abs_mes) // &
17843 &
' check' // trim(pos_str) //
' = ', wrong
17844 write(*,*)
' is NOT LESS THAN' 17845 write(*,*)
' ' // trim(abs_mes) // &
17846 &
' answer' // trim(pos_str) //
' = ', right
17850 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK' 17858 & message, answer, check, negative_support)
17862 character(*),
intent(in):: message
17863 real(DP),
intent(in):: answer(:,:,:,:,:,:,:)
17864 real(DP),
intent(in):: check(:,:,:,:,:,:,:)
17865 logical,
intent(in),
optional:: negative_support
17867 logical:: negative_support_on
17868 character(STRING):: pos_str
17869 character(TOKEN):: abs_mes
17870 real(DP):: wrong, right
17872 integer:: answer_shape(7), check_shape(7), pos(7)
17873 logical:: consist_shape(7)
17874 character(TOKEN):: pos_array(7)
17875 integer,
allocatable:: mask_array(:,:,:,:,:,:,:)
17876 logical,
allocatable:: judge(:,:,:,:,:,:,:)
17877 logical,
allocatable:: judge_rev(:,:,:,:,:,:,:)
17878 logical,
allocatable:: answer_negative(:,:,:,:,:,:,:)
17879 logical,
allocatable:: check_negative(:,:,:,:,:,:,:)
17880 logical,
allocatable:: both_negative(:,:,:,:,:,:,:)
17884 if (
present(negative_support))
then 17885 negative_support_on = negative_support
17887 negative_support_on = .true.
17893 answer_shape = shape(answer)
17894 check_shape = shape(check)
17896 consist_shape = answer_shape == check_shape
17898 if (.not. all(consist_shape))
then 17899 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 17901 write(*,*)
' shape of check is (', check_shape,
')' 17902 write(*,*)
' is INCORRECT' 17903 write(*,*)
' Correct shape of answer is (', answer_shape,
')' 17909 allocate( mask_array( &
17910 & answer_shape(1), &
17912 & answer_shape(2), &
17914 & answer_shape(3), &
17916 & answer_shape(4), &
17918 & answer_shape(5), &
17920 & answer_shape(6), &
17922 & answer_shape(7) ) &
17926 & answer_shape(1), &
17928 & answer_shape(2), &
17930 & answer_shape(3), &
17932 & answer_shape(4), &
17934 & answer_shape(5), &
17936 & answer_shape(6), &
17938 & answer_shape(7) ) &
17941 allocate( judge_rev( &
17942 & answer_shape(1), &
17944 & answer_shape(2), &
17946 & answer_shape(3), &
17948 & answer_shape(4), &
17950 & answer_shape(5), &
17952 & answer_shape(6), &
17954 & answer_shape(7) ) &
17957 allocate( answer_negative( &
17958 & answer_shape(1), &
17960 & answer_shape(2), &
17962 & answer_shape(3), &
17964 & answer_shape(4), &
17966 & answer_shape(5), &
17968 & answer_shape(6), &
17970 & answer_shape(7) ) &
17973 allocate( check_negative( &
17974 & answer_shape(1), &
17976 & answer_shape(2), &
17978 & answer_shape(3), &
17980 & answer_shape(4), &
17982 & answer_shape(5), &
17984 & answer_shape(6), &
17986 & answer_shape(7) ) &
17989 allocate( both_negative( &
17990 & answer_shape(1), &
17992 & answer_shape(2), &
17994 & answer_shape(3), &
17996 & answer_shape(4), &
17998 & answer_shape(5), &
18000 & answer_shape(6), &
18002 & answer_shape(7) ) &
18005 answer_negative = answer < 0.0_dp
18006 check_negative = check < 0.0_dp
18007 both_negative = answer_negative .and. check_negative
18008 if (.not. negative_support_on) both_negative = .false.
18010 judge = answer > check
18011 where (both_negative) judge = .not. judge
18013 judge_rev = .not. judge
18014 err_flag = any(judge_rev)
18016 pos = maxloc(mask_array, judge_rev)
18050 write(unit=pos_array(1), fmt=
"(i20)") pos(1)
18052 write(unit=pos_array(2), fmt=
"(i20)") pos(2)
18054 write(unit=pos_array(3), fmt=
"(i20)") pos(3)
18056 write(unit=pos_array(4), fmt=
"(i20)") pos(4)
18058 write(unit=pos_array(5), fmt=
"(i20)") pos(5)
18060 write(unit=pos_array(6), fmt=
"(i20)") pos(6)
18062 write(unit=pos_array(7), fmt=
"(i20)") pos(7)
18066 & trim(adjustl(pos_array(1))) //
',' // &
18068 & trim(adjustl(pos_array(2))) //
',' // &
18070 & trim(adjustl(pos_array(3))) //
',' // &
18072 & trim(adjustl(pos_array(4))) //
',' // &
18074 & trim(adjustl(pos_array(5))) //
',' // &
18076 & trim(adjustl(pos_array(6))) //
',' // &
18078 & trim(adjustl(pos_array(7))) //
')' 18080 if ( both_negative( &
18095 abs_mes =
'ABSOLUTE value of' 18102 deallocate(mask_array, judge, judge_rev)
18103 deallocate(answer_negative, check_negative, both_negative)
18109 write(*,*)
' *** Error [AssertLT] *** Checking ' // trim(message) //
' FAILURE' 18111 write(*,*)
' ' // trim(abs_mes) // &
18112 &
' check' // trim(pos_str) //
' = ', wrong
18113 write(*,*)
' is NOT LESS THAN' 18114 write(*,*)
' ' // trim(abs_mes) // &
18115 &
' answer' // trim(pos_str) //
' = ', right
18119 write(*,*)
' *** MESSAGE [AssertLT] *** Checking ' // trim(message) //
' OK'
subroutine dctestassertgreaterthandouble1(message, answer, check, negative_support)
subroutine dctestassertequalint6(message, answer, check)
subroutine dctestassertgreaterthanreal0(message, answer, check, negative_support)
subroutine dctestassertequaldouble7digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertlessthanint1(message, answer, check, negative_support)
subroutine dctestassertequalint7(message, answer, check)
subroutine dctestassertequaldouble3(message, answer, check)
subroutine dctestassertlessthanint5(message, answer, check, negative_support)
subroutine dctestassertequaldouble7(message, answer, check)
subroutine dctestassertequalreal1(message, answer, check)
subroutine dctestassertequaldouble1digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequalchar1(message, answer, check)
subroutine dctestassertequallogical7(message, answer, check)
subroutine dctestassertequaldouble4(message, answer, check)
subroutine dctestassertequalchar4(message, answer, check)
subroutine dctestassertequallogical4(message, answer, check)
subroutine dctestassertequalreal3(message, answer, check)
subroutine dctestassertlessthanreal0(message, answer, check, negative_support)
subroutine dctestassertlessthandouble0(message, answer, check, negative_support)
subroutine dctestassertequalreal5digits(message, answer, check, significant_digits, ignore_digits)
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
subroutine dctestassertequalreal7(message, answer, check)
subroutine dctestassertgreaterthanint1(message, answer, check, negative_support)
subroutine dctestassertequaldouble0digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequalint2(message, answer, check)
subroutine dctestassertlessthanint7(message, answer, check, negative_support)
subroutine dctestassertequalchar5(message, answer, check)
subroutine dctestassertequalreal2digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertlessthandouble1(message, answer, check, negative_support)
subroutine dctestassertequallogical3(message, answer, check)
subroutine dctestassertequallogical0(message, answer, check)
subroutine dctestassertequalreal3digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequallogical1(message, answer, check)
subroutine dctestassertequalint1(message, answer, check)
subroutine dctestassertgreaterthanreal2(message, answer, check, negative_support)
subroutine dctestassertgreaterthanint6(message, answer, check, negative_support)
subroutine dctestassertgreaterthanreal7(message, answer, check, negative_support)
subroutine dctestassertequalreal5(message, answer, check)
subroutine dctestassertlessthanreal2(message, answer, check, negative_support)
subroutine dctestassertgreaterthandouble4(message, answer, check, negative_support)
subroutine dctestassertlessthanint4(message, answer, check, negative_support)
subroutine dctestassertequaldouble1(message, answer, check)
subroutine dctestassertlessthanint2(message, answer, check, negative_support)
subroutine dctestassertequaldouble2(message, answer, check)
subroutine dctestassertgreaterthanint3(message, answer, check, negative_support)
subroutine dctestassertgreaterthanint0(message, answer, check, negative_support)
subroutine dctestassertequallogical2(message, answer, check)
subroutine dctestassertequaldouble6(message, answer, check)
subroutine dctestassertgreaterthanint4(message, answer, check, negative_support)
subroutine dctestassertlessthandouble2(message, answer, check, negative_support)
subroutine dctestassertgreaterthandouble7(message, answer, check, negative_support)
subroutine dctestassertlessthanreal5(message, answer, check, negative_support)
subroutine dctestassertequaldouble2digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequalreal6(message, answer, check)
subroutine dctestassertequaldouble6digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequalint3(message, answer, check)
integer, parameter, public dp
倍精度実数型変数
subroutine dctestassertequalint0(message, answer, check)
subroutine dctestassertgreaterthanint2(message, answer, check, negative_support)
subroutine dctestassertequaldouble5(message, answer, check)
subroutine dctestassertequaldouble3digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequaldouble0(message, answer, check)
subroutine dctestassertequallogical5(message, answer, check)
subroutine dctestassertgreaterthandouble0(message, answer, check, negative_support)
subroutine dctestassertlessthanreal1(message, answer, check, negative_support)
subroutine dctestassertlessthandouble3(message, answer, check, negative_support)
subroutine dctestassertgreaterthanreal3(message, answer, check, negative_support)
subroutine dctestassertequalint4(message, answer, check)
subroutine dctestassertequaldouble4digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequalchar7(message, answer, check)
subroutine dctestassertgreaterthanreal4(message, answer, check, negative_support)
subroutine dctestassertlessthanreal4(message, answer, check, negative_support)
subroutine dctestassertgreaterthandouble3(message, answer, check, negative_support)
subroutine dctestassertlessthandouble7(message, answer, check, negative_support)
subroutine dctestassertequallogical6(message, answer, check)
subroutine dctestassertlessthanreal3(message, answer, check, negative_support)
subroutine dctestassertgreaterthanint7(message, answer, check, negative_support)
subroutine dctestassertlessthanint0(message, answer, check, negative_support)
subroutine dctestassertlessthandouble5(message, answer, check, negative_support)
subroutine dctestassertgreaterthanreal5(message, answer, check, negative_support)
subroutine dctestassertlessthandouble6(message, answer, check, negative_support)
subroutine dctestassertequalreal2(message, answer, check)
subroutine dctestassertequalreal4digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertlessthanreal7(message, answer, check, negative_support)
subroutine dctestassertgreaterthandouble2(message, answer, check, negative_support)
subroutine dctestassertgreaterthanreal6(message, answer, check, negative_support)
subroutine dctestassertequalreal6digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequaldouble5digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequalreal4(message, answer, check)
subroutine dctestassertgreaterthandouble6(message, answer, check, negative_support)
subroutine dctestassertlessthandouble4(message, answer, check, negative_support)
subroutine dctestassertequalchar3(message, answer, check)
subroutine dctestassertlessthanint3(message, answer, check, negative_support)
subroutine dctestassertlessthanreal6(message, answer, check, negative_support)
subroutine dctestassertequalint5(message, answer, check)
subroutine dctestassertequalreal1digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequalreal7digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertequalreal0(message, answer, check)
subroutine dctestassertequalreal0digits(message, answer, check, significant_digits, ignore_digits)
subroutine dctestassertgreaterthandouble5(message, answer, check, negative_support)
subroutine dctestassertequalchar2(message, answer, check)
subroutine dctestassertequalchar6(message, answer, check)
subroutine dctestassertgreaterthanreal1(message, answer, check, negative_support)
subroutine dctestassertgreaterthanint5(message, answer, check, negative_support)
subroutine dctestassertequalchar0(message, answer, check)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
subroutine dctestassertlessthanint6(message, answer, check, negative_support)