fortran库参考.docx
《fortran库参考.docx》由会员分享,可在线阅读,更多相关《fortran库参考.docx(33页珍藏版)》请在冰点文库上搜索。
fortran库参考
第3章FORTRAN77和VMS内函数
本章列出了FORTRAN77f95接受的一系列内函数,旨在帮助将传统的FORTRAN77程序迁移至Fortran95。
在f95中,本章列出的所有FORTRAN77和VMS函数以及前一章列出的所有Fortran95函数都识别为内函数。
为了帮助从传统的FORTRAN77程序迁移至f95,使用-f77=intrinsics进行编译会让编译器只将FORTRAN77和VMS函数识别为内函数,但Fortran95函数不会识别为内函数。
属于Sun扩展的ANSIFORTRAN77标准的内函数标有¤符号。
使用非标准内函数和库函数的程序可能无法移植到其他平台。
内函数在接受多种数据类型的参数时,有通用名称和专用名称。
通常,通用名称返回与参数具有相同数据类型的值。
但也有一些例外,如类型转换函数(表3–2)和查询函数(表3–7)。
这些函数也可以通过函数的某个专用名称进行调用,以便处理专用参数数据类型。
对于处理多个数据项的函数(例如sign(a1,a2)),所有数据参数的类型必须相同。
下表按以下几方面列出FORTRAN77内函数:
内函数-描述函数的作用
定义-数学定义
参数数量-函数接受的参数的数量
通用名称-函数的通用名称
专用名称-函数的专用名称
参数类型-与每个专用名称关联的数据类型
函数类型-针对专用参数数据类型返回的数据类型
注–
编译器选项-xtypemap会更改变量的缺省大小,并且对内在引用产生影响。
请参见3.4备注以及《Fortran用户指南》中有关缺省大小和对齐方式的介绍。
3.1算术和数学函数
本节详细介绍算术函数、类型转换函数、三角函数以及其他函数。
“a”代表函数的单个参数,“a1”和“a2”代表两个参数函数的第一个参数和第二个参数,“ar”和“ai”代表函数的复数参数的实部和虚部。
3.1.1算术函数
表3–1Fortran77算术函数
内函数
定义
参数
数量
通用
名称
专用
名称
参数
类型
函数类型
绝对值
请参见注释(6)。
|a|=
(ar2+ai2)1/2
1
ABS
IABS
ABS
DABS
CABS
QABS¤
ZABS¤
CDABS¤
CQABS¤
INTEGER
REAL
DOUBLE
COMPLEX
REAL*16
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
INTEGER
REAL
DOUBLE
REAL
REAL*16
DOUBLE
DOUBLE
REAL*16
截断
请参见注释
(1)。
int(a)
1
AINT
AINT
DINT
QINT¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
最近的整数
如果a≥0,则为int(a+.5)
如果a<0,则为int(a-.5)
1
ANINT
ANINT
DNINT
QNINT¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
最近的整数
如果a≥0,则为int(a+.5)
如果a<0,则为int(a-.5)
1
NINT
NINT
IDNINT
IQNINT¤
REAL
DOUBLE
REAL*16
INTEGER
INTEGER
INTEGER
余数
请参见注释
(1)。
a1-int(a1/a2)*a2
2
MOD
MOD
AMOD
DMOD
QMOD¤
INTEGER
REAL
DOUBLE
REAL*16
INTEGER
REAL
DOUBLE
REAL*16
符号传输
如果a2≥0,则为|a1|
如果a2<0,则为-|a1|
2
SIGN
ISIGN
SIGN
DSIGN
QSIGN¤
INTEGER
REAL
DOUBLE
REAL*16
INTEGER
REAL
DOUBLE
REAL*16
正偏差
如果a1>a2,则为a1-a2
如果a1≤a2,则为0
2
DIM
IDIM
DIM
DDIM
QDIM¤
INTEGER
REAL
DOUBLE
REAL*16
INTEGER
REAL
DOUBLE
REAL*16
两倍和四倍乘积
a1*a2
2
-
DPROD
QPROD¤
REAL
DOUBLE
DOUBLE
REAL*16
选择最大的值
max(a1,a2,…)
≥2
MAX
MAX0
AMAX1
DMAX1
QMAX1¤
INTEGER
REAL
DOUBLE
REAL*16
INTEGER
REAL
DOUBLE
REAL*16
AMAX0
AMAX0
INTEGER
REAL
MAX1
MAX1
REAL
INTEGER
选择最小的值
min(a1,a2,…)
≥2
MIN
MIN0
AMIN1
DMIN1
QMIN1¤
INTEGER
REAL
DOUBLE
REAL*16
INTEGER
REAL
DOUBLE
REAL*16
AMIN0
AMIN0
INTEGER
REAL
MIN1
MIN1
REAL
INTEGER
3.1.2类型转换函数
表3–2Fortran77类型转换函数
转换为
参数数量
通用名称
专用
名称
参数类型
函数类型
INTEGER
请参见注释
(1)。
1
INT
-
INT
IFIX
IDINT
-
-
-
IQINT¤
INTEGER
REAL
REAL
DOUBLE
COMPLEX
COMPLEX*16
COMPLEX*32
REAL*16
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
REAL
请参见注释
(2)。
1
REAL
REAL
FLOAT
-
SNGL
SNGLQ¤
-
-
-
FLOATK
INTEGER
INTEGER
REAL
DOUBLE
REAL*16
COMPLEX
COMPLEX*16
COMPLEX*32
INTEGER*8
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL*4
DOUBLE
请参见注释(3)。
1
DBLE
DBLE
DFLOAT
DFLOATK
DREAL¤
-
-
-
-
-
DBLEQ¤-
INTEGER
INTEGER
INTEGER*8
REAL
DOUBLE
COMPLEX
COMPLEX*16
REAL*16
COMPLEX*32REAL*16COMPLEX*32
DOUBLEPRECISION
DOUBLEPRECISION
DOUBLEPRECISION
DOUBLEPRECISION
DOUBLEPRECISION
DOUBLEPRECISION
DOUBLEPRECISION
DOUBLEPRECISION
DOUBLEPRECISIONDOUBLEPRECISION
DOUBLEPRECISION
REAL*16
请参见注释(3’)。
1
QREAL¤
QEXT¤
QREAL¤
QFLOAT¤
-
QEXT¤
QEXTD¤
-
-
-
-
INTEGER
INTEGER
REAL
INTEGER
DOUBLE
REAL*16
COMPLEX
COMPLEX*16
COMPLEX*32
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
COMPLEX
请参见注释(4)和(8)。
1个或2个
CMPLX
-
-
-
-
-
-
-
INTEGER
REAL
DOUBLE
REAL*16
COMPLEX
COMPLEX*16
COMPLEX*32
COMPLEX
COMPLEX
COMPLEX
COMPLEX
COMPLEX
COMPLEX
COMPLEX
DOUBLECOMPLEX
请参见注释(8)。
1个或2个
DCMPLX@
-
-
-
-
-
-
-
INTEGER
REAL
DOUBLE
REAL*16
COMPLEX
COMPLEX*16
COMPLEX*32
DOUBLECOMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
请参见注释(8)。
1个或2个
QCMPLX@
-
-
-
-
-
-
-
INTEGER
REAL
DOUBLE
REAL*16
COMPLEX
COMPLEX*16
COMPLEX*32
COMPLEX*32
COMPLEX*32
COMPLEX*32
COMPLEX*32
COMPLEX*32
COMPLEX*32
COMPLEX*32
INTEGER
请参见注释(5)。
1
-
-
ICHAR
IACHAR¤
CHARACTER
INTEGER
CHARACTER
请参见注释(5)。
1
-
-
CHAR
ACHAR¤
INTEGER
CHARACTER
在ASCII平台上(包括Sun系统):
ACHAR是CHAR的非标准同义词
IACHAR是ICHAR的非标准同义词
在非ASCII平台上,ACHAR和IACHAR专门用于提供一种直接处理ASCII的方法。
3.1.3三角函数
表3–3Fortran77三角函数
内函数
定义
参数数量
通用名称
专用
名称
参数类型
函数类型
正弦
请参见注释(7)。
sin(a)
1
SIN
SIN
DSIN
QSIN¤
CSIN
ZSIN¤
CDSIN¤
CQSIN¤
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
正弦(度数)
请参见注释(7)。
sin(a)
1
SIND¤
SIND¤
DSIND¤
QSIND¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
余弦
请参见注释(7)。
cos(a)
1
COS
COS
DCOS
QCOS¤
CCOS
ZCOS¤
CDCOS¤
CQCOS¤
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
余弦(度数)
请参见注释(7)。
cos(a)
1
COSD¤
COSD¤
DCOSD¤
QCOSD¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
正切
请参见注释(7)。
tan(a)
1
TAN
TAN
DTAN
QTAN¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
正切(度数)
请参见注释(7)。
tan(a)
1
TAND¤
TAND¤
DTAND¤
QTAND¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
反正弦
请参见注释(7)。
arcsin(a)
1
ASIN
ASIN
DASIN
QASIN¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
反正弦(度数)
请参见注释(7)。
arcsin(a)
1
ASIND¤
ASIND¤
DASIND¤
QASIND¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
反余弦
请参见注释(7)。
arccos(a)
1
ACOS
ACOS
DACOS
QACOS¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
反余弦(度数)
请参见注释(7)。
arccos(a)
1
ACOSD¤
ACOSD¤
DACOSD¤
QACOSD¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
反正切
请参见注释(7)。
arctan(a)
1
ATAN
ATAN
DATAN
QATAN¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
arctan
(a1/a2)
2
ATAN2
ATAN2
DATAN2
QATAN2¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
反正切(度数)
请参见注释(7)。
arctan(a)
1
ATAND¤
ATAND¤
DATAND¤
QATAND¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
arctan
(a1/a2)
2
ATAN2D¤
ATAN2D¤
DATAN2D¤
QATAN2D¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
双曲正弦
请参见注释(7)。
sinh(a)
1
SINH
SINH
DSINH
QSINH¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
双曲余弦
请参见注释(7)。
cosh(a)
1
COSH
COSH
DCOSH
QCOSH¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
双曲正切
请参见注释(7)。
tanh(a)
1
TANH
TANH
DTANH
QTANH¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
3.1.4其他数学函数
表3–4其他Fortran77数学函数
内函数
定义
参数数量
通用名称
专用名称
参数类型
函数类型
复数的虚部
请参见注释(6)。
ai
1
IMAG
AIMAG
DIMAG¤
QIMAG¤
COMPLEX
DOUBLECOMPLEX
COMPLEX*32
REAL
DOUBLE
REAL*16
共轭复数
请参见注释(6)。
(ar,-ai)
1
CONJG
CONJG
DCONJG¤
QCONJG¤
COMPLEX
DOUBLECOMPLEX
COMPLEX*32
COMPLEX
DOUBLECOMPLEX
COMPLEX*32
平方根
a**(1/2)
1
SQRT
SQRT
DSQRT
QSQRT¤
CSQRT
ZSQRT¤
CDSQRT¤
CQSQRT¤
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
立方根
请参见注释(8’)。
a**(1/3)
1
CBRT
CBRT¤
DCBRT¤
QCBRT¤
CCBRT¤
ZCBRT¤
CDCBRT¤
CQCBRT¤
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
指数
e**a
1
EXP
EXP
DEXP
QEXP¤
CEXP
ZEXP¤
CDEXP¤
CQEXP¤
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
自然对数
log(a)
1
LOG
ALOG
DLOG
QLOG¤
CLOG
ZLOG¤
CDLOG¤
CQLOG¤
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
REAL
DOUBLE
REAL*16
COMPLEX
DOUBLECOMPLEX
DOUBLECOMPLEX
COMPLEX*32
常用对数
log10(a)
1
LOG10
ALOG10
DLOG10
QLOG10¤
REAL
DOUBLE
REAL*16
REAL
DOUBLE
REAL*16
误差函数
(请参见下面的注释)
erf(a)
1
ERF
ERF¤
DERF¤
REAL
DOUBLE
REAL
DOUBLE
误差函数
1.0-erf(a)
1
ERFC
ERFC¤
DERFC¤
REAL
DOUBLE
REAL
DOUBLE
误差函数:
exp(-t*t)dt从0到a的2/sqrt(pi)x整数
3.2字符函数
表3–5Fortran77字符函数
内函数
定义
参数数量
专用
名称
参数类型
函数类型
转换
请参见注释(5)。
转换为字符
转换为整数
另请参见:
表3–2。
1
1
CHAR
ACHAR¤
ICHAR
IACHAR¤
INTEGER
CHARACTER
CHARACTER
INTEGER
子串的索引
字符串a1中子串a2的位置
请参见注释(10)。
2
INDEX
CHARACTER
INTEGER
长度
字符实体的长度
请参见注释(11)。
1
LEN
CHARACTER
INTEGER
词法上大于或等于
a1≥a2
请参见注释(12)。
2
LGE
CHARACTER
LOGICAL
词法上大于
a1>a2
请参见注释(12)。
2
LGT
CHARACTER
LOGICAL
词法上小于或等于
a1≤a2
请参见注释(12)。
2
LLE
CHARACTER
LOGICAL
词法上小于
a1请参见注释(12)。
2
LLT
CHARACTER
LOGICAL
在ASCII平台上(包括Sun系统):
ACHAR是CHAR的非标准同义词
IACHAR是ICHAR的非标准同义词
在非ASCII平台上,ACHAR和IACHAR专门用于提供一种直接处理ASCII的方法。
3.3其他函数
其他一些函数包括按位函数、环境查询函数以及内存分配和解除分配函数。
3.3.1位操作
这些函数都不属于FORTRAN77标准。
表3–6Fortran77按位操作函数
按位操作
参数数量
专用名称
参数类型
函数类型
补
1
NOT
INTEGER
INTEGER
与
22
ANDIAND