FORTRAN内部函数库
fortran ln函数
fortran ln函数一、引言Fortran是一种高级编程语言,它最初是为科学和工程计算而设计的。
Fortran有很多内置的数学函数,其中包括ln函数。
在本文中,我们将介绍Fortran中的ln函数以及如何使用它。
二、什么是ln函数ln函数是自然对数函数,它是以e为底数的对数函数。
ln(x)表示e的多少次方等于x,其中e是一个常数(约等于2.71828),x是一个正实数。
三、Fortran中的ln函数在Fortran中,可以使用log()或log10()来计算对数。
log()计算以e 为底数的对数,而log10()计算以10为底数的对数。
因此,在Fortran中,可以使用以下代码来计算ln(x):result = log(x)四、示例代码下面是一个简单的示例程序,演示如何在Fortran中使用ln函数:program ln_exampleimplicit nonereal :: x, resultwrite(*,*) 'Enter a positive number: 'read(*,*) xresult = log(x)write(*,*) 'The natural logarithm of ', x, ' is ', resultend program ln_example五、解释在这个程序中,我们首先声明了两个变量:x和result。
x用于存储用户输入的值,result用于存储计算结果。
接下来,我们要求用户输入一个正实数,并将其存储在变量x中。
然后,我们使用log()函数计算ln(x),并将结果存储在变量result中。
最后,我们将结果输出到屏幕上。
六、结论在本文中,我们介绍了Fortran中的ln函数以及如何使用它。
ln函数是自然对数函数,它是以e为底数的对数函数。
在Fortran中,可以使用log()或log10()来计算对数。
通过一个简单的示例程序,我们演示了如何在Fortran中使用ln函数。
fortran函数 -回复
fortran函数-回复Fortran (Formula Translation)是一种编程语言,被广泛用于科学和工程领域的高性能计算。
它的诞生可以追溯到上世纪50年代,当时由IBM 的John Backus领导的团队开发出了这个语言。
Fortran的设计目标是为科学计算提供一个强大而高效的编程工具,让科学家和工程师能够更方便地进行数值计算和数学模拟。
在本文中,我们将一步一步回答关于Fortran函数的问题,包括其语法、特性和如何使用它们来解决实际的科学计算问题。
第一步:了解Fortran函数的语法Fortran函数的语法遵循一定的规则,包括函数名称、参数列表和返回值类型。
一个基本的Fortran函数的语法如下:fortranfunction 函数名(参数列表) 结果类型! 函数体statements...end function在函数体内,你可以编写各种语句来实现特定的功能。
函数名可由字母、数字和下划线组成,并且不区分大小写。
参数列表指定了函数所需的输入变量,可以是任何Fortran数据类型,包括整数、实数和复数等。
结果类型定义了函数的返回值类型。
第二步:学习Fortran函数的特性Fortran函数具有许多有用的特性,使其成为科学计算中的瑞士军刀。
以下是一些Fortran函数的特性:1. 强大的数学库:Fortran内置了丰富的数学函数库,包括三角函数、指数函数、对数函数和特殊函数等。
这些函数提供了高精度和高效率的数学计算能力。
2. 数组操作:Fortran是一种面向科学计算的语言,对数组操作提供了很好的支持。
你可以在函数中传递数组作为参数,并对其进行各种运算和处理。
3. 模块化编程:Fortran支持模块化编程,可以把函数组织成模块,使得代码更加可读和易于维护。
模块化编程还可以提高代码的复用性,减少重复工作。
4. 高性能计算:Fortran被设计为一种高性能计算语言,具有出色的执行速度和内存管理能力。
fortran余数函数
fortran余数函数Fortran是一种编程语言,用于科学计算和数值分析。
它是一种古老而强大的语言,最早于1957年发布。
尽管它已经存在了很长一段时间,但它仍然被广泛使用,特别是在科学和工程领域。
Fortran有许多内置函数,其中一个就是计算余数的函数。
余数函数可以计算两个数相除后的余数。
Fortran中的余数函数称为MOD函数,它可以用来计算整数和实数的余数。
MOD函数有两个参数,一个是除数,另一个是被除数。
当两个参数都是整数时,MOD函数返回一个整数余数。
例如,如果我们要计算13除以5的余数,可以使用以下Fortran代码:```fortranprogram mod_exampleimplicit noneinteger :: dividend, divisor, remainderdividend = 13divisor = 5remainder = MOD(dividend, divisor)write(*,*) "余数为:", remainderend program mod_example```上述代码将输出"余数为: 3",因为13除以5得到的余数是3。
这个例子中,dividend被赋值为13,divisor被赋值为5,而remainder 则是MOD函数的结果。
除了整数之外,MOD函数还可以用于计算实数的余数。
当被除数和除数都是实数时,MOD函数将返回一个实数余数。
例如,如果我们要计算5.7除以2.1的余数,可以使用以下Fortran代码:```fortranprogram mod_exampleimplicit nonereal :: dividend, divisor, remainderdividend = 5.7divisor = 2.1remainder = MOD(dividend, divisor)write(*,*) "余数为:", remainderend program mod_example```上述代码将输出"余数为: 1.5",因为5.7除以2.1得到的余数是1.5。
fortran 叉乘 内置函数
在计算机编程领域中,Fortran是一种非常古老的编程语言,它在科学计算和工程领域中仍然被广泛使用。
在Fortran中,叉乘(cross product)是一种非常重要的数学运算,它常常用于向量计算和几何学中。
叉乘是指两个向量的一种二元运算,其结果是另一个向量。
在Fortran 中,叉乘通常通过内置函数来实现,这使得程序员能够更加方便地进行向量运算。
叉乘的内置函数通常会接受两个输入向量,并返回它们的叉乘结果。
这个结果向量的方向由右手定则确定,其长度等于输入向量的模长乘积与它们之间的夹角的正弦值。
这样的内置函数可以极大地简化向量计算的复杂度,使得程序员可以更加专注于解决实际问题。
在实际应用中,叉乘的内置函数可以用于处理三维空间中的向量运算。
在计算机图形学中,我们经常需要计算物体的旋转和投影,这些都需要对向量进行叉乘运算。
内置函数能够帮助程序员更高效地实现这些复杂的计算。
叉乘的内置函数还可以用于解决物理学和工程学中的问题。
在计算电磁场中的力和磁感应强度时,就需要用到叉乘运算。
而内置函数的存在,则可以使得这些应用变得更加简单和可靠。
在总的来看,Fortran中的叉乘内置函数是一种非常有价值的工具,它可以帮助程序员更加方便和高效地进行向量运算。
无论是在科学计算领域,还是在工程和物理学中,这样的内置函数都具有非常重要的意义。
个人观点和理解:通过使用Fortran中的叉乘内置函数,程序员可以更加方便地进行向量运算,从而解决各种实际问题。
这种便利性不仅提高了编程的效率,也使得科学计算和工程领域的应用变得更加可靠和稳健。
我认为这样的内置函数在Fortran中具有非常重要的地位。
Fortran中叉乘内置函数的实际应用非常广泛,在计算机图形学、物理学和工程学等领域都有着重要的作用。
它的存在使得程序员能够更加专注于问题的实质,而不必花费过多的精力在实现向量运算上。
我对这种内置函数持非常肯定的态度,并希望它能够在更多的领域得到应用。
Fortran标准函数库
附录 FORTRAN 90标准函数符号约定:●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。
●s:P表示s类型为P类型(任意kind值)。
s:P(k)表示s类型为P类型(kind 值=k)。
●[…]表示可选参数。
●*表示常用函数。
表1 数值和类型转换函数函数名 说明ABS(x)* 求x的绝对值∣x∣。
x:I、R, 结果类型同x; x:C, 结果:RAIMAG(x) 求x的实部。
x:C, 结果:RAINT(x[,kind])* 对x取整,并转换为实数(kind)。
x:R, kind:I, 结果:R(kind)AMAX0(x1,x2,x3,…)* 求x1,x2,x3,…中最大值。
x I:I, 结果:RAMIN0(x1,x2,x3,…)* 求x1,x2,x3,…中最小值。
x I:I, 结果:RANINT(x[,kind])* 对x四舍五入取整,并转换为实数(kind)。
x:R, kind:I, 结果:R(kind) CEILING(x)* 求大于等于x的最小整数。
x:R, 结果:ICMPLX(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, 结果:CDBLE(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转换为单精度实数。
Fortran内置函数表
N 函数列表(转)
符号约定:
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 数值和类型转换函数
表2 三角函数
注:三角函数名前有C、D的函数为复数、双精度型函数。
表3 指数、平方根和对数函数
注:指数函数名、平方根函数名、对数函数名前有C、D的函数为复数、双精度型函数。
表4 参数查询函数
表5 实数检测和控制函数
表6 字符处理函数
表7 二进制位操作函数
表8 数组运算、查询和处理函数
注: 参数m指逻辑型掩码数组,指明允许操作的数组元素。
缺省掩码数组指对数组所有元素进行操作。
fortran函数
fortran函数Fortran是一种编程语言,它提供了许多内置的函数,可以帮助程序员更轻松地完成任务。
这些函数通常称为Fortran函数。
Fortran函数是一组预定义的操作,可以接受零个或多个参数,并返回一个值。
这些函数可以在程序中使用,以执行各种任务,例如数学计算、字符串处理、输入/输出操作等。
Fortran函数的语法与其他编程语言中的函数非常相似。
通常,它们由函数名、参数列表和返回值组成。
例如,下面是一个计算正弦值的Fortran函数:```REAL FUNCTION SIN(X)REAL XSIN = SIN(X)END```这个函数被命名为SIN,它接受一个实数作为参数,并返回它的正弦值。
函数的返回值使用等号分配。
在Fortran中,函数的参数可以是任何数据类型,包括整数、实数、字符串、逻辑值等。
Fortran函数还可以具有可选的参数,这些参数在调用函数时可以省略。
要使用Fortran函数,您需要在程序中调用它们。
通常,这涉及到指定函数名和参数列表,并将返回值存储在变量中。
例如,下面是一个调用上面定义的SIN 函数的示例:```REAL X, YX = 3.14159Y = SIN(X)```在这个例子中,我们首先定义了一个实数变量X,并将其设置为3.14159。
然后,我们调用SIN函数,并将X作为参数传递给它。
该函数计算X的正弦值,并将其存储在变量Y中。
总的来说,Fortran函数是一种非常有用的工具,可以帮助程序员轻松完成各种任务。
无论您是正在编写数学计算、数据处理还是其他类型的程序,Fortran函数都可以帮助您更轻松地完成工作。
Fortran常用函数
1、RANDOM_NUMBERSyntax ['sintæks] n. 语法CALL RANDOM_NUMBER (harvest结果)Intrinsic Subroutine(固有子程序):Returns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution.返回大于或等于0且小于1,服从均匀分布的随机数2、RNNOA/ DRNNOA (Single/Double precision)Generate pseudorandom numbers from a standard normal distribution using an acceptance/rejection method.产生服从标准正态分布的随机数Usage(用法)CALL RNNOA (NR, R)Arguments(参数)NR— Number of random numbers to generate. (Input) 要产生随机数的个数R— Vector of length NR containing the random standard normal deviates. (Output)输出长度为NR,随机正态分布的向量Comments(注解)The routine RNSET can be used to initialize the seed of the random number generator. The routine RNOPT can be used to select the form of the generator.程序RNSET可以用来初始化随机数发生器的种子ExampleIn this example, RNNOA is used to generate five pseudorandom deviates from a standard normal distribution.INTEGER ISEED, NOUT, NRREAL R(5)EXTERNAL RNNOA, RNSET, UMACHCCALL UMACH (2, NOUT)NR = 5ISEED = 123457CALL RNSET (ISEED)CALL RNNOA (NR, R)WRITE (NOUT,99999) R99999 FORMAT (' Standard normal random deviates: ', 5F8.4)ENDOutputStandard normal random deviates: 2.0516 1.0833 0.0826 1.2777 -1.22603、RESHAPEIntrinsic Function(内部函数)Constructs an array of a specified shape from the elements of another array. 构造规定形式的数组Syntax(语法)result = RESHAPE (source, shape [ , pad][ , order])source(Input) Any type. Array whose elements will be taken in standard Fortran array order (see Remarks), and then placed into a new array.shape(Input) Integer. One-dimensional array that describes the shape of the output array created from elements of source. 描述输出数组的大小的一维数组,The elements of shape are the sizes of the dimensions of the reshaped array in order. If pad is omitted 省略, the total size specified by shape must be less than or equal to source.pad 可选参数(Optional; input) Same type as source. Must be an array. If there are not enough elements in source to fill the result array, elements of pad are added in standardFortran array order. If necessary, extra copies of pad are used to fill the array.order 可选参数(Optional; input) Integer. One-dimensional array. Must be the same length as shape.Permutes the order of dimensions in the result array. The value of order must be a permutation of (1, 2,...n) where n is the size of shape.Return Value(返回值)The result is an array the same data type and kind as source and a shape as defined in shape.ExamplesINTEGER AR1( 2, 5)REAL F(5,3,8)REAL C(8,3,5)AR1 = RESHAPE((/1,2,3,4,5,6/),(/2,5/),(/0,0/),(/2,1/))! returns 1 2 3 4 5! 6 0 0 0 0!! Change Fortran array order to C array orderC = RESHAPE(F, (/8,3,5/), ORDER = (/3, 2, 1/))END4、SUMIntrinsic Function(内部函数)Sums elements of an array or the elements along an optional dimension. The elements summed can be selected by an optional mask.将数组中的元素求和Syntax(语法)result = SUM (array [ , dim] [ , mask])array(Input) Integer, real, or complex. Array whose elements are to be summed.dim 可选参数(Optional; input) Integer. Dimension along which elements are summed.1 ≤dim≤n, where n is the number of dimensions in array.mask 可选参数(Optional; input) Logical. Must be same shape as array. If mask is specified, only elements in array that correspond to .TRUE. elements in mask are summed.Return Value(返回值)Same type and kind as array and equal to the sum of all elements in array or the sum of elements along dimension dim. If mask is specified, only elements that correspondto .TRUE. elements in mask are summed. Returns a scalar if dim is omitted or array is one-dimensional. Otherwise, returns an array one dimension smaller than array.ExamplesINTEGER array (2, 3), i, j(3)array = RESHAPE((/1, 2, 3, 4, 5, 6/), (/2, 3/))! array is 1 3 5! 2 4 6i = SUM((/ 1, 2, 3 /)) ! returns 6j = SUM(array, DIM = 1) ! returns [3 7 11]WRITE(*,*) i, jEND5、SEEDRun-Time Subroutine Changes the starting point of the pseudorandom number generator. 改变随机数发生器的起始点ModuleUSE MSFLIBSyntax(语法)CALL SEED (iseed)iseed(Input) INTEGER(4). Starting point for RANDOM.Remarks(注解)SEED uses iseed to establish the starting point of the pseudorandom number generator.A given seed always produces the same sequence of values from RANDOM.If SEED is not called before the first call to RANDOM, RANDOM always begins with a seed value of one. If a program must have a different pseudorandom sequence each time it runs, pass the constant RND$TIMESEED (defined in MSFLIB.F90) to the SEED routine before the first call to RANDOM.ExampleUSE MSFLIBREAL randCALL SEED(7531)CALL RANDOM(rand)6、RANDOMPurposeRun-Time Subroutine Returns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution. 返回大于或等于0且小于1,服从均匀分布的随机数ModuleUSE MSFLIBSyntaxCALL RANDOM (ranval)ranval(Output) REAL(4). Pseudorandom number, 0 ≤ranval< 1, from the uniformdistribution.RemarksA given seed always produces the same sequence of values from RANDOM.If SEED is not called before the first call to RANDOM, RANDOM begins with a seed value of one. If a program must have a different pseudorandom sequence each time it runs, pass the constant RND$TIMESEED (defined in MSFLIB.F90) to SEED before the first call to RANDOM.All the random procedures (RANDOM, RAN, and RANDOM_NUMBER, and the PortLib functions DRAND, DRANDM, RAND, IRANDM, RAND, and RANDOM) use the same algorithms and thus return the same answers. They are all compatible and can be used interchangeably. (The algorithm used is a “Prime Modulus M Multiplicative Linear Congruential Generator,” a modified version of t he random number generator by Park and Miller in “Random Number Generators: Good Ones Are Hard to Find,” CACM, October 1988, Vol. 31, No. 10.)CompatibilityCONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIBExampleUSE MSFLIBREAL(4) ranCALL SEED(1995)CALL RANDOM(ran)7、FFT2BCompute the inverse Fourier transform of a complex periodic two-dimensional array.计算二维复数数组的逆傅里叶变换Usage(用法)CALL FFT2B (NRCOEF, NCCOEF, COEF, LDCOEF, A, LDA)Arguments(参数)NRCOEF— The number of rows of COEF. (Input) 数组COEF的行数NCCOEF— The number of columns of COEF. (Input) 数组COEF的列数COEF—NRCOEF by NCCOEF complex array containing the Fourier coefficients to be transformed. (Input) NRCOEF行NCCOEF列数组LDCOEF— Leading dimension of COEF exactly as specified in the dimension statement of the calling program. (Input)A—NRCOEF by NCCOEF complex array containing the Inverse Fourier coefficients of COEF. (Output) NRCOEF行NCCOEF列复数数组,包含数组COEF的逆傅里叶系数LDA— Leading dimension of A exactly as specified in the dimension statement of the calling program. (Input)Comments(注解)1.Automatic workspace usage isFFT2B4 * (NRCOEF + NCCOEF) + 32 + 2 *MAX(NRCOEF, NCCOEF) units, orDFFT2B8 * (NRCOEF + NCCOEF ) + 64 + 4 *MAX(NRCOEF, NCCOEF) units.Workspace may be explicitly provided, if desired, by use of F2T2B/DF2T2B. The reference isCALL F2T2B (NRCOEF, NCCOEF, A, LDA, COEF, LDCOEF,WFF1, WFF2, CWK, CPY)The additional arguments are as follows:WFF1— Real array of length 4 *NRCOEF + 15 initialized by FFTCI. The initialization depends on NRCOEF. (Input)WFF2— Real array of length 4 *NCCOEF + 15 initialized by FFTCI. The initialization depends on NCCOEF. (Input)CWK— Complex array of length 1. (Workspace)CPY— Real array of length 2 *MAX(NRCOEF, NCCOEF). (Workspace)2.The routine FFT2B is most efficient when NRCOEF and NCCOEF are the product of small primes.3.The arrays COEF and A may be the same.4.If FFT2D/FFT2B is used repeatedly, with the same values for NRCOEF and NCCOEF, then use FFTCI to fill WFF1(N = NRCOEF) and WFF2(N = NCCOEF). Follow this with repeated calls to F2T2D/F2T2B. This is more efficient than repeated calls toFFT2D/FFT2B.AlgorithmThe routine FFT2B computes the inverse discrete complex Fourier transform of a complex two-dimensional array of size (NRCOEF = N) ⨯ (NCCOEF = M). The method used is a variant of the Cooley-Tukey algorithm , which is most efficient when N and M are both products of small prime factors. If N and M satisfy this condition, then the computational effort is proportional to N M log N M. This considerable savings has historically led people to refer to this algorithm as the "fast Fourier transform" or FFT.Specifically, given an N⨯M array c = COEF, FFT2B returns in aFurthermore, a vector of Euclidean norm S is mapped into a vector of normFinally, note that an unnormalized inverse is implemented in FFT2D. The routine FFT2B is based on the complex FFT in FFTPACK. The package FFTPACK was developed by Paul Swarztrauber at the National Center for Atmospheric Research.ExampleIn this example, we first compute the Fourier transform of the 5 ⨯ 4 arrayfor 1 ≤n≤ 5 and 1 ≤m≤ 4 using the IMSL routine FFT2D. The resultis then inverted by a call to FFT2B. Note that the result is an array a satisfying a = (5)(4)x = 20x. In general, FFT2B is an unnormalized inverse with expansion factor N M.INTEGER LDA, LDCOEF, M, N, NCA, NRACOMPLEX CMPLX, X(5,4), A(5,4), COEF(5,4)CHARACTER TITLE1*26, TITLE2*26, TITLE3*26INTRINSIC CMPLXEXTERNAL FFT2B, FFT2D, WRCRNCTITLE1 = 'The input matrix is below 'TITLE2 = 'After FFT2D 'TITLE3 = 'After FFT2B 'NRA = 5NCA = 4LDA = 5LDCOEF = 5C Fill X with initial dataDO 20 N=1, NRADO 10 M=1, NCAX(N,M) = CMPLX(FLOAT(N+5*M-5),0.0)10 CONTINUE20 CONTINUECCALL WRCRN (TITLE1, NRA, NCA, X, LDA, 0)CCALL FFT2D (NRA, NCA, X, LDA, COEF, LDCOEF)CCALL WRCRN (TITLE2, NRA, NCA, COEF, LDCOEF, 0)CCALL FFT2B (NRA, NCA, COEF, LDCOEF, A, LDA)CCALL WRCRN (TITLE3, NRA, NCA, A, LDA, 0)CENDOutputThe input matrix is below1 2 3 41 ( 1.00, 0.00) ( 6.00, 0.00) ( 11.00, 0.00) ( 16.00, 0.00)2 ( 2.00, 0.00) ( 7.00, 0.00) ( 12.00, 0.00) ( 17.00, 0.00)3 ( 3.00, 0.00) ( 8.00, 0.00) ( 13.00, 0.00) ( 18.00, 0.00)4 ( 4.00, 0.00) ( 9.00, 0.00) ( 14.00, 0.00) ( 19.00, 0.00)5 ( 5.00, 0.00) ( 10.00, 0.00) ( 15.00, 0.00) ( 20.00, 0.00) After FFT2D1 2 3 41 ( 210.0, 0.0) ( -50.0, 50.0) ( -50.0, 0.0) ( -50.0, -50.0)2 ( -10.0, 13.8) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)3 ( -10.0, 3.2) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)4 ( -10.0, -3.2) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)5 ( -10.0, -13.8) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0) After FFT2B1 2 3 41 ( 20.0, 0.0) ( 120.0, 0.0) ( 220.0, 0.0) ( 320.0, 0.0)2 ( 40.0, 0.0) ( 140.0, 0.0) ( 240.0, 0.0) ( 340.0, 0.0)3 ( 60.0, 0.0) ( 160.0, 0.0) ( 260.0, 0.0) ( 360.0, 0.0)4 ( 80.0, 0.0) ( 180.0, 0.0) ( 280.0, 0.0) ( 380.0, 0.0)5 ( 100.0, 0.0) ( 200.0, 0.0) ( 300.0, 0.0) ( 400.0, 0.0)8、TIMEFPurposePortLib Function Returns the number of seconds since the first time it is called, or zero.ModuleUSE PORTLIBSyntaxresult=TIMEF ( )Return ValueREAL(8). Number of seconds that have elapsed since the first time TIMEF( ) was called. The first time called, TIMEF returns 0.0D0.CompatibilityCONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIBExampleUSE PORTLIBINTEGER i, jREAL(8) elapsed_timeelapsed_time = TIMEF() DO i = 1, 100000j = j + 1END DOelapsed_time = TIMEF() PRINT *, elapsed_time END。
fortran conjg函数
fortran conjg函数摘要:一、FORTRAN 语言简介二、CONJG 函数的定义和用途三、CONJG 函数的语法和参数四、CONJG 函数的使用示例正文:FORTRAN 语言是一种高级编程语言,广泛应用于科学计算、工程设计和数据分析等领域。
它具有丰富的函数库,可以方便地处理各种数学运算。
CONJG 函数是FORTRAN 语言中一个重要的数学函数,用于计算复数的共轭复数。
CONJG 函数的定义和用途非常简单。
给定一个复数Z,其共轭复数为Z*,其实部相同,虚部相反。
例如,如果Z = 3 + 4i,那么Z* = 3 - 4i。
CONJG 函数接收一个复数作为参数,并返回该复数的共轭复数。
CONJG 函数的语法如下:```result = CONJG(z)```其中,result 是返回的共轭复数,z 是输入的复数。
CONJG 函数的参数只有一个,即一个复数。
这个复数可以是一个实数,也可以是一个纯虚数,还可以是一个复数的代数表达式。
例如:```result = CONJG(3 + 4i) ! 结果为3 - 4iresult = CONJG(2 + 3i*5) ! 结果为2 - 3i*5```下面我们通过一个具体的例子来说明CONJG 函数的使用。
假设我们有一个复数Z = 3 + 4i,我们想要计算其共轭复数,可以使用以下代码:```program conjg_exampleimplicit nonecomplex :: z, resultinteger :: iz = 3 + 4iresult = conjg(z)print *, "Z = ", zprint *, "Z* = ", resultend program conjg_example```运行这个程序,将输出:```Z = 3.0000000000000000000e0 + 4.0000000000000000000e-1 Z* = 3.0000000000000000000e0 - 4.0000000000000000000e-1 ```可以看到,CONJG 函数成功地计算出了复数Z 的共轭复数。
fortran库参考
第3 章FORTRAN 77 和VMS 内函数本章列出了FORTRAN 77 f95 接受的一系列内函数,旨在帮助将传统的FORTRAN 77 程序迁移至Fortran 95。
在f95 中,本章列出的所有FORTRAN 77 和VMS 函数以及前一章列出的所有Fortran 95 函数都识别为内函数。
为了帮助从传统的FORTRAN 77 程序迁移至f95,使用-f77=intrinsics 进行编译会让编译器只将FORTRAN 77 和VMS 函数识别为内函数,但Fortran 95 函数不会识别为内函数。
属于Sun 扩展的ANSI FORTRAN 77 标准的内函数标有¤ 符号。
使用非标准内函数和库函数的程序可能无法移植到其他平台。
内函数在接受多种数据类型的参数时,有通用名称和专用名称。
通常,通用名称返回与参数具有相同数据类型的值。
但也有一些例外,如类型转换函数(表3–2)和查询函数(表3–7)。
这些函数也可以通过函数的某个专用名称进行调用,以便处理专用参数数据类型。
对于处理多个数据项的函数(例如sign(a1,a2)),所有数据参数的类型必须相同。
下表按以下几方面列出FORTRAN 77 内函数:内函数-描述函数的作用定义-数学定义参数数量-函数接受的参数的数量通用名称-函数的通用名称专用名称-函数的专用名称参数类型-与每个专用名称关联的数据类型函数类型-针对专用参数数据类型返回的数据类型注–编译器选项-xtypemap 会更改变量的缺省大小,并且对内在引用产生影响。
请参见3.4 备注以及《Fortran 用户指南》中有关缺省大小和对齐方式的介绍。
3.1 算术和数学函数本节详细介绍算术函数、类型转换函数、三角函数以及其他函数。
“a”代表函数的单个参数,“a1”和“a2”代表两个参数函数的第一个参数和第二个参数,“ar”和“ai”代表函数的复数参数的实部和虚部。
3.1.1 算术函数3.1.2 类型转换函数表3–2 Fortran 77 类型转换函数在ASCII 平台上(包括Sun 系统):ACHAR 是CHAR 的非标准同义词IACHAR 是ICHAR 的非标准同义词在非ASCII 平台上,ACHAR 和IACHAR 专门用于提供一种直接处理ASCII 的方法。
fortran调用mkl函数库的贝塞尔函数
让我们一起来探讨一下Fortran调用MKL函数库的贝塞尔函数这个主题。
贝塞尔函数是数学中的一类特殊函数,它们在科学和工程领域具有重要的应用价值。
而Fortran作为一种古老但经典的编程语言,如何有效地调用MKL(Math Kernel Library)中的贝塞尔函数,也是一个有趣且具有挑战性的课题。
让我们来了解一下贝塞尔函数的基本概念。
贝塞尔函数是以德国数学家贝塞尔的名字命名的一类特殊函数,它在微分方程、波动理论、振动、电磁理论等领域有着广泛的应用。
贝塞尔函数分为贝塞尔第一类函数和贝塞尔第二类函数,它们的定义较为复杂,但在实际应用中却具有重要的作用。
在科学计算和工程计算中,经常需要对贝塞尔函数进行计算和求解,因此能够有效调用MKL库中的贝塞尔函数对于Fortran程序来说是非常重要的。
接下来,让我们来了解一下MKL库的概念和特点。
MKL库是英特尔公司提供的数学核心库,其中包含了丰富的数学函数和算法,能够为科学计算和工程计算提供高性能的数学函数支持。
MKL库不仅支持C 和C++语言,也对Fortran语言提供了全面的支持,因此在Fortran 程序中调用MKL库中的函数是非常方便和高效的。
针对Fortran调用MKL库中的贝塞尔函数,我们可以按照以下步骤进行实现:1. 需要在Fortran程序中引入MKL库的相关模块和函数声明,以便能够正确调用MKL库中的函数。
2. 根据贝塞尔函数的具体计算需求,选择合适的MKL库中的函数进行调用,以实现对贝塞尔函数的计算和求解。
3. 在进行函数调用时,需要注意传入参数的类型和顺序,以确保能够正确地调用MKL库中的函数并获得正确的计算结果。
4. 根据实际需求对计算结果进行后续处理,以满足具体的科学计算和工程计算的要求。
在实际的科学计算和工程计算中,对贝塞尔函数的计算和求解往往需要高性能和高精度的支持。
而MKL库作为英特尔公司提供的数学核心库,具有优秀的性能和可靠的精度,能够有效地满足对贝塞尔函数的高性能计算需求。
fortran atan函数
fortran atan函数Fortran是一种编程语言,拥有丰富的数学函数库。
其中,atan函数是Fortran中的一个重要函数,用于计算反正切值。
本文将介绍Fortran的atan函数及其相关知识。
一、什么是反正切函数?反正切函数,又称为反正切值,是数学中的一种三角函数。
它表示的是一个角的正切值等于某一给定值时,该角的度数。
在数学中,反正切函数常用arctan表示,其定义域为实数集,值域为区间[-π/2, π/2]。
二、Fortran中的atan函数Fortran中的atan函数用于计算给定值的反正切值。
它的函数原型为:```real(Kind=dp) function atan(x)real(Kind=dp), intent(in) :: x```其中,x为输入参数,表示要计算反正切值的数值。
函数返回值为反正切值,类型为实数。
三、使用Fortran计算反正切值的示例下面以一个简单的示例来演示如何使用Fortran中的atan函数计算一个数的反正切值。
假设我们要计算数字0.5的反正切值,代码如下:```program atan_exampleimplicit nonereal(Kind=dp) :: x, resultx = 0.5result = atan(x)write(*,*) 'The arctan of', x, 'is', resultend program atan_example```上述代码首先声明了一个实数类型的变量x和result,分别用于存储输入参数和计算结果。
然后,将要计算的数值赋给变量x,并调用atan函数计算反正切值,将结果存储在result变量中。
最后,使用write语句输出计算结果。
四、atan函数的注意事项在使用Fortran中的atan函数时,需要注意以下几点:1. 函数的输入参数x可以是任意实数,包括正数、负数和零。
2. atan函数的返回值为反正切值,类型为实数。
Intrinsic functions in Fortran(Fortran内置函数)
Intrinsic functions in FortranA**2 求指数,对于矩阵每个元素单独求SUM(A) 求和,各个元素相加SUM(A,DIM=1)各列自己相加结果为vectorSUM(A,DIM=2)各行自己相加结果为vectorsum(c,mask=c.gt.0)只相加大于零的PRODUCTMINVALMAXVAL(A,2) 找每一行的最大值COUNTSIZE(A)=COUNT(A)SIZE(A,dim=1/2/3)ALL(MASK, dim) returns a logical value that indicates whether all relationsin MASK are .TRUE., along only the desired dimension if the second argument is given.ANY(MASK, dim) returns a logical value that indicates whether any relationin MASK is .TRUE., along only the desired dimension if the second argument is given.COUNT(MASK, dim) returns a numerical value that is the number of relationsin MASK who are .TRUE., along only the desired dimension if the second argumentis given.MAXVAL(ARRAY, dim, mask) returns the largest value in the array ARRAY, of those that obey the relation in the third argument MASK if that one is given, along only the desired dimension if the second argument DIM is given.MINVAL(ARRAY, dim, mask) returns the smallest value in the array ARRAY, of those that obey the relation in the third argument MASK if that one is given, along only the desired dimension if the second argument DIM is given.PRODUCT(ARRAY, dim, mask) returns the product of all the elements in thearray ARRAY, of those that obey the relation in the third argument MASK if that one is given, along only the desired dimension if the second argument DIM is given.SUM (ARRAY, dim, mask) returns the sum of all the elements in the array ARRAY, of those that obey the relation in the third argument MASK if that one is given, along only the desired dimension if the second argument DIM is given.Fortran基本结构块The if statementsAn important part of any programming language are the conditional statements. The most common such statement in Fortran is the if statement, which actually has several forms. The simplest one is the logical if statement:if (logical expression) executable statementThis has to be written on one line. This example finds the absolute value of x:if (x .LT. 0) x = -xIf more than one statement should be executed inside the if, then the following syntax should be used:if (logical expression) thenstatementsendifThe most general form of the if statement has the following form:if (logical expression) thenstatementselseif (logical expression) thenstatements::elsestatementsendifrelational operators.LT. <.LE. <=.GT.>.GE.>=.EQ. =.NE. /=。
fortran公函数ichar
fortran公函数icharFortran中的LEO库函数iChar是一个十分有用的函数。
iChar 函数返回一个字符串的ASCII码值。
和其他Fortran的函数一样,它能够帮助我们更加简便和高效地进行字符串操作。
下面就让我们来一起深入了解一下iChar函数的使用方法吧。
第一步:了解iChar函数的意义iChar函数用于将字符转换为ASCII码。
例如,我们可以使用iChar函数将A转换为65,将B转换为66等等。
这里要注意,只有一个字符能被转换,iChar不适用于多字符的字符串。
此外,我们还可以使用Chr函数,将ASCII码值转换为字符。
第二步:正确使用iChar函数在使用iChar函数时要注意以下几点:1. 标准 iChar 函数的语法格式如下:IChar(C)其中,C 表示为要转换为 ASCII码表对应的整数。
2. iChar 函数的参数必须是字符类型。
3. iChar 函数将字符转换成对应的 ASCII 码,并返回整型数值(A等于65,B等于66)。
4. 当参数为空时,iChar 函数返回的是空格的 ASCII 码整数值。
第三步:实例操作下面我们通过实例操作,进一步理解iChar函数的使用。
比如,我们要将字符"A"转换为ASCII码,代码如下:PROGRAM IchCHARACTER :: C*1C = 'A'WRITE (*,*) IChar(C)END PROGRAM运行结果为:65。
此时,我们再通过Chr函数将ASCII码转换为字符,代码如下:PROGRAM CharCHARACTER :: CC = Char(65)WRITE (*,*) CEND PROGRAM运行结果为:A。
第四步:注意事项在使用iChar函数时,我们要避免以下几个问题:1. 不能将多个字符转换为ASCII码。
只能将一个字符转换成对应的ASCII码。
如果将多字符的字符串传递给IChar函数,就会出现编译错误。
FORTRAN内存函数
參數 Integer Real*4 Real*4 Real*8 Character*1 Integer Real*4 Integer Real*8 Integer Real*4 Real*8 Integer(0-255) Real*4 Real*8
Integer Real*4 Real*4 Real*8 Character*1 Real*4 Real*8 Integer Real*4 Integer Real*8 Integer Real*4 Real*8 Integer Real*4 Real*8 Integer Real*4 Real*8 Integer Real*4 Real*8 Integer Real*4 Real*4 Integer Real*8 Integer
FORTRAN 編譯軟體之內存函數
功 能 與 定 義 函數名稱 INT(X) 轉換為整數型態 IFIX(X) IDINT(X) ICHAR(C) REAL(X) FLOAT(I) SNGL(X) DBLE(X) 資料型態 函數值
資料型 態轉換 轉換為實數型態
轉換為倍準數型態 轉換為字元型態 刪除小數部份
四捨五入之近似值
絕對值 求取 餘數 符號 轉換 取正 差值 I-INT(I/J)*J X-INT(X/Y)*Y X-IDINT(X/Y)*Y IF y 0 then = x IF y<0 then = - x If x>y, then = x-y If x y, then = 0
選擇最大值
資料型態 函數值 Real*4 Real*4 Integer Real*8 Real*4 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Logical Logical Logical Logical Logical
Fortran函数大全(1)
Fortran函数大全(1)Fortran库参考SunStudio11SunMicrosystems,文件号码819-4757-102005年11月, 修订版A请将有关本文档的意见和建议提交至:/hwdocs/feedback版权所有#169;2005SunMicrosystems,Inc.,4150NetworkCircle,SantaCla ra,California95054,U.S.A.保留所有权利.美国政府权利-商业用途. 政府用户应遵循SunMicrosystems,Inc.的标准许可协议, 以及FAR (FederalAcquisitionRegulations, 即“联邦政府采购法规”)的适合条款及其补充条款. 必须依据许可证条款使用. 本发行版可能包含由第三方开辟的内容.本产品的某些部份可能是从BerkeleyBSD系统衍生出来的, 并获得了加利福尼亚大学的许可. UNIX是X/OpenCompany,Ltd.在美国和其他国家/地区独家许可的注册商标.Sun、SunMicrosystems、Sun徽标、Java和JavaHelp是SunMicrosystems,Inc.在美国和其他国家/地区的商标或者注册商标. 所有的SPARC商标的使用均已获得许可, 它们是SPARCInternational,Inc.在美国和其他国家/地区的商标或者注册商标. 标有SPARC商标的产品均基于由SunMicrosystems,Inc.开辟的体系结构.本服务手册所介绍的产品以及所包含的信息受美国出口控制法制约, 并应遵守其他国家/地区的进出口法律. 严禁将本产品直接或者间接地用于核设施、导弹、生化武器或者海上核设施, 也不能直接或者间接地出口给核设施、导弹、生化武器或者海上核设施的最终用户. 严禁出口或者转口到美国禁运的国家/地区以及美国禁止出口清单中所包含的实体, 包括但不限于被禁止的个人以及特殊指定的国家/地区的公民. 本文档按“原样”提供, 对于所有明示或者默示的条件、陈述和担保, 包括对适销性、适合性或者非侵权性的默示保证, 均不承担任何责任, 除非此免责声明的适合范围在法律上无效.目录阅读本书之前印刷约定xixiShell提示符支持的平台xiixiiixiii访问SunStudio软件和手册页访问编译器和工具文档访问相关的Solaris文档开辟者资源xviiixixxixxvixviii联系Sun技术支持Sun欢迎您提出意见1. Fortran库例程1.11.21.31–1数据类型注意事项64位环境1–21–1Fortran数学函数1.3.11.3.21.3.3单精度函数1–31–3双精度函数1–6四倍精度函数1–91–111–11iii1.4Fortran库例程参考1.4.1abort:终止和写入核心文件1.4.21.4.31.4.41.4.51.4.61.4.71.4.81.4.91.4.101.4.111.4. 121.4.131.4.141.4.151.4.161.4.171.4.181.4.191.4.201.4.21 1.4.221.4.231.4.241.4.251.4.261.4.271.4.281.4.29access:检查文件权限或者存在性1–11alarm:在指定的时间后调用子例程1–12bit:位函数:and、or、…、bit、setbit、…chdir:更改默认目录chmod:更改文件的模式1–131–161–171–18date:获取以字符串表示的当前日期dtime, etime:经过的执行时间exit:终止进程并设置状态1–201–231–23fdate:以ASCII字符串返回日期和时间flush:刷新逻辑单元的输出1–24fork:创建当前进程的副本1–25fseek,ftell:确定文件的位置以及重新确定文件的位置1–25fseeko64, ftello64:确定大文件的位置以及重新确定大文件的位置1–271–29getarg, iargc:获取命令行参数getc, fgetc:获取下一个字符1–301–32getcwd:获取当前工作目录的路径getenv:获取环境变量的值1–33getfd:获取外部单元编号的文件描述符getfilep:获取外部单元编号的文件指针getlog:获取用户的登录名getpid:获取进程ID1–341–341–361–361–36getuid, getgid:获取进程的用户ID或者组IDhostnm:获取当前主机的名称1–37idate:返回当前日期1–381–38ieee_flags, ieee_handler,sigfpe:IEEE算术index, rindex, lnblnk:子串的索引或者长度. 1–44inmax:返回最大正整数1–45itime:当前时间1–46ivFortran库参考2005年11月1.4.301.4.311.4.321.4.331.4.341.4.35kill:将信号发给进程1–471–47link, symlnk:链接到现有的文件loc:返回对象的地址1–491–491–50long, short:整型对象转换longjmp,isetjmp:返回至isetjmp设置的位置malloc, malloc64, realloc, free:分配/重新分配/释放内存1–521.4.36mvbits:挪移位字段1–561.4.37perror, gerror, ierrno:获取系统错误消息1–571.4.38putc, fputc:将字符写入逻辑单元1–581.4.39qsort, qsort64:对一维数组的元素进行排序1–601.4.40ran:生成一个介于0和1之间的随机数1–621.4.41rand, drand, irand:返回随机值1–631.4.42rename:重命名文件1–641.4.43secnds:获取以秒数表示的系统时间并减去参数1–651.4.44set_io_err_handler, get_io_err_handler:设置并获取I/O错误处理程序1–651.4.45sh:快速执行sh命令1–681.4.46signal:更改信号的操作1–691.4.47sleep:一段时间暂停执行1–701.4.48stat, lstat, fstat:获取文件状态1–701.4.49stat64, lstat64, fstat64:获取文件状态1–731.4.50system:执行系统命令1–731.4.51time, ctime, ltime, gmtime:获取系统时间1–741.4.52ttynam, isatty:获取终端端口的名称1–781.4.53unlink:删除文件1–791.4.54wait:等待进程终止1–802.Fortran95内部函数2–12.1标准Fortran95的通用内部函数2–1v目录2.1.12.1.22.1.32.1.42.1.52.1.62.1.72.1.82.1.92.1.102.1.1 12.1.122.1.132.1.142.1.152.1.162.1.172.1.182.1.192.1.202 .1.212.1.222.1.232.2参数存在查询函数数值函数数学函数字符函数。
Fortran中常用函数列表
Fortran中常⽤函数列表Y=INT(X) 转换为整数 ALL(所有型态) INTEGERY=REAL(X) 转换为实数 INTEGER REALY=DREAL(X) 取复数实部(倍精度) COMPLEX*16 REAL*8Y=DIMAG(X) 取复数虚部(倍精度) COMPLEX*16 REAL*8Y=CONJG(X) 共轭复数 COMPLEX COMPLEXY=DCONJG(X) 共轭倍精度复数 COMPLEX*16 COMPLEX*16Y=DBLE(X) 转换为倍精度实数 ALL REAL*8Y=CMPLX(X1,X2) 转换为复数 ALL,ALL COMPLEXY=DCMPLX(X1,X2) 转换为倍精度复数 ALL,ALL COMPLEX*16Y=IABS(X) 整数绝对值 INTEGER INTEGERY=DABS(X) 倍精度实数绝对值 REAL*8 REAL*8Y=CDABS(X) 倍精度复数绝对值 COMPLEX*16 REAL*8Y=MOD(X1,X2) 整数X1/X2之余数 INTEGER,INTEGER INTEGERY=DMOD(X1,X2) 倍精度实数X1/X2之余数 REAL*8,REAL*8 REAL*8Y=ISIGN(X1,X2) 取X1之值与X2之正负号 INTEGER,INTEGER INTEGERY=SIGN(X1,X2) 取X1之值与X2之正负号 REAL,REAL REALY=DSIGN(X,Y) 取X1之值与X2之正负号 REAL*8,REAL*8 REAL*8Y=DSQRT(X) X的倍精度平⽅根 REAL*8 REAL*8Y=CDSQRT(X) X的倍精度复数平⽅根 COMPLEX*16 COMPLEX*16Y=DEXP(X) X的倍精度指数 REAL*8 REAL*8Y=CDEXP(X) X的倍精度复数指数 COMPLEX*16 COMPLEX*16Y=DLOG(X) X的倍精度⾃然对数 REAL*8 REAL*8Y=CDLOG(X) X的倍精度复数⾃然对数 COMPLEX*16 COMPLEX*167Y=DLOG10(X) X的倍精度常⽤对数 REAL*8 REAL*8Y=DSIN(X) X的倍精度正弦函数 REAL*8 REAL*8Y=DCOS(X) X的倍精度余弦函数 REAL*8 REAL*8Y=DTAN(X) X的倍精度正切函数 REAL*8 REAL*8Y=DASIN(X) X的倍精度正弦反函数 REAL*8 REAL*8Y=DACOS(X) X的倍精度余弦反函数 REAL*8 REAL*8Y=DATAN(X) X的倍精度正切反函数 REAL*8 REAL*8Y=DSINH(X) X的倍精度双曲正弦函数 REAL*8 REAL*8Y=DCOSH(X) X的倍精度双曲余弦函数 REAL*8 REAL*8Y=DTANH(X) X的倍精度双曲正切函数 REAL*8 REAL*8。
c语言调用fortran module中函数 -回复
c语言调用fortran module中函数-回复C语言调用Fortran module中的函数在科学计算领域,Fortran和C语言是两种常用的编程语言。
Fortran语言以其强大的数值计算能力而闻名,而C语言则以其灵活性和可移植性而受到广泛使用。
然而,C语言和Fortran语言之间的差异使得它们之间的交互并不总是直接的。
特别是在调用Fortran module中的函数时,C语言需要采取一些额外的步骤。
本文将详细介绍如何使用C语言调用Fortran module中的函数,并提供一步一步的指南。
首先,我们需要了解Fortran module的概念。
Fortran module是一种数据结构,它包含了一组相关的程序单元,如函数、变量和子程序。
使用module可以将这些程序单元组织起来,使其更易于使用和管理。
要在C语言中调用Fortran module中的函数,我们需要了解Fortran module的接口标记。
接口标记描述了Fortran函数的参数类型和返回类型,以及函数的名称。
在C语言中,我们需要使用这些接口标记来正确地调用Fortran函数。
以下是一步一步的指南,展示如何使用C语言调用Fortran module中的函数:步骤1:创建Fortran module首先,我们需要创建一个Fortran module,其中包含我们要调用的函数。
在Fortran源文件中,添加以下代码来定义module和函数:module my_moduleimplicit nonecontainssubroutine my_function(arg1, arg2, result)real :: arg1, arg2, result! Fortran函数的代码result = arg1 + arg2end subroutine my_functionend module my_module在上述示例中,我们定义了一个名为`my_function`的Fortran子程序,它接受两个实数参数`arg1`和`arg2`,并返回它们的和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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不同符号。