Lines Matching full:rank
44 // categories, a kind pattern, a rank pattern, and information about
45 // optionality and defaults. The kind and rank patterns are represented
49 // only if the dummy argument is Rank::reduceOperation,
57 // rank pattern.
59 // intrinsic functions that accept AnyType + Rank::anyOrAssumedRank,
60 // AnyType + Rank::arrayOrAssumedRank, or AnyType + Kind::addressable.
219 // The default rank pattern for dummy arguments and function results is
221 ENUM_CLASS(Rank,
227 array, // not scalar, rank is known and greater than zero
228 coarray, // rank is known and can be scalar; has nonzero corank
230 known, // rank is known and can be scalar
231 anyOrAssumedRank, // any rank, or assumed; assumed-type TYPE(*) allowed
232 arrayOrAssumedRank, // rank >= 1 or assumed; assumed-type TYPE(*) allowed
233 conformable, // scalar, or array of same rank & shape as "array" argument
235 dimReduced, // scalar if no DIM= argument, else rank(array)-1
236 dimRemovedOrScalar, // rank(array)-1 (less DIM) or scalar
237 scalarIfDim, // scalar if DIM= argument is present, else rank one array
238 locReduced, // vector(1:rank) if no DIM= argument, else rank(array)-1
239 rankPlus1, // rank(known)+1
240 shaped, // rank is length of SHAPE vector
260 Rank rank{Rank::elemental};
271 {IntType, KindCode::kindArg}, Rank::scalar, Optionality::optional,
277 {IntType, KindCode::kindArg}, Rank::scalar, Optionality::optional,
284 {IntType, KindCode::kindArg}, Rank::scalar, Optionality::optional,
287 {IntType, KindCode::dimArg}, Rank::scalar, Optionality::required,
290 {IntType, KindCode::dimArg}, Rank::scalar, Optionality::optional,
293 {IntType, KindCode::dimArg}, Rank::scalar, Optionality::missing,
296 Rank::conformable, Optionality::optional, common::Intent::In};
298 "team", TeamType, Rank::scalar, Optionality::optional, common::Intent::In};
305 Rank rank{Rank::elemental};
330 // Be advised, the default rank pattern is "elemental".
334 {"achar", {{"i", AnyInt, Rank::elementalOrBOZ}, DefaultingKIND}, KINDChar},
342 {"all", {{"mask", SameLogical, Rank::array}, OptionalDIM}, SameLogical,
343 Rank::dimReduced, IntrinsicClass::transformationalFunction},
344 {"allocated", {{"scalar", AnyData, Rank::scalar}}, DefaultLogical,
345 Rank::elemental, IntrinsicClass::inquiryFunction},
346 {"allocated", {{"array", AnyData, Rank::anyOrAssumedRank}}, DefaultLogical,
347 Rank::elemental, IntrinsicClass::inquiryFunction},
349 {"any", {{"mask", SameLogical, Rank::array}, OptionalDIM}, SameLogical,
350 Rank::dimReduced, IntrinsicClass::transformationalFunction},
355 {{"pointer", AnyPointer, Rank::anyOrAssumedRank, Optionality::required,
357 {"target", Addressable, Rank::anyOrAssumedRank,
360 DefaultLogical, Rank::elemental, IntrinsicClass::inquiryFunction},
375 {{"n1", AnyInt, Rank::scalar}, {"n2", AnyInt, Rank::scalar},
376 {"x", SameReal, Rank::scalar}},
377 SameReal, Rank::vector, IntrinsicClass::transformationalFunction},
382 {{"n1", AnyInt, Rank::scalar}, {"n2", AnyInt, Rank::scalar},
383 {"x", SameReal, Rank::scalar}},
384 SameReal, Rank::vector, IntrinsicClass::transformationalFunction},
386 {{"i", AnyIntOrUnsigned, Rank::elementalOrBOZ},
387 {"j", AnyIntOrUnsigned, Rank::elementalOrBOZ}},
390 {{"i", AnyIntOrUnsigned, Rank::elementalOrBOZ},
391 {"j", AnyIntOrUnsigned, Rank::elementalOrBOZ}},
394 {{"i", SameIntOrUnsigned, Rank::anyOrAssumedRank, Optionality::required,
396 SameInt, Rank::scalar, IntrinsicClass::inquiryFunction},
398 {{"i", AnyIntOrUnsigned, Rank::elementalOrBOZ},
399 {"j", AnyIntOrUnsigned, Rank::elementalOrBOZ}},
402 {{"i", AnyIntOrUnsigned, Rank::elementalOrBOZ},
403 {"j", AnyIntOrUnsigned, Rank::elementalOrBOZ}},
405 {"btest", {{"i", AnyIntOrUnsigned, Rank::elementalOrBOZ}, {"pos", AnyInt}},
408 {"char", {{"i", AnyInt, Rank::elementalOrBOZ}, DefaultingKIND}, KINDChar},
409 {"chdir", {{"name", DefaultChar, Rank::scalar, Optionality::required}},
413 {{"x", AnyIntUnsignedOrReal, Rank::elementalOrBOZ},
414 {"y", AnyIntUnsignedOrReal, Rank::elementalOrBOZ,
418 {"command_argument_count", {}, DefaultInt, Rank::scalar,
424 {"count", {{"mask", AnyLogical, Rank::array}, OptionalDIM, DefaultingKIND},
425 KINDInt, Rank::dimReduced, IntrinsicClass::transformationalFunction},
427 {{"array", SameType, Rank::array},
428 {"shift", AnyInt, Rank::dimRemovedOrScalar}, OptionalDIM},
429 SameType, Rank::conformable, IntrinsicClass::transformationalFunction},
430 {"dble", {{"a", AnyNumeric, Rank::elementalOrBOZ}}, DoublePrecision},
432 {{"x", AnyIntUnsignedOrReal, Rank::anyOrAssumedRank,
435 DefaultInt, Rank::scalar, IntrinsicClass::inquiryFunction},
439 {{"vector_a", AnyLogical, Rank::vector},
440 {"vector_b", AnyLogical, Rank::vector}},
441 ResultLogical, Rank::scalar, IntrinsicClass::transformationalFunction},
443 {{"vector_a", AnyComplex, Rank::vector},
444 {"vector_b", AnyNumeric, Rank::vector}},
445 ResultNumeric, Rank::scalar, // conjugates vector_a
448 {{"vector_a", AnyIntUnsignedOrReal, Rank::vector},
449 {"vector_b", AnyNumeric, Rank::vector}},
450 ResultNumeric, Rank::scalar, IntrinsicClass::transformationalFunction},
454 {"j", SameIntOrUnsigned, Rank::elementalOrBOZ}, {"shift", AnyInt}},
460 {"j", SameIntOrUnsigned, Rank::elementalOrBOZ}, {"shift", AnyInt}},
465 {{"array", SameType, Rank::array},
466 {"shift", AnyInt, Rank::dimRemovedOrScalar},
468 {"boundary", SameType, Rank::dimRemovedOrScalar}, OptionalDIM},
469 SameType, Rank::conformable, IntrinsicClass::transformationalFunction},
471 {{"array", SameIntrinsic, Rank::array},
472 {"shift", AnyInt, Rank::dimRemovedOrScalar},
473 {"boundary", SameIntrinsic, Rank::dimRemovedOrScalar,
476 SameIntrinsic, Rank::conformable,
479 {{"x", SameReal, Rank::anyOrAssumedRank, Optionality::required,
481 SameReal, Rank::scalar, IntrinsicClass::inquiryFunction},
486 {{"values", TypePattern{RealType, KindCode::exactKind, 4}, Rank::vector,
494 {{"a", ExtensibleDerived, Rank::anyOrAssumedRank, Optionality::required,
496 {"mold", ExtensibleDerived, Rank::anyOrAssumedRank,
499 DefaultLogical, Rank::scalar, IntrinsicClass::inquiryFunction},
500 {"failed_images", {OptionalTEAM, SizeDefaultKIND}, KINDInt, Rank::vector,
503 {{"array", AnyNumeric, Rank::array},
504 {"value", AnyNumeric, Rank::scalar}, RequiredDIM, OptionalMASK,
506 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
507 KINDInt, Rank::locReduced, IntrinsicClass::transformationalFunction},
509 {{"array", AnyNumeric, Rank::array},
510 {"value", AnyNumeric, Rank::scalar}, MissingDIM, OptionalMASK,
512 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
513 KINDInt, Rank::vector, IntrinsicClass::transformationalFunction},
515 {{"array", SameCharNoLen, Rank::array},
516 {"value", SameCharNoLen, Rank::scalar}, RequiredDIM, OptionalMASK,
518 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
519 KINDInt, Rank::locReduced, IntrinsicClass::transformationalFunction},
521 {{"array", SameCharNoLen, Rank::array},
522 {"value", SameCharNoLen, Rank::scalar}, MissingDIM, OptionalMASK,
524 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
525 KINDInt, Rank::vector, IntrinsicClass::transformationalFunction},
527 {{"array", AnyLogical, Rank::array},
528 {"value", AnyLogical, Rank::scalar}, RequiredDIM, OptionalMASK,
530 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
531 KINDInt, Rank::locReduced, IntrinsicClass::transformationalFunction},
533 {{"array", AnyLogical, Rank::array},
534 {"value", AnyLogical, Rank::scalar}, MissingDIM, OptionalMASK,
536 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
537 KINDInt, Rank::vector, IntrinsicClass::transformationalFunction},
541 {"get_team", {{"level", DefaultInt, Rank::scalar, Optionality::optional}},
542 TeamType, Rank::scalar, IntrinsicClass::transformationalFunction},
544 {{"c", DefaultChar, Rank::scalar, Optionality::required,
551 {{"x", SameIntUnsignedOrReal, Rank::anyOrAssumedRank,
554 SameIntUnsignedOrReal, Rank::scalar, IntrinsicClass::inquiryFunction},
558 {{"array", SameIntOrUnsigned, Rank::array}, RequiredDIM, OptionalMASK},
559 SameIntOrUnsigned, Rank::dimReduced,
562 {{"array", SameIntOrUnsigned, Rank::array}, MissingDIM, OptionalMASK},
563 SameIntOrUnsigned, Rank::scalar,
566 {{"array", SameIntOrUnsigned, Rank::array}, RequiredDIM, OptionalMASK},
567 SameIntOrUnsigned, Rank::dimReduced,
570 {{"array", SameIntOrUnsigned, Rank::array}, MissingDIM, OptionalMASK},
571 SameIntOrUnsigned, Rank::scalar,
574 {{"array", SameIntOrUnsigned, Rank::array}, RequiredDIM, OptionalMASK},
575 SameIntOrUnsigned, Rank::dimReduced,
578 {{"array", SameIntOrUnsigned, Rank::array}, MissingDIM, OptionalMASK},
579 SameIntOrUnsigned, Rank::scalar,
581 {"iand", {{"i", OperandInt}, {"j", OperandInt, Rank::elementalOrBOZ}},
584 {{"i", OperandUnsigned}, {"j", OperandUnsigned, Rank::elementalOrBOZ}},
592 {"ieor", {{"i", OperandInt}, {"j", OperandInt, Rank::elementalOrBOZ}},
595 {{"i", OperandUnsigned}, {"j", OperandUnsigned, Rank::elementalOrBOZ}},
599 {{"coarray", AnyData, Rank::coarray}, {"sub", AnyInt, Rank::vector}},
600 DefaultInt, Rank::scalar, IntrinsicClass::transformationalFunction},
602 {{"coarray", AnyData, Rank::coarray}, {"sub", AnyInt, Rank::vector},
603 {"team", TeamType, Rank::scalar}},
604 DefaultInt, Rank::scalar, IntrinsicClass::transformationalFunction},
606 {{"coarray", AnyData, Rank::coarray}, {"sub", AnyInt, Rank::vector},
607 {"team_number", AnyInt, Rank::scalar}},
608 DefaultInt, Rank::scalar, IntrinsicClass::transformationalFunction},
612 {"back", AnyLogical, Rank::elemental, Optionality::optional},
615 {"int", {{"a", AnyNumeric, Rank::elementalOrBOZ}, DefaultingKIND}, KINDInt},
616 {"int2", {{"a", AnyNumeric, Rank::elementalOrBOZ}},
618 {"int8", {{"a", AnyNumeric, Rank::elementalOrBOZ}},
620 {"int_ptr_kind", {}, DefaultInt, Rank::scalar},
621 {"ior", {{"i", OperandInt}, {"j", OperandInt, Rank::elementalOrBOZ}},
624 {{"i", OperandUnsigned}, {"j", OperandUnsigned, Rank::elementalOrBOZ}},
630 {"size", AnyInt, Rank::elemental, Optionality::optional}},
633 {"is_contiguous", {{"array", Addressable, Rank::anyOrAssumedRank}},
634 DefaultLogical, Rank::elemental, IntrinsicClass::inquiryFunction},
640 {{"x", AnyIntrinsic, Rank::anyOrAssumedRank, Optionality::required,
642 DefaultInt, Rank::elemental, IntrinsicClass::inquiryFunction},
644 {{"array", AnyData, Rank::anyOrAssumedRank}, RequiredDIM,
646 KINDInt, Rank::scalar, IntrinsicClass::inquiryFunction},
647 {"lbound", {{"array", AnyData, Rank::arrayOrAssumedRank}, SizeDefaultKIND},
648 KINDInt, Rank::vector, IntrinsicClass::inquiryFunction},
650 {{"coarray", AnyData, Rank::coarray}, OptionalDIM, SizeDefaultKIND},
651 KINDInt, Rank::scalarIfDim, IntrinsicClass::inquiryFunction},
654 {{"string", AnyChar, Rank::anyOrAssumedRank, Optionality::required,
657 KINDInt, Rank::scalar, IntrinsicClass::inquiryFunction},
668 {"loc", {{"x", Addressable, Rank::anyOrAssumedRank}}, SubscriptInt,
669 Rank::scalar},
676 {{"matrix_a", AnyLogical, Rank::vector},
677 {"matrix_b", AnyLogical, Rank::matrix}},
678 ResultLogical, Rank::vector, IntrinsicClass::transformationalFunction},
680 {{"matrix_a", AnyLogical, Rank::matrix},
681 {"matrix_b", AnyLogical, Rank::vector}},
682 ResultLogical, Rank::vector, IntrinsicClass::transformationalFunction},
684 {{"matrix_a", AnyLogical, Rank::matrix},
685 {"matrix_b", AnyLogical, Rank::matrix}},
686 ResultLogical, Rank::matrix, IntrinsicClass::transformationalFunction},
688 {{"matrix_a", AnyNumeric, Rank::vector},
689 {"matrix_b", AnyNumeric, Rank::matrix}},
690 ResultNumeric, Rank::vector, IntrinsicClass::transformationalFunction},
692 {{"matrix_a", AnyNumeric, Rank::matrix},
693 {"matrix_b", AnyNumeric, Rank::vector}},
694 ResultNumeric, Rank::vector, IntrinsicClass::transformationalFunction},
696 {{"matrix_a", AnyNumeric, Rank::matrix},
697 {"matrix_b", AnyNumeric, Rank::matrix}},
698 ResultNumeric, Rank::matrix, IntrinsicClass::transformationalFunction},
703 {"a3", OperandIntOrReal, Rank::elemental, Optionality::repeats}},
707 {"a3", OperandUnsigned, Rank::elemental, Optionality::repeats}},
711 {"a3", SameCharNoLen, Rank::elemental, Optionality::repeats}},
714 {{"x", AnyReal, Rank::anyOrAssumedRank, Optionality::required,
716 DefaultInt, Rank::scalar, IntrinsicClass::inquiryFunction},
718 {{"array", AnyRelatable, Rank::array}, RequiredDIM, OptionalMASK,
720 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
721 KINDInt, Rank::locReduced, IntrinsicClass::transformationalFunction},
723 {{"array", AnyRelatable, Rank::array}, MissingDIM, OptionalMASK,
725 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
726 KINDInt, Rank::locReduced, IntrinsicClass::transformationalFunction},
728 {{"array", SameRelatable, Rank::array}, RequiredDIM, OptionalMASK},
729 SameRelatable, Rank::dimReduced,
732 {{"array", SameRelatable, Rank::array}, MissingDIM, OptionalMASK},
733 SameRelatable, Rank::scalar, IntrinsicClass::transformationalFunction},
739 {"j", SameIntOrUnsigned, Rank::elementalOrBOZ},
740 {"mask", SameIntOrUnsigned, Rank::elementalOrBOZ}},
744 {"mask", SameIntOrUnsigned, Rank::elementalOrBOZ}},
748 {"a3", OperandIntOrReal, Rank::elemental, Optionality::repeats}},
752 {"a3", OperandUnsigned, Rank::elemental, Optionality::repeats}},
756 {"a3", SameCharNoLen, Rank::elemental, Optionality::repeats}},
759 {{"x", AnyReal, Rank::anyOrAssumedRank, Optionality::required,
761 DefaultInt, Rank::scalar, IntrinsicClass::inquiryFunction},
763 {{"array", AnyRelatable, Rank::array}, RequiredDIM, OptionalMASK,
765 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
766 KINDInt, Rank::locReduced, IntrinsicClass::transformationalFunction},
768 {{"array", AnyRelatable, Rank::array}, MissingDIM, OptionalMASK,
770 {"back", AnyLogical, Rank::scalar, Optionality::optional}},
771 KINDInt, Rank::locReduced, IntrinsicClass::transformationalFunction},
773 {{"array", SameRelatable, Rank::array}, RequiredDIM, OptionalMASK},
774 SameRelatable, Rank::dimReduced,
777 {{"array", SameRelatable, Rank::array}, MissingDIM, OptionalMASK},
778 SameRelatable, Rank::scalar, IntrinsicClass::transformationalFunction},
788 {{"a", SameCharNoLen, Rank::anyOrAssumedRank, Optionality::required,
790 SameCharNoLen, Rank::scalar, IntrinsicClass::inquiryFunction},
792 {"norm2", {{"x", SameReal, Rank::array}, RequiredDIM}, SameReal,
793 Rank::dimReduced, IntrinsicClass::transformationalFunction},
794 {"norm2", {{"x", SameReal, Rank::array}, MissingDIM}, SameReal,
795 Rank::scalar, IntrinsicClass::transformationalFunction},
798 {"num_images", {}, DefaultInt, Rank::scalar,
800 {"num_images", {{"team", TeamType, Rank::scalar}}, DefaultInt, Rank::scalar,
802 {"num_images", {{"team_number", AnyInt, Rank::scalar}}, DefaultInt,
803 Rank::scalar, IntrinsicClass::transformationalFunction},
805 {{"x", AnyIntOrReal}, {"mold", AnyIntOrReal, Rank::scalar}},
808 {{"x", AnyReal}, {"mold", AnyInt, Rank::scalar},
809 {"round", AnyLogical, Rank::scalar, Optionality::optional}},
813 {{"array", SameType, Rank::array},
814 {"mask", AnyLogical, Rank::conformable},
815 {"vector", SameType, Rank::vector, Optionality::optional}},
816 SameType, Rank::vector, IntrinsicClass::transformationalFunction},
817 {"parity", {{"mask", SameLogical, Rank::array}, OptionalDIM}, SameLogical,
818 Rank::dimReduced, IntrinsicClass::transformationalFunction},
822 {{"array", SameNumeric, Rank::array}, RequiredDIM, OptionalMASK},
823 SameNumeric, Rank::dimReduced,
825 {"product", {{"array", SameNumeric, Rank::array}, MissingDIM, OptionalMASK},
826 SameNumeric, Rank::scalar, IntrinsicClass::transformationalFunction},
828 {{"x", AnyFloating, Rank::anyOrAssumedRank, Optionality::required,
830 DefaultInt, Rank::scalar, IntrinsicClass::inquiryFunction},
831 {"present", {{"a", Addressable, Rank::anyOrAssumedRank}}, DefaultLogical,
832 Rank::scalar, IntrinsicClass::inquiryFunction},
834 {{"x", AnyIntOrReal, Rank::anyOrAssumedRank, Optionality::required,
836 DefaultInt, Rank::scalar, IntrinsicClass::inquiryFunction},
838 {{"x", AnyNumeric, Rank::anyOrAssumedRank, Optionality::required,
840 DefaultInt, Rank::scalar, IntrinsicClass::inquiryFunction},
841 {"rank",
842 {{"a", AnyData, Rank::anyOrAssumedRank, Optionality::required,
844 DefaultInt, Rank::scalar, IntrinsicClass::inquiryFunction},
845 {"real", {{"a", SameComplex, Rank::elemental}},
847 {"real", {{"a", AnyNumeric, Rank::elementalOrBOZ}, DefaultingKIND},
850 {{"array", SameType, Rank::array},
851 {"operation", SameType, Rank::reduceOperation}, RequiredDIM,
853 {"identity", SameType, Rank::scalar, Optionality::optional},
854 {"ordered", AnyLogical, Rank::scalar, Optionality::optional}},
855 SameType, Rank::dimReduced, IntrinsicClass::transformationalFunction},
857 {{"array", SameType, Rank::array},
858 {"operation", SameType, Rank::reduceOperation}, MissingDIM,
860 {"identity", SameType, Rank::scalar, Optionality::optional},
861 {"ordered", AnyLogical, Rank::scalar, Optionality::optional}},
862 SameType, Rank::scalar, IntrinsicClass::transformationalFunction},
864 {{"path1", DefaultChar, Rank::scalar},
865 {"path2", DefaultChar, Rank::scalar}},
866 DefaultInt, Rank::scalar},
868 {{"string", SameCharNoLen, Rank::scalar},
869 {"ncopies", AnyInt, Rank::scalar}},
870 SameCharNoLen, Rank::scalar, IntrinsicClass::transformationalFunction},
872 {{"source", SameType, Rank::array}, {"shape", AnyInt, Rank::shape},
873 {"pad", SameType, Rank::array, Optionality::optional},
874 {"order", AnyInt, Rank::vector, Optionality::optional}},
875 SameType, Rank::shaped, IntrinsicClass::transformationalFunction},
878 {{"a", ExtensibleDerived, Rank::anyOrAssumedRank, Optionality::required,
880 {"b", ExtensibleDerived, Rank::anyOrAssumedRank,
883 DefaultLogical, Rank::scalar, IntrinsicClass::inquiryFunction},
887 {"back", AnyLogical, Rank::elemental, Optionality::optional},
890 {"second", {}, DefaultReal, Rank::scalar},
891 {"selected_char_kind", {{"name", DefaultChar, Rank::scalar}}, DefaultInt,
892 Rank::scalar, IntrinsicClass::transformationalFunction},
893 {"selected_int_kind", {{"r", AnyInt, Rank::scalar}}, DefaultInt,
894 Rank::scalar, IntrinsicClass::transformationalFunction},
895 {"selected_logical_kind", {{"bits", AnyInt, Rank::scalar}}, DefaultInt,
896 Rank::scalar, IntrinsicClass::transformationalFunction},
898 {{"p", AnyInt, Rank::scalar},
899 {"r", AnyInt, Rank::scalar, Optionality::optional},
900 {"radix", AnyInt, Rank::scalar, Optionality::optional}},
901 DefaultInt, Rank::scalar, IntrinsicClass::transformationalFunction},
903 {{"p", AnyInt, Rank::scalar, Optionality::optional},
904 {"r", AnyInt, Rank::scalar},
905 {"radix", AnyInt, Rank::scalar, Optionality::optional}},
906 DefaultInt, Rank::scalar, IntrinsicClass::transformationalFunction},
908 {{"p", AnyInt, Rank::scalar, Optionality::optional},
909 {"r", AnyInt, Rank::scalar, Optionality::optional},
910 {"radix", AnyInt, Rank::scalar}},
911 DefaultInt, Rank::scalar, IntrinsicClass::transformationalFunction},
912 {"selected_unsigned_kind", {{"r", AnyInt, Rank::scalar}}, DefaultInt,
913 Rank::scalar, IntrinsicClass::transformationalFunction},
915 {"shape", {{"source", AnyData, Rank::anyOrAssumedRank}, SizeDefaultKIND},
916 KINDInt, Rank::vector, IntrinsicClass::inquiryFunction},
929 {{"array", AnyData, Rank::arrayOrAssumedRank},
932 KINDInt, Rank::scalar, IntrinsicClass::inquiryFunction},
933 {"sizeof", {{"a", AnyData, Rank::anyOrAssumedRank}}, SubscriptInt,
934 Rank::scalar, IntrinsicClass::inquiryFunction},
937 {{"source", SameType, Rank::known, Optionality::required,
939 RequiredDIM, {"ncopies", AnyInt, Rank::scalar}},
940 SameType, Rank::rankPlus1, IntrinsicClass::transformationalFunction},
942 {"stopped_images", {OptionalTEAM, SizeDefaultKIND}, KINDInt, Rank::vector,
945 {{"a", AnyData, Rank::anyOrAssumedRank, Optionality::required,
948 KINDInt, Rank::scalar, IntrinsicClass::inquiryFunction},
949 {"sum", {{"array", SameNumeric, Rank::array}, RequiredDIM, OptionalMASK},
950 SameNumeric, Rank::dimReduced,
952 {"sum", {{"array", SameNumeric, Rank::array}, MissingDIM, OptionalMASK},
953 SameNumeric, Rank::scalar, IntrinsicClass::transformationalFunction},
954 {"system", {{"command", DefaultChar, Rank::scalar}}, DefaultInt,
955 Rank::scalar},
959 {"team_number", {OptionalTEAM}, DefaultInt, Rank::scalar,
962 {{"coarray", AnyData, Rank::coarray}, RequiredDIM, OptionalTEAM},
963 DefaultInt, Rank::scalar, IntrinsicClass::transformationalFunction},
964 {"this_image", {{"coarray", AnyData, Rank::coarray}, OptionalTEAM},
965 DefaultInt, Rank::vector, IntrinsicClass::transformationalFunction},
966 {"this_image", {OptionalTEAM}, DefaultInt, Rank::scalar,
969 {{"x", SameReal, Rank::anyOrAssumedRank, Optionality::required,
971 SameReal, Rank::scalar, IntrinsicClass::inquiryFunction},
974 {{"source", AnyData, Rank::known}, {"mold", SameType, Rank::scalar}},
975 SameType, Rank::scalar, IntrinsicClass::transformationalFunction},
977 {{"source", AnyData, Rank::known}, {"mold", SameType, Rank::array}},
978 SameType, Rank::vector, IntrinsicClass::transformationalFunction},
980 {{"source", AnyData, Rank::anyOrAssumedRank},
981 {"mold", SameType, Rank::anyOrAssumedRank},
982 {"size", AnyInt, Rank::scalar}},
983 SameType, Rank::vector, IntrinsicClass::transformationalFunction},
984 {"transpose", {{"matrix", SameType, Rank::matrix}}, SameType, Rank::matrix,
986 {"trim", {{"string", SameCharNoLen, Rank::scalar}}, SameCharNoLen,
987 Rank::scalar, IntrinsicClass::transformationalFunction},
989 {{"array", AnyData, Rank::anyOrAssumedRank}, RequiredDIM,
991 KINDInt, Rank::scalar, IntrinsicClass::inquiryFunction},
992 {"ubound", {{"array", AnyData, Rank::arrayOrAssumedRank}, SizeDefaultKIND},
993 KINDInt, Rank::vector, IntrinsicClass::inquiryFunction},
995 {{"coarray", AnyData, Rank::coarray}, OptionalDIM, SizeDefaultKIND},
996 KINDInt, Rank::scalarIfDim, IntrinsicClass::inquiryFunction},
997 {"uint", {{"a", AnyNumeric, Rank::elementalOrBOZ}, DefaultingKIND},
1002 {{"vector", SameType, Rank::vector}, {"mask", AnyLogical, Rank::array},
1003 {"field", SameType, Rank::conformable}},
1004 SameType, Rank::conformable, IntrinsicClass::transformationalFunction},
1007 {"back", AnyLogical, Rank::elemental, Optionality::optional},
1025 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1028 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1031 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1034 {{"flag", IeeeFlagType, Rank::scalar},
1035 {"x", AnyReal, Rank::elemental, Optionality::optional}},
1037 {"__builtin_ieee_support_halting", {{"flag", IeeeFlagType, Rank::scalar}},
1040 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1043 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1046 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1049 {{"round_value", IeeeRoundType, Rank::scalar},
1050 {"x", AnyReal, Rank::elemental, Optionality::optional}},
1053 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1056 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1059 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1062 {{"x", AnyReal, Rank::elemental, Optionality::optional}},
1140 {"a3", DefaultInt, Rank::elemental, Optionality::repeats}},
1145 {"a3", DefaultReal, Rank::elemental, Optionality::repeats}},
1150 {"a3", DefaultInt, Rank::elemental, Optionality::repeats}},
1155 {"a3", DefaultReal, Rank::elemental, Optionality::repeats}},
1192 {{"x", AnyIntOrReal, Rank::elementalOrBOZ},
1193 {"y", AnyIntOrReal, Rank::elementalOrBOZ, Optionality::optional}},
1213 {"a3", DoublePrecision, Rank::elemental, Optionality::repeats}},
1218 {"a3", DoublePrecision, Rank::elemental, Optionality::repeats}},
1266 {{"len", {{"string", DefaultChar, Rank::anyOrAssumedRank}}, DefaultInt,
1267 Rank::scalar, IntrinsicClass::inquiryFunction}},
1284 {"a3", DefaultInt, Rank::elemental, Optionality::repeats}},
1289 {"a3", DefaultReal, Rank::elemental, Optionality::repeats}},
1294 {"a3", DefaultInt, Rank::elemental, Optionality::repeats}},
1299 {"a3", DefaultReal, Rank::elemental, Optionality::repeats}},
1317 {"abort", {}, {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1319 {{"atom", AtomicInt, Rank::atom, Optionality::required,
1321 {"value", AnyInt, Rank::scalar, Optionality::required,
1323 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1325 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1327 {{"atom", AtomicInt, Rank::atom, Optionality::required,
1329 {"value", AnyInt, Rank::scalar, Optionality::required,
1331 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1333 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1335 {{"atom", SameAtom, Rank::atom, Optionality::required,
1337 {"old", SameAtom, Rank::scalar, Optionality::required,
1339 {"compare", SameAtom, Rank::scalar, Optionality::required,
1341 {"new", SameAtom, Rank::scalar, Optionality::required,
1343 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1345 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1347 {{"atom", AtomicIntOrLogical, Rank::atom, Optionality::required,
1349 {"value", AnyIntOrLogical, Rank::scalar, Optionality::required,
1351 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1353 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1355 {{"atom", AtomicInt, Rank::atom, Optionality::required,
1357 {"value", AnyInt, Rank::scalar, Optionality::required,
1359 {"old", AtomicInt, Rank::scalar, Optionality::required,
1361 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1363 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1365 {{"atom", AtomicInt, Rank::atom, Optionality::required,
1367 {"value", AnyInt, Rank::scalar, Optionality::required,
1369 {"old", AtomicInt, Rank::scalar, Optionality::required,
1371 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1373 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1375 {{"atom", AtomicInt, Rank::atom, Optionality::required,
1377 {"value", AnyInt, Rank::scalar, Optionality::required,
1379 {"old", AtomicInt, Rank::scalar, Optionality::required,
1381 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1383 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1385 {{"atom", AtomicInt, Rank::atom, Optionality::required,
1387 {"value", AnyInt, Rank::scalar, Optionality::required,
1389 {"old", AtomicInt, Rank::scalar, Optionality::required,
1391 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1393 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1395 {{"atom", AtomicInt, Rank::atom, Optionality::required,
1397 {"value", AnyInt, Rank::scalar, Optionality::required,
1399 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1401 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1403 {{"value", AnyIntOrLogical, Rank::scalar, Optionality::required,
1405 {"atom", AtomicIntOrLogical, Rank::atom, Optionality::required,
1407 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1409 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1411 {{"atom", AtomicInt, Rank::atom, Optionality::required,
1413 {"value", AnyInt, Rank::scalar, Optionality::required,
1415 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1417 {}, Rank::elemental, IntrinsicClass::atomicSubroutine},
1419 {{"name", DefaultChar, Rank::scalar, Optionality::required},
1420 {"status", AnyInt, Rank::scalar, Optionality::optional,
1422 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1424 {{"a", AnyData, Rank::anyOrAssumedRank, Optionality::required,
1426 {"source_image", AnyInt, Rank::scalar, Optionality::required,
1428 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1430 {"errmsg", DefaultChar, Rank::scalar, Optionality::optional,
1432 {}, Rank::elemental, IntrinsicClass::collectiveSubroutine},
1434 {{"a", AnyIntOrRealOrChar, Rank::anyOrAssumedRank,
1436 {"result_image", AnyInt, Rank::scalar, Optionality::optional,
1438 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1440 {"errmsg", DefaultChar, Rank::scalar, Optionality::optional,
1442 {}, Rank::elemental, IntrinsicClass::collectiveSubroutine},
1444 {{"a", AnyIntOrRealOrChar, Rank::anyOrAssumedRank,
1446 {"result_image", AnyInt, Rank::scalar, Optionality::optional,
1448 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1450 {"errmsg", DefaultChar, Rank::scalar, Optionality::optional,
1452 {}, Rank::elemental, IntrinsicClass::collectiveSubroutine},
1454 {{"a", AnyNumeric, Rank::anyOrAssumedRank, Optionality::required,
1456 {"result_image", AnyInt, Rank::scalar, Optionality::optional,
1458 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1460 {"errmsg", DefaultChar, Rank::scalar, Optionality::optional,
1462 {}, Rank::elemental, IntrinsicClass::collectiveSubroutine},
1464 {{"time", AnyReal, Rank::scalar, Optionality::required,
1466 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1468 {{"date", DefaultChar, Rank::scalar, Optionality::optional,
1470 {"time", DefaultChar, Rank::scalar, Optionality::optional,
1472 {"zone", DefaultChar, Rank::scalar, Optionality::optional,
1474 {"values", AnyInt, Rank::vector, Optionality::optional,
1476 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1478 {{"values", TypePattern{RealType, KindCode::exactKind, 4}, Rank::vector,
1481 Rank::scalar, Optionality::required, common::Intent::Out}},
1482 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1484 {{"event", EventType, Rank::scalar},
1485 {"count", AnyInt, Rank::scalar, Optionality::required,
1487 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1489 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1491 {{"command", DefaultChar, Rank::scalar},
1492 {"wait", AnyLogical, Rank::scalar, Optionality::optional},
1495 Rank::scalar, Optionality::optional, common::Intent::InOut},
1497 Rank::scalar, Optionality::optional, common::Intent::Out},
1498 {"cmdmsg", DefaultChar, Rank::scalar, Optionality::optional,
1500 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1501 {"exit", {{"status", DefaultInt, Rank::scalar, Optionality::optional}}, {},
1502 Rank::elemental, IntrinsicClass::impureSubroutine},
1505 {{"command", DefaultChar, Rank::scalar, Optionality::optional,
1507 {"length", AnyInt, Rank::scalar, Optionality::optional,
1509 {"status", AnyInt, Rank::scalar, Optionality::optional,
1511 {"errmsg", DefaultChar, Rank::scalar, Optionality::optional,
1513 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1515 {{"number", AnyInt, Rank::scalar},
1516 {"value", DefaultChar, Rank::scalar, Optionality::optional,
1518 {"length", AnyInt, Rank::scalar, Optionality::optional,
1520 {"status", AnyInt, Rank::scalar, Optionality::optional,
1522 {"errmsg", DefaultChar, Rank::scalar, Optionality::optional,
1524 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1526 {{"name", DefaultChar, Rank::scalar},
1527 {"value", DefaultChar, Rank::scalar, Optionality::optional,
1529 {"length", AnyInt, Rank::scalar, Optionality::optional,
1531 {"status", AnyInt, Rank::scalar, Optionality::optional,
1533 {"trim_name", AnyLogical, Rank::scalar, Optionality::optional},
1534 {"errmsg", DefaultChar, Rank::scalar, Optionality::optional,
1536 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1538 {{"c", DefaultChar, Rank::scalar, Optionality::required,
1541 Rank::scalar, Optionality::optional, common::Intent::Out}},
1542 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1544 {{"from", SameType, Rank::known, Optionality::required,
1546 {"to", SameType, Rank::known, Optionality::required,
1548 {"stat", AnyInt, Rank::scalar, Optionality::optional,
1550 {"errmsg", DefaultChar, Rank::scalar, Optionality::optional,
1552 {}, Rank::elemental, IntrinsicClass::pureSubroutine},
1555 {"to", SameIntOrUnsigned, Rank::elemental, Optionality::required,
1558 {}, Rank::elemental, IntrinsicClass::elementalSubroutine}, // elemental
1560 {{"repeatable", AnyLogical, Rank::scalar},
1561 {"image_distinct", AnyLogical, Rank::scalar}},
1562 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1564 {{"harvest", {RealType | UnsignedType, KindCode::any}, Rank::known,
1567 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1569 {{"size", DefaultInt, Rank::scalar, Optionality::optional,
1571 {"put", DefaultInt, Rank::vector, Optionality::optional},
1572 {"get", DefaultInt, Rank::vector, Optionality::optional,
1574 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1576 {{"path1", DefaultChar, Rank::scalar},
1577 {"path2", DefaultChar, Rank::scalar},
1578 {"status", DefaultInt, Rank::scalar, Optionality::optional,
1580 {}, Rank::scalar, IntrinsicClass::impureSubroutine},
1581 {"second", {{"time", DefaultReal, Rank::scalar}}, {}, Rank::scalar,
1584 {{"command", DefaultChar, Rank::scalar},
1585 {"exitstat", DefaultInt, Rank::scalar, Optionality::optional,
1587 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1589 {{"count", AnyInt, Rank::scalar, Optionality::optional,
1591 {"count_rate", AnyIntOrReal, Rank::scalar, Optionality::optional,
1593 {"count_max", AnyInt, Rank::scalar, Optionality::optional,
1595 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1597 {{"number", AnyInt, Rank::scalar, Optionality::required,
1600 {"handler", AnyPointer, Rank::scalar, Optionality::required,
1602 {"status", AnyInt, Rank::scalar, Optionality::optional,
1604 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1606 {{"seconds", AnyInt, Rank::scalar, Optionality::required,
1608 {}, Rank::elemental, IntrinsicClass::impureSubroutine},
1922 (d.rank == Rank::anyOrAssumedRank ||
1923 d.rank == Rank::arrayOrAssumedRank) &&
1936 CHECK(arg->Rank() == 0);
1940 d.rank == Rank::elementalOrBOZ) {
1945 if (nextParam && nextParam->rank == Rank::elementalOrBOZ) {
1959 d.rank == Rank::reduceOperation) {
2129 if (isAssumedRank && d.rank != Rank::anyOrAssumedRank &&
2130 d.rank != Rank::arrayOrAssumedRank) {
2132 "Assumed-rank array cannot be forwarded to '%s=' argument"_err_en_US,
2136 int rank{arg->Rank()};
2138 switch (d.rank) {
2139 case Rank::elemental:
2140 case Rank::elementalOrBOZ:
2142 elementalRank = rank;
2144 argOk = rank == 0 || rank == elementalRank;
2146 case Rank::scalar:
2147 argOk = rank == 0;
2149 case Rank::vector:
2150 argOk = rank == 1;
2152 case Rank::shape:
2154 if (rank != 1) {
2156 "'shape=' argument must be an array of rank 1"_err_en_US);
2179 case Rank::matrix:
2180 argOk = rank == 2;
2182 case Rank::array:
2183 argOk = rank > 0;
2189 case Rank::coarray:
2198 case Rank::atom:
2199 argOk = rank == 0 && (IsCoarray(*arg) || ExtractCoarrayRef(*arg));
2207 case Rank::known:
2211 argOk = !isAssumedRank && rank == knownArg->Rank();
2213 case Rank::anyOrAssumedRank:
2214 case Rank::arrayOrAssumedRank:
2219 if (d.rank == Rank::arrayOrAssumedRank && rank == 0) {
2226 if (!dimArg && rank > 0 &&
2252 case Rank::conformable: // arg must be conformable with previous arrayArg
2269 case Rank::dimReduced:
2270 case Rank::dimRemovedOrScalar:
2272 argOk = rank == 0 || rank + 1 == arrayArg->Rank();
2274 case Rank::reduceOperation:
2278 case Rank::scalarIfDim:
2279 case Rank::locReduced:
2280 case Rank::rankPlus1:
2281 case Rank::shaped:
2282 common::die("INTERNAL: result-only rank code appears on argument '%s' "
2288 "'%s=' argument has unacceptable rank %d"_err_en_US, d.keyword,
2289 rank);
2366 CHECK(expr->Rank() == 0);
2454 arrayRank = arrayArg->Rank();
2467 switch (rank) {
2468 case Rank::dimReduced:
2469 case Rank::dimRemovedOrScalar:
2470 case Rank::locReduced:
2471 case Rank::scalarIfDim:
2478 if (rank == Rank::scalarIfDim || arrayRank.value_or(-1) == 1) {
2495 // Determine the rank of the function result.
2497 switch (rank) {
2498 case Rank::elemental:
2501 case Rank::scalar:
2504 case Rank::vector:
2507 case Rank::matrix:
2510 case Rank::conformable:
2512 resultRank = arrayArg->Rank();
2514 case Rank::dimReduced:
2516 resultRank = dimArg ? arrayArg->Rank() - 1 : 0;
2518 case Rank::locReduced:
2520 resultRank = dimArg ? arrayArg->Rank() - 1 : 1;
2522 case Rank::rankPlus1:
2524 resultRank = knownArg->Rank() + 1;
2526 case Rank::shaped:
2530 case Rank::scalarIfDim:
2533 case Rank::elementalOrBOZ:
2534 case Rank::shape:
2535 case Rank::array:
2536 case Rank::coarray:
2537 case Rank::atom:
2538 case Rank::known:
2539 case Rank::anyOrAssumedRank:
2540 case Rank::arrayOrAssumedRank:
2541 case Rank::reduceOperation:
2542 case Rank::dimRemovedOrScalar:
2543 common::die("INTERNAL: bad Rank code on intrinsic '%s' result", name);
2859 "MOLD= argument to NULL() must not be assumed-rank"_err_en_US);
2952 int fptrRank{expr->Rank()};
3011 if (argExpr->Rank() > 1) {
3013 "SHAPE= argument to C_F_POINTER() must be a rank-one array."_err_en_US);
3014 } else if (argExpr->Rank() == 1) {
3018 "SHAPE= argument to C_F_POINTER() must have size equal to the rank of FPTR="_err_en_US);
3193 if (arg.Rank() > 0) {
3638 << ' ' << EnumToString(rank) << ' ' << EnumToString(optionality)
3655 return result.Dump(o << " -> ") << ' ' << EnumToString(rank);