当前位置:文档之家› FORTRAN内部函数库

FORTRAN内部函数库

FORTRAN内部函数
用FORTRAN解题往往要用到一些专门运算,如求三角函数sinx, cosx,对数lnx,指数ex,求一组数中最大数和最小数等。

FORTRAN提供了一些系统函数(称为内部函数)来完成这些运算。

程序设计者不必自己设计进行这些运算的语句组(即程序段或子程序),只需写出一个函数的名字以及给出一个或若干个自变量,就可以得到所需的值,例如:
SQRT(4.0)求出4.0的平方根,
SIN(2.0)求出2(弧度)的正弦值,
EXP(3.5)求出e3.5,
LOG(3.0)求出3,
常用的函数如下表,FORTRAN77提供的全部函数明细见FORTRAN77内部函数。

函数名含义应用例子相当于数学上的运算
ABS 求绝对值ABS(A) |a|
EXP 指数运算EXP(A) e^a
SIN 正弦值SIN(X) sin x
COS 余弦值COS(X) cos x
ASIN 反正弦ASIN(X) sin^(-1)a
ACOS 反余弦ACOS(X) cos-1a
TAN 正切TAN(X) tan x
ATAN 反正切ATAN(A) tan^(-1)a
LOG 自然对数LOG(A) lna,或loge(a)
LOG10 常用对数LOG10(A) log10a
INT 取整INT(A) int(a),取a的整数部分
MOD 求余MOD(A1,A2) a - int(a1/a2)*a2
SIGN 求符号SIGN(A1,A2) |a1|(若a2>0) -|a1|(若a2<0)
REAL 转换为实型REAL(I)
MAX 求最大值MAX(A1,A2,A3) max(a1,a2,a3)
MIN 求最小值 MIN(A1,A2,A3) min(a1,a2,a3)
说明:
(1)FORTRAN77将这些系统函数分别编成一个个子程序,组成函数库,存贮于外部介质(如磁盘)上。

在完成源程序的编译之后,用LINK命令实现连接,即将已翻译成二进制指令的目标程序与函数库连接。

也就是将程序中出现函数名的地方用函数库中相应的一组指令代入之,组成一个统一的“可执行目标块”。

例如,程序中出现一个SIN函数,在连接时就将一组二进制指令(它们是实现求正弦值的运算的)直接插入到程序中出现SIN的地方。

由于是插入到程序内部的,所以称为“内部函数”。

(2)一个内部函数要求一个或多个自变量。

例如,SQRT函数只能有一个自变量SQRT(4.6),MOD函数要求两个自变量MOD(8,3),MAX和MIN函数要求两个以上自变量MAX(6,-8,10),MIN(-6,8,0)。

当自变量个数规定为2个时,自变量的顺序不应任意颠倒,MOD(8,3)表示8被3除的余数,其值为2,而MOD(3,8)则表示3被8除的余数,其值为3。

当自变量个数>2时,自变量的顺序无关,MAX(6,8,10)和MAX(8,10,6)结果是一样的。

(3)函数的自变量是有类型的,函数值也是有类型的,例如,MOD(8,3)中自变量8和3是整型,其值“2”也是整型,如果写成MOD(8.0,3.0),自变量是实型的,函数值也是实型的,其值为2.0。

(4)FORTRAN77函数名分为“通用名”和“专用名”,例如求余函数的“通用名”为MOD,“专用名”有三个(MOD,AMOD,DMOD)。

通用名也称“属性名”,或“属名”。

根据自变量的类型就自动确定了函数值的类型,如前述MOD(8,3)的值为整型,而MOD(8.0,3.0)的值为实型。

之所以有“专用名”只是为了和FORTRAN老标准兼容,在FORTRAN66中,如果求实数相除的余数,要用AMOD函数,如AMOD(8.5,4.2)而不能用MOD(8.5,4.2)。

建议读者编程序时一般不必用专用名而全部用“通用名”,使用方便又容易记。

但也有的FORTRAN77子集只能使用“专用名”而不能使用“通用名”。

(5)三角函数中角度的单位是“弧度”而不是“度”。

例如,SIN(1.0)表示的不是sin1o,而是sin57.29578o。

sin30o应写成sin(30*3.14159/180)。

(6)自变量可以是常量、变量或表达式。

例如SQRT(4.0),SQRT(A)和SQRT(2.0+2.0)均为合法。

但类型应符合要求,例如SQRT(I)就不合法,因为I为整型变量,而SQRT函数的自变量不能是整型量。

(7)INT函数的作用是简单地截去小数部分,如INT(8.5)=8,INT(-8.5)=-8。

这是与BASIC 中的INT函数是不同的。

(8)SIGN函数的作用是“符号传送”。

SIGN(A,B)的作用是将B的符号传送给A,例如,SIGN(6.5,-8.3)的值勤为-6.5,它将第二项的符号(负号)传送给第一项。

SIGN(-6.5,8.3)的值为6.5。

因为第二个自变量为正数。

也就是说,函数值的符号与第二个自变量的符号相同。

利用这个函数可以检查A和B是否同符号。

如果SIGN(A,B)=A,则说明A与B同符号,而如果SIGN(A,B)与A不相等,则说明A与B不同符号。

相关主题