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.