本节列出了 f95 可以识别的 VMS FORTRAN 内例程。当然,它们不是标准的例程。¤
通用名称 |
专用名称 |
功能 |
参数类型 |
结果类型 |
---|---|---|---|---|
|
CDABS CDEXP CDLOG CDSQRT |
绝对值 指数,e**a 自然对数 平方根 |
COMPLEX*16 COMPLEX*16 COMPLEX*16 COMPLEX*16 |
REAL*8 COMPLEX*16 COMPLEX*16 COMPLEX*16 |
|
CDSIN CDCOS |
正弦 余弦 |
COMPLEX*16 COMPLEX*16 |
COMPLEX*16 COMPLEX*16 |
DCMPLX |
DCONJG DIMAG DREAL |
转换为 DOUBLE COMPLEX 复数共轭 复数的虚部 复数的实部 |
任意数值 COMPLEX*16 COMPLEX*16 COMPLEX*16 |
COMPLEX*16 COMPLEX*16 REAL*8 REAL*8 |
通用名称 |
专用名称 |
功能 |
参数类型 |
结果类型 |
---|---|---|---|---|
SIND |
SIND DSIND QSIND |
正弦 |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
COSD |
COSD DCOSD QCOSD |
余弦 |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
TAND |
TAND DTAND QTAND |
正切 |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
ASIND |
ASIND DASIND QASIND |
反正弦 |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
ACOSD |
ACOSD DACOSD QACOSD |
反余弦 |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
ATAND |
ATAND DATAND QATAND |
反正切 |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
ATAN2D |
ATAN2D DATAN2D QATAN2D |
a1/a2 的反正切 |
- REAL*4 REAL*8 REAL*16 |
- REAL*4 REAL*8 REAL*16 |
通用名称 |
专用名称 |
功能 |
参数类型 |
结果类型 |
---|---|---|---|---|
IBITS |
IIBITS JIBITS KIBITS |
从 a1 中初始位 a2 提取 a3 个位 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
ISHFT |
IISHFT JISHFT KISHFT |
将 a1 逻辑移动 a2 个位;如果 a2 是正数,则向左移动;如果 a2 是负数,则向右移动 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
ISHFTC |
IISHFTC JISHFTC |
在 a1 中,将右边的 a3 个位循环移动 a2 个位置 |
- INTEGER*2 INTEGER*4 |
- INTEGER*2 INTEGER*4 |
IAND |
IIAND JIAND |
a1、a2 的按位 AND |
- INTEGER*2 INTEGER*4 |
- INTEGER*2 INTEGER*4 |
IOR |
IIOR JIOR KIOR |
a1、a2 的按位 OR |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
IEOR |
IIEOR JIEOR KIEOR |
a1、a2 的按位互斥 OR |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
NOT |
INOT JNOT KNOT |
按位补充 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
IBSET |
IIBSET JIBSET KIBSET |
在 a1 中,将位 a2 设置为 1;返回新的 a1 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
BTEST |
BITEST BJTEST BKTEST |
如果 a1 的位 a2 为 1,则返回 .TRUE. |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- LOGICAL LOGICAL LOGICAL |
IBCLR |
IIBCLR JIBCLR KIBCLR |
在 a1 中,将位 a2 设置为 0;返回新的 a1 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
- INTEGER*2 INTEGER*4 INTEGER*8 |
Fortran 标准没有解决可能出现的多个整数类型问题。编译器通过将专用的 INTEGER-to-INTEGER 函数名(IABS 等)视为一种特殊的通用名称,来处理出现的多个整数类型。可以使用参数类型选择相应的运行时例程名称,而程序员无法访问该名称。
VMS Fortran 采用了类似的方法,但是可以使用专用名称。
表 3–12 VMS 整数函数
专用名称 |
功能 |
参数类型 |
结果类型 |
---|---|---|---|
IIABS JIABS KIABS |
绝对值 |
INTEGER*2 INTEGER*4 INTEGER*8 |
INTEGER*2 INTEGER*4 INTEGER*8 |
IMAX0 JMAX0 |
最大值 |
INTEGER*2 INTEGER*4 |
INTEGER*2 INTEGER*4 |
IMIN0 JMIN0 |
最小值 |
INTEGER*2 INTEGER*4 |
INTEGER*2 INTEGER*4 |
IIDIM JIDIM KIDIM |
正偏差 |
INTEGER*2 INTEGER*4 INTEGER*8 |
INTEGER*2 INTEGER*4 INTEGER*8 |
IMOD JMOD |
a1/a2 的余数 |
INTEGER*2 INTEGER*4 |
INTEGER*2 INTEGER*4 |
IISIGN JISIGN KISIGN |
符号传输,|a1|* sign(a2) |
INTEGER*2 INTEGER*4 INTEGER*8 |
INTEGER*2 INTEGER*4 INTEGER*8 |