Intrinsic functions are some common and important functions that are provided as a part of the Fortran language. We have already discussed some of these functions in the Arrays, Characters and String chapters.
Intrinsic functions can be categorised as −
We have discussed the array functions in the Arrays chapter. In the following section we provide brief descriptions of all these functions from other categories.
In the function name column,
Sr.No | Function & Description |
---|---|
1 | ABS (A) It returns the absolute value of A |
2 | AIMAG (Z) It returns the imaginary part of a complex number Z |
3 | AINT (A [, KIND]) It truncates fractional part of A towards zero, returning a real, whole number. |
4 | ANINT (A [, KIND]) It returns a real value, the nearest integer or whole number. |
5 | CEILING (A [, KIND]) It returns the least integer greater than or equal to number A. |
6 | CMPLX (X [, Y, KIND]) It converts the real variables X and Y to a complex number X+iY; if Y is absent, 0 is used. |
7 | CONJG (Z) It returns the complex conjugate of any complex number Z. |
8 | DBLE (A) It converts A to a double precision real number. |
9 | DIM (X, Y) It returns the positive difference of X and Y. |
10 | DPROD (X, Y) It returns the double precision real product of X and Y. |
11 | FLOOR (A [, KIND]) It provides the greatest integer less than or equal to number A. |
12 | INT (A [, KIND]) It converts a number (real or integer) to integer, truncating the real part towards zero. |
13 | MAX (A1, A2 [, A3,...]) It returns the maximum value from the arguments, all being of same type. |
14 | MIN (A1, A2 [, A3,...]) It returns the minimum value from the arguments, all being of same type. |
15 | MOD (A, P) It returns the remainder of A on division by P, both arguments being of the same type (A-INT(A/P)*P) |
16 | MODULO (A, P) It returns A modulo P: (A-FLOOR(A/P)*P) |
17 | NINT (A [, KIND]) It returns the nearest integer of number A |
18 | REAL (A [, KIND]) It Converts to real type |
19 | SIGN (A, B) It returns the absolute value of A multiplied by the sign of P. Basically it transfers the of sign of B to A. |
program numericFunctions implicit none ! define constants ! define variables real :: a, b complex :: z ! values for a, b a = 15.2345 b = -20.7689 write(*,*) 'abs(a): ',abs(a),' abs(b): ',abs(b) write(*,*) 'aint(a): ',aint(a),' aint(b): ',aint(b) write(*,*) 'ceiling(a): ',ceiling(a),' ceiling(b): ',ceiling(b) write(*,*) 'floor(a): ',floor(a),' floor(b): ',floor(b) z = cmplx(a, b) write(*,*) 'z: ',z end program numericFunctions
When you compile and execute the above program, it produces the following result −
abs(a): 15.2344999 abs(b): 20.7688999 aint(a): 15.0000000 aint(b): -20.0000000 ceiling(a): 16 ceiling(b): -20 floor(a): 15 floor(b): -21 z: (15.2344999, -20.7688999)
Sr.No | Function & Description |
---|---|
1 | ACOS (X) It returns the inverse cosine in the range (0, π), in radians. |
2 | ASIN (X) It returns the inverse sine in the range (-π/2, π/2), in radians. |
3 | ATAN (X) It returns the inverse tangent in the range (-π/2, π/2), in radians. |
4 | ATAN2 (Y, X) It returns the inverse tangent in the range (-π, π), in radians. |
5 | COS (X) It returns the cosine of argument in radians. |
6 | COSH (X) It returns the hyperbolic cosine of argument in radians. |
7 | EXP (X) It returns the exponential value of X. |
8 | LOG (X) It returns the natural logarithmic value of X. |
9 | LOG10 (X) It returns the common logarithmic (base 10) value of X. |
10 | SIN (X) It returns the sine of argument in radians. |
11 | SINH (X) It returns the hyperbolic sine of argument in radians. |
12 | SQRT (X) It returns square root of X. |
13 | TAN (X) It returns the tangent of argument in radians. |
14 | TANH (X) It returns the hyperbolic tangent of argument in radians. |
The following program computes the horizontal and vertical position x and y respectively of a projectile after a time, t −
Where, x = u t cos a and y = u t sin a - g t2 / 2
program projectileMotion implicit none ! define constants real, parameter :: g = 9.8 real, parameter :: pi = 3.1415927 !define variables real :: a, t, u, x, y !values for a, t, and u a = 45.0 t = 20.0 u = 10.0 ! convert angle to radians a = a * pi / 180.0 x = u * cos(a) * t y = u * sin(a) * t - 0.5 * g * t * t write(*,*) 'x: ',x,' y: ',y end program projectileMotion
When you compile and execute the above program, it produces the following result −
x: 141.421356 y: -1818.57861
These functions work with a certain model of integer and floating-point arithmetic. The functions return properties of numbers of the same kind as the variable X, which can be real and in some cases integer.
Sr.No | Function & Description |
---|---|
1 | DIGITS (X) It returns the number of significant digits of the model. |
2 | EPSILON (X) It returns the number that is almost negligible compared to one. In other words, it returns the smallest value such that REAL( 1.0, KIND(X)) + EPSILON(X) is not equal to REAL( 1.0, KIND(X)). |
3 | HUGE (X) It returns the largest number of the model |
4 | MAXEXPONENT (X) It returns the maximum exponent of the model |
5 | MINEXPONENT (X) It returns the minimum exponent of the model |
6 | PRECISION (X) It returns the decimal precision |
7 | RADIX (X) It returns the base of the model |
8 | RANGE (X) It returns the decimal exponent range |
9 | TINY (X) It returns the smallest positive number of the model |
Sr.No | Function & Description |
---|---|
1 | EXPONENT (X) It returns the exponent part of a model number |
2 | FRACTION (X) It returns the fractional part of a number |
3 | NEAREST (X, S) It returns the nearest different processor number in given direction |
4 | RRSPACING (X) It returns the reciprocal of the relative spacing of model numbers near given number |
5 | SCALE (X, I) It multiplies a real by its base to an integer power |
6 | SET_EXPONENT (X, I) it returns the exponent part of a number |
7 | SPACING (X) It returns the absolute spacing of model numbers near given number |
Sr.No | Function & Description |
---|---|
1 | BIT_SIZE (I) It returns the number of bits of the model |
2 | BTEST (I, POS) Bit testing |
3 | IAND (I, J) Logical AND |
4 | IBCLR (I, POS) Clear bit |
5 | IBITS (I, POS, LEN) Bit extraction |
6 | IBSET (I, POS) Set bit |
7 | IEOR (I, J) Exclusive OR |
8 | IOR (I, J) Inclusive OR |
9 | ISHFT (I, SHIFT) Logical shift |
10 | ISHFTC (I, SHIFT [, SIZE]) Circular shift |
11 | NOT (I) Logical complement |
Sr.No | Function & Description |
---|---|
1 | ACHAR (I) It returns the Ith character in the ASCII collating sequence. |
2 | ADJUSTL (STRING) It adjusts string left by removing any leading blanks and inserting trailing blanks |
3 | ADJUSTR (STRING) It adjusts string right by removing trailing blanks and inserting leading blanks. |
4 | CHAR (I [, KIND]) It returns the Ith character in the machine specific collating sequence |
5 | IACHAR (C) It returns the position of the character in the ASCII collating sequence. |
6 | ICHAR (C) It returns the position of the character in the machine (processor) specific collating sequence. |
7 | INDEX (STRING, SUBSTRING [, BACK]) It returns the leftmost (rightmost if BACK is .TRUE.) starting position of SUBSTRING within STRING. |
8 | LEN (STRING) It returns the length of a string. |
9 | LEN_TRIM (STRING) It returns the length of a string without trailing blank characters. |
10 | LGE (STRING_A, STRING_B) Lexically greater than or equal |
11 | LGT (STRING_A, STRING_B) Lexically greater than |
12 | LLE (STRING_A, STRING_B) Lexically less than or equal |
13 | LLT (STRING_A, STRING_B) Lexically less than |
14 | REPEAT (STRING, NCOPIES) Repeated concatenation |
15 | SCAN (STRING, SET [, BACK]) It returns the index of the leftmost (rightmost if BACK is .TRUE.) character of STRING that belong to SET, or 0 if none belong. |
16 | TRIM (STRING) Removes trailing blank characters |
17 | VERIFY (STRING, SET [, BACK]) Verifies the set of characters in a string |
Sr.No | Function & Description |
---|---|
1 | KIND (X) It returns the kind type parameter value. |
2 | SELECTED_INT_KIND (R) It returns kind of type parameter for specified exponent range. |
3 | SELECTED_REAL_KIND ([P, R]) Real kind type parameter value, given precision and range |
Sr.No | Function & Description |
---|---|
1 | LOGICAL (L [, KIND]) Convert between objects of type logical with different kind type parameters |