fortan标准库函数

合集下载

Fortran入门——函数调用

Fortran入门——函数调用

Fortran⼊门——函数调⽤当我的第⼀个Fortran程序 "Hello World" 诞⽣后,我的下⼀个⽬标便是写⼀个包含函数调⽤的程序,⾄于那些什么代码格式,数据类型,语法等等全部⾛马观花浏览⼀遍,既然需要速成,那么细节⽅⾯只能略过,将来有需要可以再补。

在VS中新建⼀个 Fortran-Console Application项⽬,选择默认的EmptyProject模板。

然后添加⼀个Source⽂件。

在新添加的Source⽂件中输⼊如下代码1 integer function Add(x,y)2implicit none3 integer ::x,y4 Add=x+y5 end function如上代码所⽰便是⼀个⾮常简单的Fortran函数,写成C#代码的话如下1int Add(int x,int y)2 {3return x+y;4 }可以看到在Fortran中代码块没有C#的⼤括号表⽰法。

interger function end 等关键字皆为⼩写。

在旧版本中,貌似必须⼤写。

在Fortran函数中,参数的数据类型在函数体中定义,如"integer ::x,y",函数的返回值则需要赋给函数的名称"Add=x+y",这点着实不太习惯。

函数有了,接下来该是调⽤了,再敲点代码吧1 program main2 integer:: x,y3 integer Add4 read *, x,y5 print *,Add(x,y)6 read *,x7 end在主程序中,需要声明Add函数的类型"integer Add",否则调⽤会失败。

可以看到,⼀个简单的函数调⽤程序,相⽐C#等语⾔,在语法格式上还是有不少区别的。

fortran sleep函数

fortran sleep函数

fortran sleep函数Fortran是一种编程语言,最初用于科学计算和数值计算。

Fortran 语言中有一个非常有用的函数,即"sleep"函数,用于暂停程序的执行一段时间。

在本文中,我们将详细介绍Fortran的sleep函数及其用法。

Fortran的sleep函数用于暂停程序的执行一段时间,可以在程序中添加适当的延迟,以控制程序的执行速度。

这在需要程序等待一段时间后再执行某些操作时非常有用,比如在进行数据处理时,需要给程序一些时间来读取和处理数据。

使用Fortran的sleep函数很简单,只需在程序中调用该函数,并指定暂停的时间长度。

时间长度可以是整数或浮点数,单位为秒。

例如,要让程序暂停2秒,可以使用以下代码:```FortranCALL sleep(2)```上述代码中,"CALL"是Fortran语言中的调用函数的关键字,后面跟着函数名"sleep"和括号内的参数"2",表示暂停2秒。

需要注意的是,Fortran的sleep函数并不是所有编译器都支持的,因此在使用之前,最好先检查编译器的文档或帮助文件,确保该函数可用。

在实际应用中,Fortran的sleep函数有很多用途。

例如,在编写一个游戏程序时,可以使用sleep函数来控制游戏中的动画效果。

通过适当的延迟,可以使动画看起来更加流畅。

Fortran的sleep函数还可以用于调试程序。

当程序执行过快或过慢时,可以通过添加适当的延迟来观察程序的执行过程,以便更好地定位和解决问题。

需要注意的是,虽然sleep函数可以使程序暂停一段时间,但并不是精确的。

实际的暂停时间可能会受到系统和其他因素的影响,因此在编写程序时,应该考虑到这一点,并在需要精确控制时间的情况下,使用其他更为准确的方法。

总结一下,Fortran的sleep函数是一种非常有用的工具,可以用于暂停程序的执行一段时间。

fortran 三角函数

fortran 三角函数

fortran 三角函数Fortran是一门古老的编程语言,最初由IBM公司在20世纪50年代开发。

它的全称是Formula Translation,因为最初它是用来进行科学和工程计算,特别是数值计算的语言。

Fortran具有很强的数学运算能力,自然而然地也就包含了各种三角函数的计算。

在Fortran中,三角函数可以使用数学库函数来计算。

Fortran的数学库包含了许多用于科学计算的函数,包括三角函数,对数函数,指数函数等等。

下面是Fortran中常见的三角函数及其用法:1. sin函数Sin函数可用于计算给定角度的正弦值。

Fortran命令为sin(x),其中x是以弧度为单位的角度。

要计算30度的sin值,可以使用以下Fortran代码:program sin_exampleimplicit nonereal :: sin30sin30 = sin(30*3.14159/180)write(*,*) sin30end program sin_example在这个例子中,我们将30度的值转换为弧度,并将结果存储在sin30变量中。

我们输出sin30的值。

2. cos函数Cos函数可用于计算给定角度的余弦值。

Fortran命令为cos(x),其中x是以弧度为单位的角度。

要计算60度的cos值,可以使用以下Fortran代码:program cos_exampleimplicit nonereal :: cos60cos60 = cos(60*3.14159/180)write(*,*) cos60end program cos_example在这个例子中,我们将60度的值转换为弧度,并将结果存储在cos60变量中。

