NAG Fortran Compiler, Release 7.2: Fortran 95 Intrinsic Procedures

Navigation: Previous Up Next

## 8.4 Fortran 95 Intrinsic Procedures

This section provides a quick reference guide to the Fortran 90/95 intrinsic functions and subroutines.

Procedures marked with ‘*’ are non-generic versions of other intrinsics. Procedures marked with ‘E’ are elemental.

Procedures marked with ‘I’ are inquiry functions; these query characteristics of a variable other than its value.

Procedures marked with ‘P’ may be supplied as actual procedure arguments; when it is used as a procedure argument all arguments are scalar, no optional arguments are allowed, and it is not generic: if the name is normally generic the procedure argument version is default `INTEGER` if it begins with the letter I to N, and default `REAL` otherwise.

Arguments named ‘`KIND`’ must be initialisation expressions.

Arguments printed in italics (e.g., ‘DIM’) are optional.

### Intrinsic Functions

Function Name | Flags | Description
`ABS(A)` | EP | Absolute value.
`ACHAR(I)` | E | Produce character from ASCII value.
`ACOS(X)` | EP | Arccosine.
`ADJUSTL(STRING)` | E | Adjust string to the left by moving leading blanks to the end.
`ADJUSTR(STRING)` | E | Adjust string to the right.
`AIMAG(Z)` | EP | The imaginary part of a complex number.
`AINT(A,KIND )` | EP | Truncate to a whole number.
`ALL(MASK,DIM)` |  | Reduce `MASK` with the `.AND.` operation.
`ALLOCATED(ARRAY)` | I | Whether an allocatable array is allocated.
`ALOG(X)` | *P | `LOG` function restricted to scalar default real.
`ALOG10(X)` | *P | `LOG10` function restricted to scalar default real.
`AMAX0(A1,A2,A3,...)` | * | `REAL(MAX(A1,A2,A3,...))` with scalar default integer args.
`AMAX1(A1,A2,A3,...)` | * | `MAX` function restricted to scalar default real.
`AMIN0(A1,A2,A3,...)` | * | `REAL(MIN(A1,A2,A3,...))` with scalar default integer args.
`AMIN1(A1,A2,A3,...)` | * | `MIN` function restricted to scalar default integer.
`AMOD(A,P)` | *P | `MOD` function restricted to scalar default real.
`ANINT(A,KIND)` | EP | Round to a whole number.
`ANY(MASK,DIM)` |  | Reduce `MASK` with the .OR. operation.
`ASIN(X)` | EP | Arcsine.
`ASSOCIATED(POINTER,TARGET)` | I | Whether a pointer is associated with a target.
`ATAN(X)` | EP | Arctangent.
`ATAN2(Y,X)` | EP | Arctangent.
`BIT_SIZE(I)` |  | Number of bits in an integer type.
`BTEST(I,POS)` | E | Whether a particular bit is 1.
`CABS(A)` | *P | `ABS` function restricted to scalar default complex.
`CCOS(X)` | *P | `COS` function restricted to scalar default complex.
`CEILING(A,KIND)` | E | Smallest integer greater than or equal to `A`.
`CEXP(X)` | *P | `EXP` function restricted to scalar default complex.
`CHAR(I,KIND)` | E | Produce character from native coded character set value.
`CLOG(X)` | *P | `LOG` function restricted to scalar default complex.
`CMPLX(X,Y,KIND)` | E | Convert to complex.
`CONJG(Z)` | EP | Complex conjugate.
`COS(X)` | EP | Cosine.
`COSH(X)` | EP | Hyperbolic cosine.
`COUNT(MASK,DIM)` |  | Reduce `MASK` by counting `.TRUE.` elements.
`CSHIFT(ARRAY,SHIFT,DIM)` |  | Circular shift of an array.
`CSIN(X)` | *P | `SIN` function restricted to scalar default complex.
`CSQRT(X)` | *P | `SQRT` function restricted to scalar default complex.
`DABS(A)` | *P | `ABS` function restricted to scalar double precision.
`DACOS(X)` | *P | `ACOS` function restricted to scalar double precision.
`DASIN(X)` | *P | `ASIN` function restricted to scalar double precision.
`DATAN(X)` | *P | `ATAN` function restricted to scalar double precision.
`DATAN2(Y,X)` | *P | `ATAN2` function restricted to scalar double precision.
`DBLE(A)` | E | Convert to double precision.
`DCOS(X)` | *P | `COS` function restricted to scalar double precision.
`DCOSH(X)` | *P | `COSH` function restricted to scalar double precision.
`DDIM(X,Y)` | *P | `DIM` function restricted to scalar double precision.
`DEXP(X)` | *P | `EXP` function restricted to scalar double precision.
`DIGITS(X)` | I | Number of mantissa digits in the model for X.
`DIM(X,Y)` | EP | Non-negative difference, `MAX(0,X-Y)`.
`DINT(A)` | *P | `AINT` function restricted to scalar double precision.
`DLOG(X)` | *P | `LOG` function restricted to scalar double precision.
`DLOG10(X)` | *P | `LOG10` function restricted to scalar double precision.
`DMAX1(A1,A2,A3,...)` | * | `MAX` function restricted to scalar double precision.
`DMIN1(A1,A2,A3,...)` | * | `MIN` function restricted to scalar double precision.
`DMOD(A,P)` | *P | `MOD` function restricted to scalar double precision.
`DNINT(A)` | *P | `ANINT` function restricted to scalar double precision.
`DOT_PRODUCT(VECTOR_A,VECTOR_B)` |  | Dot product.
`DPROD(X,Y)` | EP | Double precision result of X*Y.
`DSIGN(A,B)` | *P | `SIGN` function restricted to scalar double precision.
`DSIN(X)` | *P | `SIN` function restricted to scalar double precision.
`DSINH(X)` | *P | `SINH` function restricted to scalar double precision.
`DSQRT(X)` | *P | `SQRT` function restricted to scalar double precision.
`DTAN(X)` | *P | `TAN` function restricted to scalar double precision.
`DTANH(X)` | *P | `TANH` function restricted to scalar double precision.
`EOSHIFT(ARRAY,SHIFT,BOUNDARY,DIM)` |  | End-off array shift.
`EPSILON(X)` | I | Number almost neglible compared to 1.
`EXP(X)` | EP | Exponential (e`X`).
`EXPONENT(X)` | E | The exponent part of a floating-point number.
`FLOAT(A)` | * | `REAL` function restricted to scalar default integer.
`FLOOR(A,KIND)` | E | Largest integer less than or equal to `A`.
`FRACTION(X)` | E | The mantissa of a floating-point number.
`HUGE(X)` | I | The largest number in the model for a real type.
`IABS(A)` | *P | `ABS` function restricted to scalar default integer.
`IACHAR(C)` | E | ASCII value for a character.
`IAND(I,J)` | E | Bitwise and.
`IBCLR(I,POS)` | E | Clear specified bit.
`IBITS(I,POS,LEN)` | E | Extract a group of bits.
`IBSET(I,POS)` | E | Set a bit.
`ICHAR(C)` | E | Native coded character set value for a character.
`IDIM(X,Y)` | *P | `DIM` function restricted to scalar default integer.
`IDINT(A)` | * | `INT` function restricted to scalar double precision.
`IDNINT(A)` | *P | `NINT` function restricted to scalar double precision.
`IEOR(I,J)` | E | Bitwise exclusive or.
`IFIX(A)` | * | `INT` function restricted to scalar default real.
`INDEX(STRING,SUBSTRING,BACK)` | EP | Search for substring.
`INT(A,KIND)` | E | Convert to integer.
`IOR(I,J)` | E | Bitwise inclusive or.
`ISHFT(I,SHIFT)` | E | Shift bits.
`ISHFTC(I,SHIFT,SIZE)` | E | Shift bits circularly.
`ISIGN(A,B)` | *P | `SIGN` function restricted to scalar default integer.
`KIND(X)` | I | Kind type parameter of `X`.
`LBOUND(ARRAY,DIM)` | I | Lower bound(s) of an array.
`LEN(STRING)` | IP | Length of a character string.
`LEN_TRIM(STRING)` | E | Length of a character string ignoring trailing blanks.
`LGE(STRING_A,STRING_B)` | E | Comparison (`>=`) using ASCII collating sequence.
`LGT(STRING_A,STRING_B)` | E | Comparison (`>`) using ASCII collating sequence.
`LLE(STRING_A,STRING_B)` | E | Comparison (`<=`) using ASCII collating sequence.
`LLT(STRING_A,STRING_B)` | E | Comparison (`<`) using ASCII collating sequence.
`LOG(X)` | EP | Natural logarithm.
`LOG10(X)` | EP | Common logarithm.
`LOGICAL(L,KIND)` | E | Convert to a specific logical kind.
`MATMUL(MATRIX_A,MATRIX_B)` |  | Matrix multiplication.
`MAX(A1,A2,A3,...)` | E | Maximum value.
`MAX0(A1,A2,A3,...)` | * | `MAX` function restricted to scalar default integer.
`MAX1(A1,A2,A3,...)` | * | `INT(MAX(A1,A2,A3,...))` with scalar default real args.
`MAXEXPONENT(X)` | I | Maximum model exponent value for `X`.
`MAXLOC(ARRAY,MASK)` |  | Position of maximum value in an array.
`MAXLOC(ARRAY,DIM,MASK)` |  | Dimensional reduction of maximum value positions.
`MAXVAL(ARRAY,MASK)` |  | Reduce a (masked) array with the `MAX` intrinsic.
`MAXVAL(ARRAY,DIM,MASK)` |  | Dimensional reduction by the `MAX` intrinsic.
`MERGE(TSOURCE,FSOURCE,MASK)` | E | Choose value depending on logical value.
`MIN(A1,A2,A3,...)` | E | Minimum value.
`MIN0(A1,A2,A3,...)` | * | `MIN` function restricted to scalar default integer.
`MIN1(A1,A2,A3,...)` | * | `INT(MIN(A1,A2,A3,...))` with scalar default real args.
`MINEXPONENT(X)` | I | Minimum model exponent value for `X`.
`MINLOC(ARRAY,MASK)` |  | Position of minimum value in an array.
`MINLOC(ARRAY,DIM,MASK)` |  | Dimensional reduction of minimum value positions.
`MINVAL(ARRAY,MASK)` |  | Reduce a (masked) array with the `MIN` intrinsic.
`MINVAL(ARRAY,DIM,MASK)` |  | Dimensional reduction by the `MIN` intrinsic.
`MOD(A,P)` | EP | Remainder; sign(result) = sign(`A`).
`MODULO(A,P)` | E | Modulo; sign(result) = sign(`P`).
`NEAREST(X,S)` | E | Nearest machine-representable number.
`NINT(A,KIND)` | EP | Round and convert to integer.
`NOT(I)` | E | Bitwise complement.
`NULL(MOLD)` |  | Null (disassociated) pointer.
`PACK(ARRAY,MASK,VECTOR)` |  | Pack an array into a vector.
`PRECISION(X)` | I | Decimal model precision for `X`.
`PRESENT(A)` | I | Whether an optional argument is present.
`PRODUCT(ARRAY,MASK)` |  | Reduce a (masked) array by multiplication.
`PRODUCT(ARRAY,DIM,MASK)` |  | Dimensional reduction by multiplication.
`RADIX(X)` | I | Model radix for `X`.
`RANGE(X)` | I | Decimal model exponent range for `X`.
`REAL(A,KIND)` | E | Convert to real.
`REPEAT(STRING,NCOPIES)` |  | Concatenate a string with itself.
`RESHAPE(SOURCE,SHAPE,PAD,ORDER)` |  | Reshape an array.
`RRSPACING(X)` | E | Reciprocal relative model spacing near `X`.
`SCALE(X,I)` | E | `X*RADIX(X)**I`.
`SCAN(STRING,SET,BACK)` | E | Look for characters in a set.
`SELECTED_INT_KIND(R)` |  | Integer kind with at least `R` decimal digits.
`SELECTED_REAL_KIND(P,R)` |  | Real kind with at least `P` decimal precision and/or
|  | at least `R` decimal exponent range.
`SET_EXPONENT(X,I)` | E | `X*RADIX(X)**(I-EXPONENT(X))`.
`SHAPE(SOURCE)` | I | Shape of an array.
`SIGN(A,B)` | EP | `A` with the sign of `B`.
`SIN(X)` | EP | Sine.
`SINH(X)` | EP | Hyperbolic sine.
`SIZE(ARRAY,DIM)` | I | Size of an array or dimension.
`SNGL(A)` | * | `REAL` function restricted to scalar double precision.
`SPACING(X)` | E | Spacing of model numbers near `X`.
`SPREAD(SOURCE,DIM,NCOPIES)` |  | Replicate an array in a given dimension by copying.
`SQRT(X)` | EP | Square root.
`SUM(ARRAY,MASK)` |  | Reduce a (masked) array by addition.
`SUM(ARRAY,DIM,MASK)` |  | Dimensional reduction of a (masked) array by addition.
`TAN(X)` | EP | Tangent.
`TANH(X)` | EP | Hyperbolic tangent.
`TINY(X)` | I | Smallest model number for the kind of `X`.
`TRANSFER(SOURCE,MOLD,SIZE)` |  | Copy internal representation.
`TRANSPOSE(MATRIX)` |  | Transpose an array.
`TRIM(STRING)` |  | Character string with trailing blanks removed.
`UBOUND(ARRAY,DIM)` | I | Upper bound(s) of an array.
`UNPACK(VECTOR,MASK,FIELD)` |  | Unpack a vector into an array.
`VERIFY(STRING,SET,BACK)` | E | Look for characters not in set.

### Intrinsic Subroutines

Subroutine Name | Flags | Description
`CPU_TIME(TIME)` |  | CPU execution time.
`DATE_AND_TIME(DATE,TIME,ZONE,VALUES)` |  | Date and time information.
`MVBITS(FROM,FROMPOS,LEN,TO,TOPOS)` | E | Move or copy bitfield.
`RANDOM_NUMBER(HARVEST)` |  | Return pseudo-random number(s).
`RANDOM_SEED(SIZE,PUT,GET)` |  | Control pseudo-random number generator.
`SYSTEM_CLOCK(COUNT,COUNT_RATE,COUNT_MAX)` |  | Real-time clock information.