This section lists VMS FORTRAN intrinsic routines recognized by f95. They are, of course, nonstandard. ¤
|
Generic Name |
Specific Names |
Function |
Argument Type |
Result Type |
|---|---|---|---|---|
|
|
CDABS CDEXP CDLOG CDSQRT |
Absolute value Exponential, e**a Natural log Square root |
COMPLEX*16 COMPLEX*16 COMPLEX*16 COMPLEX*16 |
REAL*8 COMPLEX*16 COMPLEX*16 COMPLEX*16 |
|
|
CDSIN CDCOS |
Sine Cosine |
COMPLEX*16 COMPLEX*16 |
COMPLEX*16 COMPLEX*16 |
|
DCMPLX |
DCONJG DIMAG DREAL |
Convert to DOUBLE COMPLEX Complex conjugate Imaginary part of complex Real part of complex |
Any numeric COMPLEX*16 COMPLEX*16 COMPLEX*16 |
COMPLEX*16 COMPLEX*16 REAL*8 REAL*8 |
|
Generic Name |
Specific Names |
Function |
Argument Type |
Result Type |
|---|---|---|---|---|
|
SIND |
SIND DSIND QSIND |
Sine |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
|
COSD |
COSD DCOSD QCOSD |
Cosine |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
|
TAND |
TAND DTAND QTAND |
Tangent |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
|
ASIND |
ASIND DASIND QASIND |
Arc sine |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
|
ACOSD |
ACOSD DACOSD QACOSD |
Arc cosine |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
|
ATAND |
ATAND DATAND QATAND |
Arc tangent |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
|
ATAN2D |
ATAN2D DATAN2D QATAN2D |
Arc tangent of a1/a2 |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
|
Generic Name |
Specific Names |
Function |
Argument Type |
Result Type |
|---|---|---|---|---|
|
IBITS |
IIBITS JIBITS KIBITS |
From a1, initial bit a2, extract a3 bits |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
|
ISHFT |
IISHFT JISHFT KISHFT |
Shift a1 logically by a2 bits; if a2 positive shift left, if a2 negative shift right |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
|
ISHFTC |
IISHFTC JISHFTC |
In a1, circular shift by a2 places, of right a3 bits |
- INTEGER*2 INTEGER*4 |
- INTEGER*2 INTEGER*4 |
|
IAND |
IIAND JIAND |
Bitwise AND of a1, a2 |
- INTEGER*2 INTEGER*4 |
- INTEGER*2 INTEGER*4 |
|
IOR |
IIOR JIOR KIOR |
Bitwise OR of a1, a2 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
|
IEOR |
IIEOR JIEOR KIEOR |
Bitwise exclusive OR of a1, a2 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
|
NOT |
INOT JNOT KNOT |
Bitwise complement |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
|
IBSET |
IIBSET JIBSET KIBSET |
In a1, set bit a2 to 1; return new a1 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
|
BTEST |
BITEST BJTEST BKTEST |
If bit a2 of a1 is 1, return .TRUE. |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- LOGICAL LOGICAL LOGICAL |
|
IBCLR |
IIBCLR JIBCLR KIBCLR |
In a1, set bit a2 to 0; return new a1 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
The possibility of multiple integer types is not addressed by the Fortran Standard. The compiler copes with their existence by treating a specific INTEGER-to-INTEGER function name (IABS, and so forth) as a special sort of generic. The argument type is used to select the appropriate runtime routine name, which is not accessible to the programmer.
VMS Fortran takes a similar approach, but makes the specific names available.
Table 3–12 VMS Integer Functions|
Specific Names |
Function |
Argument Type |
Result Type |
|---|---|---|---|
|
IIABS JIABS KIABS |
Absolute value |
INTEGER*2 INTEGER*4 INTEGER*8 |
INTEGER*2 INTEGER*4 INTEGER*8 |
|
IMAX0 JMAX0 |
Maximum |
INTEGER*2 INTEGER*4 |
INTEGER*2 INTEGER*4 |
|
IMIN0 JMIN0 |
Minimum |
INTEGER*2 INTEGER*4 |
INTEGER*2 INTEGER*4 |
|
IIDIM JIDIM KIDIM |
Positive difference |
INTEGER*2 INTEGER*4 INTEGER*8 |
INTEGER*2 INTEGER*4 INTEGER*8 |
|
IMOD JMOD |
Remainder of a1/a2 |
INTEGER*2 INTEGER*4 |
INTEGER*2 INTEGER*4 |
|
IISIGN JISIGN KISIGN |
Transfer of sign, |a1|* sign(a2) |
INTEGER*2 INTEGER*4 INTEGER*8 |
INTEGER*2 INTEGER*4 INTEGER*8 |