fortran语言内部函数

合集下载

fortran ln函数

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语言中minval函数

fortran语言中minval函数

fortran语言中minval函数Fortran语言是一种古老而强大的编程语言。

它是1954年由IBM公司开发的,目的是为了科学和工程计算。

Fortran语言在过去几十年里一直被广泛使用,并且在许多领域中仍然是一种主流语言,特别是在高性能计算领域和科学计算中。

在Fortran语言中,minval函数是一个非常有用的函数。

它用于确定给定数组中的最小值。

minval函数可以在任何类型的数组上使用,包括整数、实数和复数。

函数的原型如下:```minval(array [, dim] [, mask])```其中,array是一个要查找最小值的数组;dim是一个可选参数,用于指定查找的维度;mask也是一个可选参数,用于指定一个逻辑数组来选择要考虑的元素。

minval函数的工作原理非常简单。

它首先确定要查找的维度,如果未指定dim参数,则从整个数组中查找最小值。

然后,它遍历该维度上的所有元素,并返回数组中的最小值。

如果给定了mask参数,则minval函数只考虑被mask中对应为true的元素。

让我们来看几个使用minval函数的示例。

首先,让我们考虑一个简单的示例,其中我们有一个包含5个元素的整数数组:```integer :: arr(5) = [4, 2, 6, 1, 3]```我们可以使用minval函数来查找最小值,并将其存储在另一个整数变量中,如下所示:```integer :: min_valmin_val = minval(arr)```这将使min_val等于数组中的最小值1。

接下来,让我们考虑一个稍微复杂一些的示例,其中我们有一个包含多个维度的实数数组:```real :: arr(2, 3) = [[1.5, 2.8, 3.2], [0.3, 1.9, 2.1]] ```如果我们没有指定dim参数,那么minval函数将在整个数组中查找最小值。

因此,下面的代码将返回数组中的最小值0.3:```real :: min_valmin_val = minval(arr)```如果我们指定dim参数,那么minval函数将在指定的维度上执行查找。

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常用函数

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 find函数

fortran find函数

fortran find函数Fortran是一种广泛用于科学计算和数值分析的编程语言,其内置了许多用于处理数组和矩阵操作的函数。

其中一个非常有用的函数就是find函数。

本文将详细介绍Fortran中的find函数以及其用法和特点。

在Fortran中,find函数用于在一个数组中搜索指定值或条件,并返回满足条件的元素的索引。

它可以帮助我们快速找到数组中满足我们需求的数据,从而进行进一步的处理和分析。

find函数的基本语法如下:```index = find(array, value [, dim])```其中,array是待搜索的数组,value是要搜索的值,dim是可选参数,用于指定在哪个维度上进行搜索。

如果不指定dim,则默认在整个数组上进行搜索。

find函数的返回值是一个整数,表示满足条件的元素在数组中的索引。

如果没有找到满足条件的元素,则返回0。

下面通过一个简单的例子来演示find函数的用法。

假设我们有一个包含10个元素的数组arr,我们想找到数组中值为5的元素的索引。

可以使用如下代码实现:```program find_exampleimplicit noneinteger, parameter :: n = 10integer :: arr(n) = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]integer :: indexindex = find(arr, 5)if (index == 0) thenprint *, "未找到满足条件的元素"elseprint *, "满足条件的元素在数组中的索引为:", indexend ifend program find_example```运行上述代码,输出结果为:```满足条件的元素在数组中的索引为: 5```可以看到,find函数成功找到了数组中值为5的元素,并返回了其在数组中的索引。

fortran 叉乘 内置函数

fortran 叉乘 内置函数

在计算机编程领域中,Fortran是一种非常古老的编程语言,它在科学计算和工程领域中仍然被广泛使用。

在Fortran中,叉乘(cross product)是一种非常重要的数学运算,它常常用于向量计算和几何学中。

叉乘是指两个向量的一种二元运算,其结果是另一个向量。

在Fortran 中,叉乘通常通过内置函数来实现,这使得程序员能够更加方便地进行向量运算。