我们输出cos60的值。

3. tan函数Tan函数可用于计算给定角度的正切值。

Fortran命令为tan(x),其中x是以弧度为单位的角度。

要计算45度的tan值,可以使用以下Fortran代码:program tan_exampleimplicit nonereal :: tan45tan45 = tan(45*3.14159/180)write(*,*) tan45end program tan_example在这个例子中,我们将45度的值转换为弧度,并将结果存储在tan45变量中。

fortran find函数

fortran find函数

Fortran Find函数1. 简介Fortran是一种高性能科学计算语言,广泛用于数值计算和科学工程。

在Fortran 中,有许多内置函数可用于数组和字符串的操作。

其中一个常用的函数是Find函数,用于查找数组中的元素。

2. Find函数的语法和用法Find函数的语法如下:index = Find(array, value [, dim])其中,array是要搜索的数组,value是要查找的元素,dim是可选参数,指定在哪个维度上进行查找。

如果不指定dim,则默认在整个数组中查找。

Find函数返回一个整数值,表示查找到的元素在数组中的位置。

如果找不到该元素,则返回0。

下面是一个示例代码,演示了Find函数的用法:program find_exampleimplicit noneinteger :: array(5) =[1, 3, 5, 7, 9]integer :: indexindex = Find(array, 5)if (index == 0) thenprint *, "Element not found"elseprint *, "Element found at index", indexend ifend program find_example上述代码中,我们定义了一个包含5个元素的整数数组array,并使用Find函数查找值为5的元素。

如果找到了该元素,则输出其在数组中的位置;如果未找到,则输出提示信息。

3. Find函数的工作原理Find函数的工作原理是通过遍历数组中的元素,逐个与要查找的元素进行比较,直到找到匹配的元素或遍历完整个数组。

在Fortran中,数组的索引是从1开始的。

因此,在查找过程中,Find函数会从数组的第一个元素开始比较,直到找到匹配的元素或遍历到最后一个元素。

4. Find函数的应用场景Find函数在很多情况下都可以派上用场。

FORTRAN95第01章-概述讲课讲稿

FORTRAN95第01章-概述讲课讲稿
32
2.实型常数 实型常数有多种不同的表示形式。 (1)基本实常数形式 基本实常数形式与日常习惯写法相同,由
一个正(或负)号、整数部分、小数点和小数 部分组成。其中正号可以省略,并且允许没有 整数部分或小数部分,但小数点是必须的。例 如 0.0 .02 314. -27.567 256.0 +0.05 都是正确的表示形式。
16
二、FORTRAN语句 每个程序段和模块由若干条FORTRAN语句
组成,这些语句又分为可执行语句和非执行语 句。可执行语句在程序执行时使计算机产生 某种特定的操作,如赋值、输入输出、控制 转移等。非执行语句只是用于将某些信息
(如变量的类型、数组的维数及大小、数 据的输入输出格式等)通知编译程序,使编 译程序在编译源程序时按这些信息要求进行 处理。程序执行时非执行语句不会使计算机 产生任何操作。
据取值范围不同,处理方式不同,存储形式和书写形 式也不同。FORTRAN语言中有五种基本数据类型。
24
一、整型(INTEGER) 整型表示整数的类型,分长整型和短整型。在PC
机中长整型占4个字节(32bit),可保存的数值范围 在-2147483648~2147483647之间(-231 ~231-1);短整 型占2个字节,保存的数值范围在-32768~32767之间, 即(-215 ~215-1)。
有规定每行的第几个字符有什么作用: 每行最多可写132个字符; 叹号“!”后的内容都是注释; 如果需要写语句标号, 则标号可以紧挨着写在语句第1个字符
前面; 一行字符的最后如果是符号“&”,则表示下一行是该行的继
续。如果一行程序代码开头是符号&,则其上一行的最后非空格 符必须是一个&号, 且&号前不能有空格,表示该行是上一行的继 续。这种形式的续行允许把一个常数、变量名、关键字等分开放 在两行上。

fortran pause 函数

fortran pause 函数

fortran pause 函数
在Fortran中,`PAUSE` 是一个内建函数,用于暂停程序的执行。

当你在程序中调用`PAUSE` 函数时,程序会停止执行并等待用户按下一个键。

下面是一个简单的示例:
```fortran
PROGRAM DemoPause
IMPLICIT NONE
INTEGER :: i
DO i = 1, 5
PRINT *, 'This is loop iteration', i
PAUSE 'Press any key to continue...'
END DO
END PROGRAM DemoPause
```
在这个示例中,程序会打印出"This is loop iteration" 后面跟着迭代次数,然后通
过`PAUSE` 函数暂停并等待用户按键。

需要注意的是,`PAUSE` 函数在一些编译环境中可能不可用或者有不同的行为。

如果你在使用`PAUSE` 函数时遇到问题,你可能需要查阅你所使用的编译环境的文档或者寻求更具体的帮助。

fortran index函数

fortran index函数

