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 |