intro_intrin(3I)
INTRO_INTRIN - Introduction to intrinsic procedures
As shipped in IRIX 6.5.7. Last changed in IRIX 6.5.5.
NAME INTRO_INTRIN - Introduction to intrinsic procedures IMPLEMENTATION UNICOS, UNICOS/mk, and IRIX systems CF90, MIPSpro 7 Fortran 90, MIPSpro Fortran 77 DESCRIPTION Intrinsic procedures are predefined procedures that are defined by the computer programming language. They are invoked in the same way that other procedures are invoked. The Fortran standard defines intrinsic procedures, and the CF90 and MIPSpro 7 Fortran 90 compilers support all the intrinsics described in the Fortran 95 standard. The CF90 and MIPSpro 7 Fortran 90 compilers support other intrinsics as extensions to the standard. The MIPSpro Fortran 77 compiler conforms to the outmoded FORTRAN 77 standard; the intrinsics supported by this compiler are fewer in number than those supported by the CF90 and MIPSpro 7 Fortran 90 compilers. There are four classes of Fortran intrinsic procedures as defined by the Fortran 95 standard: inquiry functions, elemental functions, transformational functions, and subroutines. Additional intrinsics provided with the CF90 and MIPSpro 7 Fortran 90 compiler include intrinsics that support IEEE floating-point arithmetic and other compiler extensions. The CF90 and MIPSpro 7 Fortran 90 compilers evaluate intrinsic procedures in line or by calling external code. Depending on your platform and your program, the following intrinsics can be evaluated in line: * ABS * ACHAR * AIMAG * AINT * ALL * AND * ANINT * ANY * BIT_SIZE * M@CLR, M@LD, M@MX, M@LDMX, M@UL (the BMM intrinsics) * BTEST * CEILING * CHAR, ICHAR * CLEAR_IEEE_EXCEPTION * CLOC * CMPLX * COMPL * CONJG * COUNT * CSHIFT * CSMG * CVMGM, CVMGN, CVMGP, CVMGZ, CVMGT * DBLE * DIGITS * DIM * DISABLE_IEEE_INTERRUPT * DOT_PRODUCT * DPROD * DSHIFTL * DSHIFTR * ENABLE_IEEE_INTERRUPT * EOSHIFT * EPSILON * EQV * EXPONENT * FCD * FLOOR * FLOAT * FRACTION * GET_IEEE_EXCEPTIONS * GET_IEEE_INTERRUPTS * GET_IEEE_ROUNDING_MODE * GET_IEEE_STATUS * HUGE * I24MULT * IACHAR * IAND * IBCLR * IBITS * IBSET * IEEE_CLASS * IEEE_COPY_SIGN * IEEE_FINITE * IEEE_INT * IEEE_IS_NAN * IEEE_REAL * IEEE_UNORDERED * IEOR * INT * INT_MULT_UPPER * IOR * ISHFT * ISHFTC * KIND * LBOUND * LEADZ * LEN * LGE, LGT, LLE, LLT * LOC * LOGICAL * MASK * MATMUL * MAX * MAXEXPONENT * MAXLOC * MAXVAL * MEMORY_BARRIER * MERGE * MIN * MINEXPONENT * MINVAL * MOD, AMOD * MODULO * MVBITS * MY_PE * NEAREST * NEQV, XOR * NINT * NOT * NUMARG * OR * POPCNT * POPPAR * PRECISION * PRESENT * PRODUCT * RADIX * RANGE * REAL * REMOTE_WRITE_BARRIER * RRSPACING * RTC, IRTC * SCALE * SELECTED_INT_KIND * SET_EXPONENT * SET_IEEE_EXCEPTION * SET_IEEE_EXCEPTIONS * SET_IEEE_INTERRUPTS * SET_IEEE_ROUNDING_MODE * SET_IEEE_STATUS * SHAPE * SHIFT * SHIFTA * SHIFTL * SHIFTR * SIGN * SPACING * SPREAD * SUM * SYSTEM_CLOCK * TEST_IEEE_EXCEPTION * TEST_IEEE_INTERRUPT * TINY * TRANSFER * TRANSPOSE * UBOUND * WRITE_MEMORY_BARRIER The CF90 compiler supports vector versions of some intrinsic procedures. Using one of these intrinsics means that the presence of the intrinsic itself, in a loop, does not inhibit the loop's ability to vectorize. Vector versions of the following CF90 intrinsic procedures exist on UNICOS platforms: * ABS * ACOS, DACOS * AIMAG * AINT * AND * ANINT * ASIN * ATAN * ATAN2 * BIT_SIZE * M@CLR, M@LD, M@MX, M@LDMX, and M@UL (the BMM intrinsics) * BTEST * CEILING * CMPLX * COMPL * CONJG * COS * COSH, DCOSH * COT, DCOT * CSMG * CVMGM, CVMGN, CVMGP, CVMGZ, CVMGT * DBLE, DFLOAT * DIGITS * DIM * DPROD * DSHIFTL * DSHIFTR * EPSILON * EQV * EXP * EXPONENT * FLOOR * FRACTION * HUGE * I24MULT * IAND * IBCLR * IBITS * IBSET * IEEE_CLASS * IEEE_COPY_SIGN * IEEE_FINITE * IEEE_INT * IEEE_IS_NAN * IEEE_REAL * IEEE_UNORDERED * IEOR * INT, IDINT, IFIX * INT_MULT_UPPER * IOR * ISHFT * ISHFTC * KIND * LEADZ * LOG * LOG10 * LOGICAL * MASK * MAX * MAXEXPONENT * MERGE * MIN * MINEXPONENT * MOD * MVBITS * NEAREST * NEQV, XOR * NINT * NOT * OR * POPCNT * POPPAR * PRECISION * PRESENT * RADIX * RANDOM_NUMBER * RANF * RANGE * REAL * RRSPACING * SCALE * SELECTED_INT_KIND * SET_EXPONENT * SHIFT * SHIFTA * SHIFTL * SHIFTR * SIGN * SIN * SINH * SPACING * SPREAD * SQRT * TAN * TANH * TINY The CF90 compiler supports vector versions of some intrinsic procedures and library-based operators on UNICOS/mk platforms, too. Using one of these intrinsics means that the presence of the intrinsic itself, in a loop, does not inhibit the loop's ability to vectorize. On UNICOS/mk platforms, you must specify -O vector3 and -l mfastv on your f90(1) command line in order for the compiler to be able to use vector versions of the following intrinsic procedures: * COS, ACOS * COSS * EXP * LOG, LOG10 * M@LD, M@MX, M@LDMX, and M@UL (the BMM intrinsics) * POPCNT * RANF * RTOR * SIN, ASIN * TAN, ATAN, ATAN2 * SQRT The MIPSpro 7 Fortran 90 and the MIPSpro Fortran 77 compilers support both single-precision and double-precision vector versions of certain intrinsic procedures when -O3 is specified on the compiler command line. These intrinsics are as follows: * COS, ACOS * EXP * LOG, LOG10 * SIN, ASIN * SQRT * TAN, ATAN For details about the Fortran 95 intrinsics, see the man pages themselves and the Fortran Language Reference Manual, Volume 2. The C/C++ intrinsics either allow direct access to hardware instructions or result in the generation of inline code to perform specialized functions. The intrinsic functions are processed completely by the compiler, and no calls to external functions are generated. For details about the C intrinsic procedures, see the Cray C/C++ Reference Manual. For information about the math intrinsics, see the INTRO_LIBM(3I) man page. When using the MIPSpro 7 Fortran 90 compiler, the math intrinsic functions described in the Intrinsic Procedures Reference Manual, are not used. See the SGI math library documentation for information about math intrinsics supported on IRIX systems. TERMINOLOGY The Fortran intrinsic procedure man pages use the terms single precision, double precision, and quad precision. These terms have different meanings depending on your operating system. The meaning of the term single precision is as follows: * On IRIX systems, REAL(KIND=4) and COMPLEX(KIND=4). * On UNICOS and UNICOS/mk systems, REAL(KIND=8) and COMPLEX(KIND=8). The meaning of the term double precision is as follows: * On UNICOS/mk and IRIX systems, REAL(KIND=8) and COMPLEX(KIND=8). * On UNICOS systems, REAL(KIND=16) and COMPLEX(KIND=16). The meaning of the term quad precision is as follows: * On UNICOS and IRIX systems, REAL(KIND=16) and COMPLEX(KIND=16). * On UNICOS/mk systems, REAL(KIND=8) and COMPLEX(KIND=8). SEE ALSO INTRO_LIBM(3I), INTRO_SHMEM(3) Fortran Language Reference Manual, Volume 2 Cray C/C++ Reference Manual Intrinsic Procedures Reference Manual for the printed version of this man page.