fortran index函数【原创版】目录1.Fortran 中的函数2.index 函数的作用3.index 函数的语法4.index 函数的示例5.index 函数的优缺点正文1.Fortran 中的函数Fortran(Formula Translation)是一种高级编程语言,主要用于数值计算和科学计算。

在 Fortran 中,函数是一种可以实现特定功能的子程序,它可以接收输入参数,并返回输出参数。

通过使用函数,可以实现代码复用,提高程序的可读性和可维护性。

2.index 函数的作用在 Fortran 中,index 函数用于返回一个数组中指定元素的索引。

这个函数可以用于访问数组中的特定元素,或者检查某个元素是否存在于数组中。

3.index 函数的语法Fortran 中的 index 函数语法如下:```index(array, index)```其中,array 表示要访问的数组,index 表示要访问的元素在数组中的索引。

如果 index 小于等于数组的最大尺寸,那么函数将返回 index;如果 index 大于数组的最大尺寸,那么函数将返回一个错误信息。

4.index 函数的示例下面是一个使用 index 函数的简单示例:```fortranprogram exampleimplicit noneinteger :: a(5) = (/ 1, 2, 3, 4, 5 /)integer :: index = 3integer :: resultresult = index(a, index)print *, "The index of element", index, "in array a is", resultend program example```在这个示例中,我们定义了一个名为 a 的整数数组,并将其初始化为 1 到 5 的整数。

然后,我们使用 index 函数查找数组 a 中索引为 3 的元素,并将结果输出到屏幕上。

fortranreshape函数

fortranreshape函数

fortranreshape函数 Fortran中的reshape函数可以用于改变数组的形状,即重新排列数组的元素。它可以用于数组的展开和封装操作。

reshape函数有以下语法格式: ``` RESULT=RESHAPE(SOURCE,SHAPE[,PAD[,ORDER]]) ``` 其中,RESULT是一个数组,用于存储在改变形状后的数组;SOURCE是要改变形状的源数组;SHAPE是一个整数数组,用于定义结果数组的形状;PAD是一个可选的参数,用于指定当源数组中的元素数目不足以填满结果数组时,用来填充结果数组的值;ORDER是一个可选的参数,用于指定结果数组的存储顺序。

下面是reshape函数的一些例子,以帮助理解该函数的使用方法。 1.简单使用 ```fortran PROGRAM reshape_example IMPLICITNONE INTEGER, DIMENSION(2, 3) :: source INTEGER, DIMENSION(6) :: result source = RESHAPE((/ 1, 2, 3, 4, 5, 6 /), (/ 2, 3 /)) result = RESHAPE(source, (/ 6 /)) WRITE(*,*) "source:" WRITE(*,*) source WRITE(*,*) "result:" WRITE(*,*) result END PROGRAM reshape_example ``` 结果输出: ``` source: 123 456 result: 123456 ``` 在上面的示例中,首先使用RESHAPE函数将一维数组改变为2x3的数组source,然后再使用RESHAPE函数将source重新改变为一维数组result。

2.使用PAD参数 ```fortran PROGRAM reshape_example IMPLICITNONE INTEGER, DIMENSION(2, 3) :: source INTEGER, DIMENSION(6) :: result source = RESHAPE((/ 1, 2, 3 /), (/ 2, 3 /)) result = RESHAPE(source, (/ 6 /), PAD = -1) WRITE(*,*) "source:" WRITE(*,*) source WRITE(*,*) "result:" WRITE(*,*) result END PROGRAM reshape_example ``` 结果输出: ``` source: 123 000 result: 123-1-1-1 ``` 在上面的示例中,源数组只有3个元素,但目标形状需要6个元素,因此使用PAD参数将源数组不足的3个元素填充为-1

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

FORTRAN90标准库函数符号约定: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,结果: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,结果类型同xDPROD(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 I MAX1(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,结果类型同xMODULO(x,y)求x/y余数,值为x-FLOOR(x/y)*y。

x:I、R,y的类型同x,结果类型同xNINT(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,结果类型同xSNGL(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~π/2ATAND(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取值度,结果类型同xCOSH(x)求x的双曲余弦ch(x)。

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

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

x:R、C,x取值弧度,结果类型同x SIND(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,结果:IEPSILON(x)*查询x类型可表示的最小正实数。

x:R,结果类型同x。

最小正实数:1.1920929E-07HUGE(x)*查询x类型可表示的最大数。

x:I、R,结果类型同x ILEN(x)查询x的反码值。

x:I,结果类型同xKIND(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,结果: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,结果: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,结果类型同xSET_EXPONENT(x,i)求由x的机内编码小数值与指数i组成的实数。

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

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

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

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

string:CH(*),结果类型同stringCHAR(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(*),结果:LLGT(s1,s2)*按ASCII码值判定字符串s1大于字符串s2。

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

s1:CH(*),s1:CH(*),结果:LLLT(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。

n:I,p:+I,p值域:0~64结果:LIAND(m,n)*对m和n进行按位逻辑“与”运算。

相关文档
最新文档