叉乘的内置函数通常会接受两个输入向量,并返回它们的叉乘结果。

这个结果向量的方向由右手定则确定,其长度等于输入向量的模长乘积与它们之间的夹角的正弦值。

这样的内置函数可以极大地简化向量计算的复杂度,使得程序员可以更加专注于解决实际问题。

在实际应用中,叉乘的内置函数可以用于处理三维空间中的向量运算。

在计算机图形学中,我们经常需要计算物体的旋转和投影,这些都需要对向量进行叉乘运算。

内置函数能够帮助程序员更高效地实现这些复杂的计算。

叉乘的内置函数还可以用于解决物理学和工程学中的问题。

在计算电磁场中的力和磁感应强度时,就需要用到叉乘运算。

而内置函数的存在,则可以使得这些应用变得更加简单和可靠。

在总的来看,Fortran中的叉乘内置函数是一种非常有价值的工具,它可以帮助程序员更加方便和高效地进行向量运算。

无论是在科学计算领域,还是在工程和物理学中,这样的内置函数都具有非常重要的意义。

个人观点和理解:通过使用Fortran中的叉乘内置函数,程序员可以更加方便地进行向量运算,从而解决各种实际问题。

这种便利性不仅提高了编程的效率,也使得科学计算和工程领域的应用变得更加可靠和稳健。

我认为这样的内置函数在Fortran中具有非常重要的地位。

Fortran中叉乘内置函数的实际应用非常广泛,在计算机图形学、物理学和工程学等领域都有着重要的作用。

它的存在使得程序员能够更加专注于问题的实质,而不必花费过多的精力在实现向量运算上。

我对这种内置函数持非常肯定的态度,并希望它能够在更多的领域得到应用。

fortran函数

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常用函数

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函数 (1)

常用的fortran函数 (1)

