Fortran 95内在过程

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

附录B Fortran 95内在过程

FORTRAN 95标准提供了115个内在过程,其中包括109个内在函数和6个内在子例行子程序。很多编译系统还提供额外的内在过程。

按照形式,内在过程分为如下两类:通用过程;专用过程。

所谓通用过程是一个集合名称,通用过程与专用过程是一个集合与其元素的关系。一个通用过程由两个或多个专用过程组成。

在所有的115个内在过程当中,除了如下4个内在函数外,其他都是通用过程:LGE、LGT、LLE和LLT。

专用过程针对具体类型与种别的变量。例如,求一个变量的绝对值的通用过程为ABS(X),而求一个整型变量的绝对值的专用过程为IABS(X),求一个复型变量的绝对值的专用过程为CABS(X),如此等等。所以,每个通用过程属下的专用过程都必定具有相应的类型,种别,甚至维的属性。这些专用过程的名称的主要用途是作为实元来传递,这时就必须使用专用过程名称。注意,在表中注明了少数专用过程不能作为实元。

按照功能,FORTRAN 95的内在过程主要分为如下5类:查询与数字操作函数;转换,置空以及传递函数;计算函数;数组函数;内在子例行程序。

如果从功能的角度来对内在过程分类,那么除了上面的比较具体的5类之外,还可以从内在过程对数组的作用方式的角度,把内在过程分为两大类:逐元过程和变换过程。

所谓逐元过程,就是从数学的观点来看,这些专用过程的计算对象并不是数组,但是可以运用一种自然的方式使得这专用过程能够作用于数组对象,并且得到相同形状的数组结果。也就是使得该过程分别作用于数组的每个元素,把所有的过程结果再集合起来作为结果数组。内在过程当中的大部分都属于逐元过程,包括:转换函数;计算函数(除了REPEA T,TRIM,DOT_PRODUCT,MA TMUL之外);子例行程序MVBITS。其他的所有内在过程就都不是逐元过程了。

所谓变换过程,就是内在过程里面逐元过程之外的所有过程都称为变换过程,因为从它们的定义的实质上看,就是作用于一个数组数据对象,得到一个标量或者数组结果,也就是一个变换的过程,而不是单独地作用于每个元素。因此除了函数NULL之外,所有的变换过程或者是具有一个取数组值的哑元,或者是具有一个取数组值的实元,它们对数组的作用都是某种整体变换作用。例如对于向量的乘积,就不能逐个元素地进行。

内在过程的引用正如一般过程的引用一样,可以使用关键词变量。由于某些内在过程的变量是可选项,因此使用关键词能够省略相应的实元。

常见的关键词哑元名称含义如下:

● DIM:DIM主要用于数组简化函数以及其他一些数组函数,表示在函数的作用对象不是整个数组的情况下,数组的哪个维被过程作用。DIM取值为标量整型值,并且常常是可选变量。

●KIND:KIND一般用于转换函数,说明转换结果的种别参数。KIND实元必须是一个标量整型初始化表达式,一般是可选的。

●BACK:BACK作为一个可选的逻辑型变量用来表示逆序过程,即它所出现的内在过程的对于数据对象的反方向操作。例如,如果在内在过程INDEX当中出现了BACK=.TRUE.,那么INDEX的搜索操作就必须与正常方向相反,即从字符串的右端开始。

注意内在函数的非指针哑元都具有INTENT(IN)的属性,而指针哑元则不能改变其关联的实元或目标。

注1:该函数没有相应的通用过程名称,它的结果为默认整型。注2:该函数没有相应的通用过程名称,它的结果为默认实型。注3:标注星号*的函数不能用作实元。

注4:某些专用过程名称与其通用过程名称一样。

注:表B2中哑元名表示其类型:I 整型; R 实型; C 复型; S 字符型; L 逻辑型; X 多种类型; CH 单字符;

A 数组;M 矩阵; P 指针; V 向量; LA 逻辑型数组; IA 整型数组

相关文档
最新文档