符号约定:
l I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。
l s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。
l […]表示可选参数。
l *表示常用函数。
表1 数值和类型转换函数
函数名 |
说明 |
ABS(x)* |
求x的绝对值∣x∣。x:I、R, 结果类型同x; x:C, 结果:R |
AIMAG(x) |
求x的实部。x:C, 结果:R |
AINT(x[,kind])* |
对x取整,并转换为实数(kind)。x:R, kind:I, 结果:R(kind) |
AMAX0(x1,x2,x3,…)* |
求x1,x2,x3,…中最大值。xI:I, 结果:R |
AMIN0(x1,x2,x3,…)* |
求x1,x2,x3,…中最小值。xI:I, 结果:R |
ANINT(x[,kind])* |
对x四舍五入取整,并转换为实数(kind)。x:R, kind:I, 结果:R(kind) |
CEILING(x)* |
求大于等于x的最小整数。x:R, 结果:I |
CMPLX(x[,y][,kind])) |
将参数转换为x、(x,0.0)或(x,y)。x:I、R、C, y:I、R,kind:I, 结果:C(kind) |
CONJG(x) |
求x的共轭复数。x:C, 结果:C |
DBLE(x)* |
将x转换为双精度实数。x:I、R、C, 结果:R(8) |
DCMPLX(x[,y]) |
将参数转换为x、(x,0.0)或(x,y)。x:I、R、C, y:I、R, 结果:C(8) |
DFLOAT(x) |
将x转换为双精度实数。x:I, 结果:R(8) |
DIM(x,y)* |
求x-y和0中最大值, 即MAX(x-y,0)。x:I、R, y的类型同x,结果类型同x |
DPROD(x,y) |
求x和y的乘积,并转换为双精度实数。x:R, y:R, 结果:R(8) |
FLOAT(x)* |
将x转换为单精度实数。x:I, 结果:R |
FLOOR(x)* |
求小于等于x的最大整数。x:R, 结果:I |
IFIX(x)* |
将x转换为整数(取整)。x:R, 结果:I |
IMAG(x) |
同AIMAG(x) |
INT(x[,kind])* |
将x转换为整数(取整)。x:I、R、C, kind:I, 结果:I(kind) |
LOGICAL(x[,kind])* |
按kind值转换新逻辑值。x:L, 结果:L(kind) |
MAX(x1,x2,x3,…)* |
求x1,x2,x3,…中最大值。xI为任意类型, 结果类型同xI |
MAX1(x1,x2,x3,…)* |
求x1,x2,x3,…中最大值(取整)。xI:R, 结果:I |
MIN(x1,x2,x3,…)* |
求x1,x2,x3,…中最小值。xI为任意类型, 结果类型同xI |
MIN1(x1,x2,x3,…)* |
求x1,x2,x3…中最小值(取整)。xI:R, 结果:I |
MOD(x,y)* |
求x/y的余数,值为x-INT(x/y)*y。x:I、R, y的类型同x, 结果类型同x |
MODULO(x,y) |
求x/y余数,值为x-FLOOR(x/y)*y。x:I、R, y的类型同x, 结果类型同x |
NINT(x[,kind])* |
将x转换为整数(四舍五入)。x:R, kind:I, 结果:I(kind) |
REAL(x[,kind])* |
将x转换为实数。x:I、R、C, kind:I, 结果:R(kind) |
SIGN(x,y)* |
求x的绝对值乘以y的符号。x:I、R, y的类型同x, 结果类型同x |
SNGL(x) |
将双精度实数转换为单精度实数。x:R(8), 结果:R |
ZEXT(x) |
用0向左侧扩展x。x:I、L, 结果:I |
表2 三角函数
函数名 |
说明 |
ACOS(x)* |
求x的反余弦arccos(x)。x:R,结果类型同x,结果值域:0~π |
ACOSD(x)* |
求x的反余弦arccos(x)。x:R,结果类型同x,结果值域:0~180° |
ASIN(x)* |
求x的反正弦arcsin(x)。x:R,结果类型同x,结果为弧度,值域:0~π |
ASIND(x)* |
求x的反正弦arcsin(x)。x:R,结果类型同x,结果为度,值域:0~180° |
ATAN(x)* |
求x的反正切arctg(x)。x:R,结果类型同x,结果为弧度,值域:-π/2~π/2 |
ATAND(x)* |
求x的反正切arctg(x)。x:R,结果类型同x,结果为度,值域:-90~90° |
ATAN2(y,x) |
求x的反正切arctg(y/x)。y:R,x和结果类型同x,结果值域:-π~π |
ATAN2D(y,x) |
求x的反正切arctg(y/x)。y:R,x和结果类型同x,结果值域:-180~180° |
COS(x)* |
求x的余弦cos(x)。x:R、C,x取值弧度,结果类型同x |
COSD(x)* |
求x的余弦cos(x)。x:R,x取值度,结果类型同x |
COSH(x) |
求x的双曲余弦ch(x)。x:R,结果类型同x |
COTAN(x)* |
求x的余切ctg(x)。x:R,x取值度,结果类型同x |
SIN(x)* |
求x的正弦sin(x)。x:R、C,x取值弧度,结果类型同x |
SIND(x)* |
求x的正弦sin(x)。x:R,x取值度,结果类型同x |
SINH(x) |
求x的双曲正弦sh(x)。x:R,结果类型同x |
TAN(x)* |
求x的正切tg(x)。x:R,x取值弧度,结果类型同x |
TAND(x)* |
求x的正切tg(x)。x:R,x取值度,结果类型同x |
TANH(x) |
求x的双曲正切th(x)。x:R,结果类型同x |
注:三角函数名前有C、D的函数为复数、双精度型函数。
表3 指数、平方根和对数函数
函数名 |
说明 |
ALOG(x) |
求x的自然对数ln(x)。x:R(4),结果:R(4) |
ALOG10(x) |
求x以10为底一般对数log10(x)。x:R(4),结果:R(4) |
EXP(x)* |
求指数,即ex。x:R、C,结果类型同x |
LOG(x)* |
求自然对数,即ex。x:R、C,结果类型同x |
LOG10(x)* |
求以10为底对数,即。x:R,结果类型同x |
SQRT(x)* |
求x的平方根。x:R、C,结果类型同x |
注:指数函数名、平方根函数名、对数函数名前有C、D的函数为复数、双精度型函数。
表4 参数查询函数
函数名 |
说明 |
ALLOCATED(a)* |
判定动态数组a是否分配内存。a:A,结果:L,分配:.TRUE.,未分配:.FALSE. |
ASSOCIATED(p[,t])* |
判定指针p是否指向目标t。p:P,t:AT,结果:L,指向:.TRUE.,未指向:.FALSE. |
DIGITS(x) |
查询x的机内编码数值部分二进制位数(除符号位和指数位)。x:I、R,结果:I |
EPSILON(x)* |
查询x类型可表示的最小正实数。x:R,结果类型同x。最小正实数:1.1920929E-07 |
HUGE(x)* |
查询x类型可表示的最大数。x:I、R,结果类型同x |
ILEN(x) |
查询x的反码值。x:I,结果类型同x |
KIND(x)* |
查询x的kind参数值。x:I、R、C、CH、L,结果:I |
MAXEXPONENT(x)* |
查询x的最大正指数值。x:R,结果:I(4) |
MINEXPONENT(x)* |
查询x的最大负指数值。x:R,结果:I(4) |
PRECISION(x)* |
查询x类型有效数字位数。x:R、C,结果:I(4) |
PRESENT(x) |
查询可选形参x是否有对应实参。x:AT,结果:L。有:.TRUE.,没有:.FALSE. |
RADIX(x) |
查询x类型的基数。x:I、R,结果:L |
RANGE(x)* |
查询x类型的指数范围。x:I、R、C,结果:I(4) |
SIZEOF(x)* |
查询x的存储分配字节数。x:AT,结果:I(4) |
TINY(x)* |
查询x的最小正值。x:R,结果类型同x |
表5 实数检测和控制函数
函数名 |
说明 |
EXPONENT(x)* |
求实数x机内编码表示的指数值。x:R,结果:I |
FRACTION(x)* |
求实数x机内编码表示的小数值。x:R,结果类型同x |
NEAREST(x,s) |
根据s的正负号求最接近x的值。x:R,结果:R,且不为0 |
RRSPACING(x) |
求x与系统最大数之间的差值。x:R,结果类型同x |
SCALE(x,I)* |
求x乘以2i。x:R,i:I,结果类型同x |
SET_EXPONENT(x,i) |
求由x的机内编码小数值与指数i组成的实数。x:R,i:I,结果类型同x |
SPACING(x)* |
求x与x最近值的差值绝对值。x:R,结果类型同x |