函数名含义应用例子相当数学上的运算ABS EXP SIN COS ASIN ACOS TAN ATAN LOG LOGlO INT MOD SIGN REAL MAX MIN 求绝对值指数运算正弦值余弦值反正弦反余弦正切反正切自然对数常用对数取整求余求符号转换为实型求最大值求最小值ABS(X)EXP(X)SIN(X)COS(X)ASIN(X)ACOS(X)TAN(X)ATAN(X)ALOG(X)ALOG10(X)INT(X)MOD(X1,X2)SIGN(Xl,X2)REAL(I)MAX0(I1,I2,I3)MIN(Xl,X2,X3)x)exp(xxsinxcosxarcsinxarccosxtanxarctanxlnx10log()xint,取x的整数部分()221int xxxx⋅-1x(当02≥x),1x-(当02<x)()321,,m ax iii()321,,m in xxx函数名称描述ALL(mask[,dim]) 判断全部数组值在指定维上是否都满足mask的条件ANY(mask[,dim]) 判断是否有数组值在指定维上满足mask的条件COUNT(mask[,dim]) 统计在指定维上满足mask的条件的元素个数CSHIFT(array,shift[,dim]) 进行指定维上的循环替换DOT_PRODUCT(vector_a,vector_b) 进行两个向量的点乘EOSHIFT(array,shift[,boundary][,dim]) 在指定维上替换掉数组末端,复制边界值到数组末尾LBOUND(array[,dim]) 返回指定维上的下界MATMUL(matrix_a,matrix_b) 进行两个矩阵(二维数组)的乘积MAXLOC(array[,dim][,mask]) 返回数组的全部元素或指定维元素当满足mask条件的最大值的位置MAXV AL(array[,dim][,mask]) 返回在指定维上满足mask条件的最大值MERGE(tsource,fsource,mask) 按mask条件组合两个数组MINLOC(array[,dim][,mask]) 返回数组的全部元素或指定维元素当满足mask条件的最小值的位置MINV AL(array[,dim][,mask]) 返回在指定维上满足mask条件的最小值PACK(array,mask[,vector]) 使用mask条件把一个数组压缩至vector大小的向量PRODUCT(array[,dim][,mask]) 返回在指定维上满足mask条件的元素的乘积RESHAPE(source,shape[,pad][,order]) 使用顺序order和补充pad数组元素来改变数组形状SHAPE(source) 返回数组的形状SIZE(array[,dim]) 返回数组在指定维上的长度SPREAD(source,dim,ncopies) 通过增加一维来复制数组SUM(array[,dim][,mask]) 返回在指定维上满足mask条件的元素的和TRANSPOSE(matrix) 转置二维数组UBOUND(array[,dim]) 返回指定维上的上界UNPACK(vector,mask,field) 把向量在mask条件下填充field的元素解压至数组。

Intrinsic functions in Fortran(Fortran内置函数)

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中的lg函数

fortran中的lg函数

Fortran中的lg函数详解本文将详细解释Fortran编程语言中的lg函数,包括函数的定义、用途和工作方式。

1. 函数定义在Fortran中,lg函数用于计算一个数的以10为底的对数。

其语法如下:result= lg(x)其中,x为要计算对数的数值,result为计算得到的结果。

2. 函数用途lg函数用于计算数的对数值,对数是数学中的一个重要概念,常用于各种科学和工程计算中。

在计算机编程中,对数函数可以用于解决各种数值计算问题,包括数值分析、优化算法、概率统计等等。

3. 函数工作方式在Fortran中,lg函数使用的是以10为底的对数计算方法。

下面将详细说明其工作方式: 1. 首先,lg函数接收一个数值x作为输入。

2. 然后,lg函数将对数的计算任务交给Fortran的数学库。

Fortran的数学库实现了对数函数的高性能计算方法,可以在多个平台上进行优化。

3. Fortran的数学库根据对数函数的定义,使用迭代或其他数值计算方法来计算x的对数值。

4. 最后,lg函数将计算得到的对数值作为结果返回给调用者。

需要注意的是,由于计算机对浮点数运算有一定的精度限制,所以对于非常小的数值或非常大的数值,lg函数的计算结果可能会不够精确。

4. 示例使用下面通过示例代码演示如何在Fortran中使用lg函数:program lg_exampleimplicit nonereal :: xreal :: resultprint*, "请输入一个正数:"read*, xresult= lg(x)print*, "数", x, "的以10为底的对数为:", resultend program lg_example在上面的示例代码中,我们首先通过read*语句从用户输入中获取一个正数x,然后调用lg函数计算x的对数值,并将结果存储在result变量中。

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转换为单精度实数。

x:I,结果:RFLOOR(x)*求小于等于x的最大整数。

FORTRAN内存函数

FORTRAN内存函数
1
參數 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函数大全(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 len函数

fortran len函数

fortran len函数Fortran是一种数值计算和科学计算的高级语言,通常用于编写物理学、数学、化学和工程学科的程序。

Fortran有很多内置函数,其中len()函数用于返回字符串长度。

下面将分步骤介绍Fortran len()函数的用法。

1.声明字符串变量在使用len()函数之前,需要先声明字符串变量。

下面的示例代码展示如何声明一个字符串变量。

```character(len=20) :: message```上面的代码声明了一个名为message的字符串变量,长度为20个字符。

2.为字符串变量赋值为了使用len()函数,字符串变量需要被赋值。

下面的示例代码展示如何为字符串变量赋值。

```message = "Hello, World!"```上面的代码将"Hello, World!"赋值给message字符串变量。

3.使用len()函数获取字符串长度在变量声明和赋值后,可以使用len()函数获取字符串变量的长度。

下面的示例代码展示了如何使用len()函数获取字符串长度。

```print *, len(message)```上面的代码将字符串变量message的长度打印到控制台上。

在这个示例中,len(message)将返回13字节。

4.使用len()函数实现字符串操作len()函数可以与其他字符串操作一起使用,例如字符串连接、截断和复制等。

下面的示例代码展示了如何使用len()函数截断字符串。

```character(len=20) :: message, truncated_messagemessage = "This is a long message."if (len(message) > 20) thentruncated_message = message(:20)print *, "Truncated message: ", truncated_messageelseprint *, "Message is not too long."end if```上面的代码将检查message字符串变量的长度,如果长度超过20,则将其截断并将截断后的字符串赋给truncated_message变量。

fortran ceiling函数

fortran ceiling函数

fortran ceiling函数Fortran语言是一种高性能数值计算语言,它在科学计算领域中广泛应用。

在Fortran中,有一些内置函数可以方便地进行数学运算。

其中一个非常有用的函数是“ceiling函数”,该函数可以将一个实数向上取整到最近的整数。

下面我们将详细介绍Fortran语言中的ceiling函数。

步骤1:理解Fortran语言中的ceiling函数在Fortran语言中,ceiling函数用于将一个实数向上取整到最近的整数。

其定义如下:CEILING (A)其中,A是要取整的实数。

步骤2:使用Fortran语言中的ceiling函数在Fortran中,可以使用内置函数ceiling来计算一个实数的向上取整结果。

例如,下面的代码将一个实数向上取整为最近的整数:REAL :: x = 2.4INTEGER :: yy = CEILING(x)WRITE(*,*) "x = ", x, " y = ", y根据上述代码的运行结果,变量y将被赋值为3,即2.4被向上取整为了3。

步骤3:注意事项在使用Fortran中的ceiling函数时,需要注意以下几点:1. ceiling函数返回一个整数,因此需要将结果存储在一个整数类型的变量中,如果存储在实数类型的变量中,可能会导致结果不准确。

2. 在处理浮点数运算时,由于计算机内部浮点数表示方式的限制,明显的整数或小数运算可能会出现舍入误差,因此在使用ceiling 函数时,需要注意舍入误差的问题,尽量避免使用累加或递增操作。

3. 在处理较大的浮点数时,需要注意平台精度限制。

多数计算机底层都是采用二进制系统进行计算的,而像0.1这样的小数在二进制系统中是无法精确表示的。

这可能导致一些病态问题,因此在使用ceiling函数时,需要注意平台精度问题。

在实际使用中,可以采用如下方式来降低舍入误差的影响:1. 将数值范围限制在最小值和最大值内。

fortran trim函数

fortran trim函数

fortran trim函数Fortran语言是一种古老但高度可靠的计算机编程语言,对于需要数学计算的科学和工程领域来说更是必不可少的。

在Fortran中,存在着一些内置的函数,其中包括trim函数,它是一种用于截取字符串末尾空格的函数,本文将为您系统地介绍trim函数用法。

trim函数的用法trim函数的用法非常简单,其函数原型如下:trim(string)其中,string是待处理的字符串,可以是变量、数组或常量,其数据类型必须为字符型变量。

trim函数的返回值也是一个字符串,即已经去掉末尾空格的字符串。

下面是一些具体的用法实例,以便我们更好地理解trim的功能:1. 示例1要去掉字符串"A B C "的末尾空格,可以使用以下代码:program trim_demoimplicit nonecharacter(len=10) :: str1 = "A B C "character(len=:), allocatable :: str2str2 = trim(str1)write(*,*) "原始字符串:", str1write(*,*) "结果字符串:", str2end program trim_demo输出结果为:原始字符串: A B C结果字符串:A B C说明:即使该字符串末尾存在多个空格,只要它们都是连续的,trim函数都会将它们全部截取。

结果字符串 1:A B C结果字符串 2:DE F结果字符串 3:GH IJK说明:在处理字符串数组时,需要先将数组复制到一个可分配的字符型数组中,然后使用do循环来遍历所有元素,并对其进行处理。

在使用trim函数时,需要注意以下几点:1. 函数的参数只能是字符型变量,不能为其他数据类型。

2. 函数是不会对原始字符串做出任何改变的,所以需要使用新的变量来存储处理后的字符串。

fortran 中sqr用法

fortran 中sqr用法

fortran 中sqr用法Fortran 中的SQR 函数用于计算给定数值的平方根。

这个函数是一个内置函数,所以大多数Fortran 编译器都支持它。

在本文中,我将介绍如何在Fortran 中使用SQR 函数,以及在程序中使用中括号的其他用途。

在Fortran 中使用SQR 函数在Fortran 中,使用SQR 函数来计算给定数值的平方根非常简单。

只需将要计算其平方根的数字传递给SQR 函数即可,如下所示:fortranx = SQR(16.0)上面的代码将计算数字16.0 的平方根并将其存储在变量x 中。

请注意,SQR 函数接受一个实数作为其输入参数,并返回一个实数作为结果。

在Fortran 中,内置函数的名称通常是大写的。

虽然在某些编译器中大小写不敏感,但在其他编译器中需要注意这一点。

另外,请注意,在使用SQR 函数之前,必须在程序中声明该函数。

这可以通过在程序的顶部或子程序的开头声明一个实数函数来完成,如下例所示:fortranREAL FUNCTION SQR(X)SQR = SQRT(X)END FUNCTION SQR这个函数将X 的平方根计算并返回。

请注意,SQR 函数内部调用了SQRT 函数。

SQRT 函数是另一个内置函数,用于计算给定数值的平方根。

在程序中使用中括号的其他用途在Fortran 中,中括号有多种用途。

下面是其中一些常见的用法:1. 数组索引在Fortran 中,可以使用中括号来引用数组中的特定元素。

例如,以下代码创建一个包含10 个实数的数组,并使用中括号引用第四个元素:fortranREAL, DIMENSION(10) :: myArraymyArray(4) = 3.14注意,在这个例子中,“DIMENSION(10)”告诉编译器我们希望创建一个包含10 个元素的数组。

在数组索引中,数字4 指定我们希望引用的元素。

2. 字符串截断在Fortran 中,可以使用中括号来截断字符串。

Fortran—函数

Fortran—函数

Fortran—函数1.子程序subroutine的使用子程序由call调用,程序以subroutine开头,以end结束子程序最后一个命令通常是return,表示程序要返回原来调用它的地方继续执行子程序和主程序声明的变量和行代码相互独立2.传递参数:在调用子程序时:call add(a,b) !把变量ab交给子程序add来处理传递参数使用同一个内存地址,一个变就都变了重点:传递参数前后类型要一致3.自定义函数调用自定义函数前要先声明自定义函数执行后会返回一个数值声明:类型,extenral::函数名函数:Function函数名(参数)函数返回值类型声明可以写在函数的最开头,跟function写在一起。

Eg, real function add (a,b) !声明函数add的返回值为浮点数调用:直接写函数名即可4.全局变量common:用来定义一块共享空间,可在程序中任何部分被取用取用全局变量时,是根据他们声明时的相对位置关系来做对应,而不是使用变量名称做对应。

可以吧全局变量归类,放在彼此独立的common区间中。

Eg common /group1/acommon /group2/b5.传递参数与全局参量:若共享数据不多,或者只有少数几个程序需要使用这些数据时,那就使用参数;需要共享大批数据,或者很多不同程序都需要这些数据时,使用全局变量6.block data用来设置common变量的初值结构:Block data name !name可以省略Implicit none !最好不要省略Integer … !声明变量Real …Common … !把变量放到common空间中Common /group1/ …Data var1,var2 … !同样适用data设定初值…………End block data name !可以只写end或者 end block data7.变量的生存周期函数中的变量会随子程序的的结束而被淹没,在声明中加入save可以增加变量的生存周期,保留住所保存的数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录 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转换为单精度实数。

x:I,结果:RFLOOR(x)*求小于等于x的最大整数。

x:R,结果:IIFIX(x)*将x转换为整数(取整)。

x:R,结果:IIMAG(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,…中最大值。

x I为任意类型,结果类型同x IMAX1(x1,x2,x3,…)*求x1,x2,x3,…中最大值(取整)。

x I:R,结果:IMIN(x1,x2,x3,…)*求x1,x2,x3,…中最小值。

x I为任意类型,结果类型同x IMIN1(x1,x2,x3,…)*求x1,x2,x3…中最小值(取整)。

x I:R,结果:IMOD(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),结果:RZEXT(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取值弧度,结果类型同xCOSD(x)*求x的余弦cos(x)。

x:R,x取值度,结果类型同xCOSH(x)求x的双曲余弦ch(x)。

x:R,结果类型同xCOTAN(x)*求x的余切ctg(x)。

x:R,x取值度,结果类型同xSIN(x)*求x的正弦sin(x)。

x:R、C,x取值弧度,结果类型同xSIND(x)*求x的正弦sin(x)。

x:R,x取值度,结果类型同xSINH(x)求x的双曲正弦sh(x)。

x:R,结果类型同xTAN(x)*求x的正切tg(x)。

x:R,x取值弧度,结果类型同xTAND(x)*求x的正切tg(x)。

x:R,x取值度,结果类型同xTANH(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)*求指数,即e x。

x:R、C,结果类型同xLOG(x)*求自然对数,即e x。

x:R、C,结果类型同xLOG10(x)*求以10为底对数,即。

x:R,结果类型同xSQRT(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,结果类型同xILEN(x)查询x的反码值。

x:I,结果类型同xKIND(x)*查询x的kind参数值。

x:I、R、C、CH、L,结果:IMAXEXPONENT(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,结果:LRANGE(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,结果:IFRACTION(x)*求实数x机内编码表示的小数值。

x:R,结果类型同xNEAREST(x,s)根据s的正负号求最接近x的值。

x:R,结果:R,且不为0RRSPACING(x)求x与系统最大数之间的差值。

x:R,结果类型同xSCALE(x,I)*求x乘以2i。

x:R,i:I,结果类型同xSET_EXPONENT(x,i)求由x的机内编码小数值与指数i组成的实数。

x:R,i:I,结果类型同x SPACING(x)*求x与x最近值的差值绝对值。

x:R,结果类型同x表6 字符处理函数函数名说明ACHAR(n)将ASCII码n转换为对应字符。

n:I,n值域:0~127,结果:CH(1)ADJUSTL(string)*将字符串string左对齐,即去掉左端空格。

string:CH(*),结果类型同string ADJUSTR(string)*将字符串string右对齐,即去掉右端空格。

string:CH(*),结果类型同string CHAR(n)*将ASCII码n转换为对应字符。

n:I,n值域:0~255,结果:CH(1)IACHAR(c)*将字符c转换为对应的ASCII码。

c:CH(1),结果:IICHAR(c)*将字符c转换为对应的ASCII码。

c:CH(1),结果:IINDEX(s,ss[,b])*求子串ss在串s中起始位置。

s:CH(*),ss:CH(*),b:L,结果:I。

b为真从右起LEN(s)*求字符串s的长度。

s:CH(*),结果:ILEN_TRIM(s)*求字符串s去掉尾部空格后的字符数。

s:CH(*),结果:ILGE(s1,s2)*按ASCII码值判定字符串s1大于等于字符串s2。

s1:CH(*),s1:CH(*),结果:L LGT(s1,s2)*按ASCII码值判定字符串s1大于字符串s2。

s1:CH(*),s1:CH(*),结果:LLLE(s1,s2)*按ASCII码值判定字符串s1小于等于字符串s2。

s1:CH(*),s1:CH(*),结果:L LLT(s1,s2)*按ASCII码值判定字符串s1小于字符串s2。

s1:CH(*),s1:CH(*),结果:LREPEAT(s,n)*求字符串s重复n次的新字符串。

s:CH(*),n:I,结果:CH(*)SCAN(s,st[,b])求串st中任一字符在串s中的位置。

s:CH(*),ss:CH(*),b:L,结果:ITRIM(s)*求字符串s去掉首尾部空格后的字符数。

s:CH(*),结果:CH(*)VERIFY(s,st[,b])求不在串st中字符在s中位置。

s:CH(*),ss:CH(*),b:L,结果:I。

b为真右起表7 二进制位操作函数函数名说明BIT_SIZE(n)*求n类型整数的最大二进制位数。

n:I,结果类型同nBTEST(n,p)判定整数n的二进制表示右起第p位是否为1。

相关文档
最新文档