6.7库过程规格说明 BACKWARD FORWARD


6.7.1 ALL_PREFIX(MASK,DIM,SEGMENT,EXCLUSIVE)

可选参数:DIM,SEGMENT,EXCLUSIVE

描述:沿MASK的第DIM维计算一个分段的逻辑AND扫描。

分类:转换函数

参数:

 MASK:       必须是逻辑型的且不能是标量。

 DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是MASK的维数。

 SEGMENT(可选的): 必须是逻辑型且与MASK具有相同的形状。

 EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同MASK。

结果值:结果元素r的值是ALL((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的MASK的元素集合(可能是空的)。

例子:ALL_PREFIX((/T,F,T,T,T/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.2 ALL_SCATTER(MASK,BASE,INDX1,..,INDXn)

描述:将MASK的元素分散到索引数组INDX1,...,INDXn所指定的结果位置上。一个结果元素为真当且仅当相应的BASE元素以及MASK中分散到该位置上的所有元素都为真。

分类:转换函数

参数:

MASK:     必须是逻辑型的。一定不能是标量。

BASE:     必须是逻辑型的,且与MASK具有相同的种类参数。不能是标量。

INDX1,...INDXn:必须是整型的且与MASK相符。INDX参数的个数必须等于BASE的维数。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是ALL((/a1,a2,...,am,b/)),其中,(a1,a2,...,am)与b相关联的MASK中的元素(见6.4.4节)。

例子:ALL_SCATTER((/T,T,T,F/)(/T,T,T/),(/1,1,2,2/))的结果

6.7.3 ALL_SUFFIX(MASK,DIM,SEGMENT,EXCLUSIVE)

可选参数:DIM,SEGMENT,EXCLUSIVE

描述:沿MASK的第DIM维计算一个反向的,分段的逻辑AND搜寻。

分类:转换函数。

参数:

MASK:     必须是逻辑型的。一定不能是标量。

DIM(可选的):     必须是一个整型标量,其值的范围是1DIMn,其中n是MASK的维数。

SEGMENT(可选的): 必须是逻辑型且与MASK具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同MASK。

结果值:结果元素r的值是ALL((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的MASK的元素集合(可能是空的)。

例子:ALL_SUFFIX(/T,F,T,T,T/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.4 ANY_PREFIX(MASK,DIM,SEGMENT,EXCLUSIVE)

可选参数:DIM,SEGMENT,EXCLUSIVE。

描述:沿MASK的第DIM维计算一个分段的逻辑OR扫描。

分类:转换函数。

参数:

MASK:     必须是逻辑型的。一定不能是标量。

DIM(可选的):     必须是一个整型标量,其值的范围是1DIMn,其中n是MASK的维数。

SEGMENT(可选的): 必须是逻辑型且与MASK具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同MASK。

结果值:结果元素r的值是ANY((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的MASK的元素集合(可能是空的)。

例子:ANY_PREFIX((/F,T,F,F,F/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.5 ANY_SCATTER(MASK,BASE,INDX1,..,INDXn)

描述:将MASK的元素分散到索引数组INDX1,...,INDXn所指定的结果位置上。一个结果元素为真当且仅当相应的BASE元素以及MASK中分散到该位置上的任一元素为真。

分类:转换函数

参数:

MASK:     必须是逻辑型的。一定不能是标量。

BASE:     必须是逻辑型的,且与MASK具有相同的种类参数。不能是标量。

INDX1,...INDXn:必须是整型的且与MASK相符。INDX参数的个数必须等于BASE的维数。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是ANY((/a1,a2,...,am,b/)),其中,(a1,a2,...,am)与b相关联的MASK中的元素(见6.4.4节)。

例子:ANY_SCATTER((/T,F,F,F/)(/F,F,T/),(/1,1,2,2/))的结果是

6.7.6 ANY_SUFFIX(MASK,DIM,SEGMENT,EXCLUSIVE)

可选参数:DIM,SEGMENT,EXCLUSIVE。

描述:沿MASK的第DIM维计算一个分段的逻辑OR扫描。

分类:转换函数。

参数:

MASK:     必须是逻辑型的。一定不能是标量。

DIM(可选的):     必须是一个整型标量,其值的范围是1DIMn,其中n是MASK的维数。

SEGMENT(可选的): 必须是逻辑型且与MASK具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同MASK。

结果值:结果元素r的值是ANY((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的MASK的元素集合(可能是空的)。

例子:ANY_SUFFIX((/F,T,F,F,F/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.7 COPY_PREFIX(ARRAY,DIM,SEGMENT)

可选参数: DIM,SEGMENT。

描述:沿ARRAY的第DIM维计算一个分段的拷贝扫描。

分类:转换函数。

参数:

ARRAY:       可以是任意类型,但不能是标量。

DIM(可选的):    必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

SEGMENT(可选的): 必须是逻辑型的且必须与ARRAY具有相同的形状。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是a1,其中,(a1,...,am)是按数组元素顺序,根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合。注意该集合不能为空。

例子:COPY_PREFIX((/1,2,3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.8 COPY_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)

可选参数:MASK。

描述:将MASK所选定的ARRAY中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。结果的每一个元素等于ARRAY分散到该位置上的某一个元素的值,或者如果该位置上没有ARRAY的元素,则等于BASE相应元素的值。

分类:转换函数。

参数:

ARRAY:    可以是任意类型,但不能是标量。

BASE:     必须与ARRAY具有相同的类型和种类参数。

INDX1,..,INDXn:必须是整型的且与ARRAY相符。INDX参数的个数必须等于BASE的维数。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数和形状:同BASE。

结果值:令S是6.4.4节中所描述的与BASE中元素b相关联的ARRAY中的元素集合。

如果S是空的,则对应于BASE中元素b的结果元素与b具有相同的值。

如果S是非空的,则对应于BASE中元素b的结果元素是从S中筛选出的一个元素。HPF不指定如何进行筛选;筛选机制可依赖于实现。

例子:COPY_SCATTER((/1,2,3,4/),(/7,8,9/),(/1,1,2,2/))的结果是[x,y,9],其中x是集合{1,2}的成员且y是集合{3,4}的成员。

6.7.9 COPY_SUFFIX(ARRAY,DIM,SEGMENT)

可选参数: DIM,SEGMENT。

描述:沿ARRAY的第DIM维计算一个分段的拷贝扫描。

分类:转换函数。

参数:

ARRAY:       可以是任意类型,但不能是标量。

DIM(可选的):    必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

SEGMENT(可选的): 必须是逻辑型的且必须与ARRAY具有相同的形状。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是am,其中,(a1,...,am)是按数组元素顺序,根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合。注意该集合不能为空。

例子:COPY_SUFFIX((/1,2,3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.10 COUNT_PREFIX(MASK,DIM,SEGMENT,EXCLUSIVE)

可选参数:DIM,SEGMENT,EXCLUSIVE

描述:沿MASK的第DIM维计算一个分段的COUNT扫描。

分类:转换函数。

参数:

MASK         必须是逻辑型的,但不能是标量。

DIM(可选的):    必须是一个整型标量,其值的范围是1DIMn,其中n是MASK的维数。

SEGMENT(可选的):  必须是逻辑型且与MASK具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:结果的类型缺省是整型且与MASK具有相同的形状。

结果值:结果元素r的值是COUNT((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的MASK的元素集合(可能是空的)。

例子:COUNT_PREFIX((/F,T,T,T,T/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.11 COUNT_SCATTER(MASK,BASE,INDX1,...,INDXn)

描述:将MASK的元素分散到索引数组INDX1,...,INDXn所指定的结果位置上。每个结果元素是BASE的相应元素与MASK中分散到该位置的真元素个数的和。

分类:转换函数。

参数:

MASK:      必须是逻辑型的,但不能是标量。

BASE:      必须是整型的,但不能是标量。

INDX1,...,INDXn: 必须是整型的且与MASK相符。INDX参数的个数必须等于BASE的位数。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是b+COUNT((/a1,a2,...,am/)),其中,(a1,a2,...,am)是6.4.4节所描述的与b相关联的MASK中的元素。

例子:COUNT_SCATTER((/T,T,T,F/),(/1,-1,0/),(/1,1,2,2/))的结果是

6.7.12 COUNT_SUFFIX(MASK,DIM,SEGMENT,EXCLUSIVE)

可选参数:DIM,SEGMENT,EXCLUSIVE

描述:沿MASK的第DIM维计算一个分段的COUNT扫描。

分类:转换函数。

参数:

MASK         必须是逻辑型的,但不能是标量。

DIM(可选的):    必须是一个整型标量,其值的范围是1DIMn,其中n是MASK的维数。

SEGMENT(可选的):  必须是逻辑型且与MASK具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:结果的类型缺省是整型且与MASK具有相同的形状。

结果值:结果元素r的值是COUNT((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的MASK的元素集合(可能是空的)。

例子:COUNT_SUFFIX((/T,F,T,T,T/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.13 GRADE_DOWN(ARRAY,DIM)

可选参数:DIM。

描述:产生一个数组索引的置换,并按降序对数组元素值排序。

分类:转换函数。

参数:

ARRAY:     必须是整型,实型或字符型。不能是标量。

DIM(可选的): 必须是整型标量,其值的范围是1DIMn,其中,n是ARRAY的维数。相应的实参一定不能是可选的哑参。

结果类型,类型参数和形状:结果缺省是整型。如果存在DIM,则结果与ARRAY具有相同的形状。如果不存在DIM,则结果的形状是(/SIZE(SHAPE(ARRAY)),SIZE(ARRAY)/)。

结果值:

情形(i): 

情形(ii): 

例子:

情形(i): 

情形(ii): 

6.7.14 GRADE_UP(ARRAY,DIM)

可选参数:DIM。

描述:产生一个数组索引的置换,并按升序对数组元素值排序。

分类:转换函数。

参数:

ARRAY:     必须是整型,实型或字符型。不能是标量。

DIM(可选的): 必须是整型标量,其值的范围是1DIMn,其中,n是ARRAY的维数。相应的实参一定不能是可选的哑参。

结果类型,类型参数和形状:结果缺省是整型。如果存在DIM,则结果与ARRAY具有相同的形状。如果不存在DIM,则结果的形状是(/SIZE(SHAPE(ARRAY)),SIZE(ARRAY)/)。

结果值:

情形(i): 

情形(ii): 

例子:

情形(i): 

情形(ii): 

6.7.15 HPF_ALIGNMENT(ALIGNEE,LB,UB,STRIDE,AXIS_MAP,
     IDENTITY_MAP,NCOPIES)

可选参数:LB,UB,STRIDE,AXIS_MAP,IDENTITY_MAP,NCOPIES

描述:返回关于一个变量和它所根本对准的对准目标(数组或模板)之间对应关系的信息。

分类:映射查询子程序。

参数:

ALIGNEE:    

LB(可选的)   

UB(可选的)   

STRIDE(可选的) 

AXIS_MAP(可选的)

IDENTITY_MAP(可选的)

NCOPIES(可选的) 

例子:如果ALIGNEE是标量,则不对LB,UB,STRIDE或AXIS_MAP的任何元素置值。

给定定义:

    REAL PI=3.1415927
    DIMENSION A(10,10),B(20,30),C(20,40,10),D(40)
 !HPF$ TEMPLATE T(40,20)
 !HPF$ ALIGN A(I,:) WITH T(1+3*I,2:20:2)
 !HPF$ ALIGN C(I,*,J) WITH T(J,21-I)
 !HPF$ ALIGN D(I) WITH T(I,4)
 !HPF$ PROCESSORS PROCS(4,2), SCALARPROC
 !HPF$ DISTRIBUTE T(BLOCK,BLOCK) ONTO PROCS
 !HPF$ DISTRIBUTE B(CYCLIC,BLOCK) ONTO PROCS
 !HPF$ DISTRIBUTE ONTO SCALARPROC :: PI

假设实际映射与指令所指定的相同,则HPF_ALIGNMENT的结果是:

            A    B    C    D
    ————————————————————————
       LB   [4,2]  [1,1] [20,N/A,1] [1]
       UB   [31,20] [20,30] [1,N/A,10] [40]
      STRIDE  [3,2]  [1,1]  [-1,0,1]  [1]
      AXIS_MAP [1,2]  [1,2]  [2,0,1]  [1]
    IDENTITY_MAP false  true  false   false
      NCOPIES   1    1    1     1

在这里,“N/A”指定了一个依赖于实现的结果。为阐述NCOPIES的使用,考虑:

    LOGICAL BOZO(20,20),RONALD_MCDONALD(20)
 !HPF$ TEMPLATE EMMETT_KELLY(100,100)
 !HPF$ ALIGN RONALD_MCDONALD(I) WITH BOZO(I,*)
 !HPF$ ALIGN BOZO(J,K) WITH EMMETT_KELLY(J,5*K)

调用 HPF_ALIGNMENT(RONALD_MCDONALD,NCOPIES=NC)将NC置为20。现在考虑:

    LOGICAL BOZO(20,20),RONALD_MCDONALD(20)
 !HPF$ TEMPLATE WILLIE_WHISTLE(100)
 !HPF$ ALIGN RONALD_MCDONALD(I) WITH BOZO(I,*)
 !HPF$ ALIGN BOZO(J,*) WITH WILLIE_WHISTLE(J,5*K)

调用 HPF_ALIGNMENT(RONALD_MCDONALD,NCOPIES=NC)将NC置为1。

6.7.16 HPF_DISTRIBUTION(DISTRIBUTEE,AXIS_TYPE,AXIS_INFO,
     PROCESSORS_RANK,PROCESSORS_SHAPE)

可选参数:AXIS_TYPE,AXIS_INFO,PROCESSORS_RANK,PROCESSORS_SHAPE

描述:HPF_DISTRIBUTION子程序返回与一个变量相关联的根本对准目标的分配信息。

分类:映射查询子程序。

参数:

DISTRIBUTEE   

AXIS_TYPE(可选的)

AXIS_INFO(可选的)

PROCESSORS_RANK(可选的)

PROCESSORS_SHAPE(可选的)

例子:给定6.7.15节例子中的定义,且假设实际的映射与指令所指定的相同,则HPF_DISTRIBUTION的结果是:

            A          B       PI
  ———————————————————————————————
     AXIS_TYPE ['BLOCK','BLOCK'] ['CYCLIC','BLOCK'] [ ] 
     AXIS_INFO  [10,10]       [1,15]      [ ]
  PROCESSORS_SHAPE  [4,2]        [4,2]      [ ]
  PROCESSORS_RANK   2          2        0
6.7.17 HPF_TEMPLATE(ALIGNEE,TEMPLATE_RANK,LB,UB,AXIS_TYPE,
     AXIS_INFO,NUMBER_ALIGNED)

可选参数:LB,UB,AXIS_TYPE,AXIS_INFO,NUMBER_ALIGNED,TEMPLATE_RANK

描述:HPF_TEMPLATE子程序返回与一个变量相关联的根本对准目标的信息;HPF_TEMPLATE所返回的是从变量的根本对准目标角度所看到的信息,而HPF_ALIGNMENT所看到的是从变量的角度所看到的信息。

分类:映射查询子程序。

参数:

ALIGNEE:    

TEMPLATE_RANK(可选的)

LB(可选的)   

UB(可选的)   

AXIS_TYPE(可选的)

AXIS_INFO(可选的)

例子:给定6.7.15节例子中的定义,且假设实际的映射与指令所指定的相同,则HPF_TEMPLATE的结果是:

            A          B       D
  ———————————————————————————————
      LB    [1,1]        [1,1]     [1,1] 
      UB    [40,20]       [40,20]    [40,20]
     AXIS_TYPE ['NORMAL',      ['NORMAL',   ['NORMAL',
           'NORMAL']      'NORMAL']   'SINGLE']
     AXIS_INFO  [1,2]        [3,1]      [1,4]
  NUMBER_ALIGNED    3           3        3
  TEMPLATE_RANK    2           2        2
6.7.18 IALL(ARRAY,DIM,MASK)

可选参数:DIM,MASK。

描述;沿ARRAY的第DIM维计算一个位逻辑AND归约。

分类:转换函数。

参数:

ARRAY:必须是整型,不能是标量。

DIM(可选的):必须是一个整型标量,其值的范围在1DIMn之间,其中n是ARRAY的维数。相应的实参不能是一个可选哑参。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数,以及形状:结果是整型的,并与ARRAY具有相同的种类参数。如果不存在DIM或ARRAY是一维的,则它是标量;否则,结果是一个n-1维数组,且其形状是(d1,d2,...,dDIM-1,dDIM+1,...,dn),其中(d1,d2,..,dn)是ARRAY的形状。

结果值:

情形(i):

情形(ii):

情形(iii):

例子:

情形(i):IALL(/7,6,3,2/)的值是2。

情形(ii):IALL(C,MASK=BTEST(C,0))的值是C中奇数元素的IAND归约。

情形(iii):如果B是数组,则IALL(B,DIM=1)的结果是,且IALL(B,DIM=2)的结果是

6.7.19 IALL_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个分段的位逻辑AND扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是IALL((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:IALL_PREFIX((/1,3,2,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.20 IALL_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)

可选参数:MASK。

描述:将MASK所选定的ARRAY中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。当且仅当BASE中相应元素的第j位以及分散到该位置上的ARRAY中元素的第j位都等于1时,结果元素的第j位为1。

分类:转换函数。

参数:

ARRAY:    必须是整型,但不能是标量。

BASE:     必须是整型且与ARRAY具有相同的种类参数。不能是标量。

INDX1,..,INDXn:必须是整型的且与ARRAY相符。INDX参数的个数必须等于BASE的维数。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是IALL((/a1,...,am,b/)),其中(a1,...,am)是如6.4.4节中所描述的与b相关联的ARRAY中的元素。

例子:IALL_SCATTER((/1,2,3,6/),(/1,3,7/),(/1,1,2,2/))的结果是

6.7.21 IALL_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个反向的,分段的位逻辑AND扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是IALL((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:IALL_SUFFIX((/1,3,2,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.22 IANY(ARRAY,DIM,MASK)

可选参数:DIM,MASK。

描述;沿ARRAY的第DIM维计算一个位逻辑OR归约。

分类:转换函数。

参数:

ARRAY:必须是整型,不能是标量。

DIM(可选的):必须是一个整型标量,其值的范围在1DIMn之间,其中n是ARRAY的维数。相应的实参不能是一个可选哑参。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数,以及形状:结果是整型的,并与ARRAY具有相同的种类参数。如果不存在DIM或ARRAY是一维的,则它是标量;否则,结果是一个n-1维数组,且其形状是(d1,d2,...,dDIM-1,dDIM+1,...,dn),其中(d1,d2,..,dn)是ARRAY的形状。

结果值:

情形(i):

情形(ii):

情形(iii):

例子:

情形(i):

情形(ii):

情形(iii):

6.7.23 IANY_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个分段的位逻辑OR扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是IANY((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:IANY_PREFIX((/1,2,3,2,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.24 IANY_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)

可选参数:MASK。

描述:将MASK所选定的ARRAY中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。当且仅当BASE中相应元素的第j位或分散到该位置上的任何ARRAY中元素的第j位等于1时,结果元素的第j位为1。

分类:转换函数。

参数:

ARRAY:    必须是整型,但不能是标量。

BASE:     必须是整型且与ARRAY具有相同的种类参数。不能是标量。

INDX1,..,INDXn:必须是整型的且与ARRAY相符。INDX参数的个数必须等于BASE的维数。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是IANY((/a1,...,am,b/)),其中(a1,...,am)是如6.4.4节中所描述的与b相关联的ARRAY中的元素。

例子:IANY_SCATTER((/1,2,3,6/),(/1,3,7/),(/1,1,2,2/))的结果是

6.7.25 IANY_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个反向的,分段的位逻辑OR扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是IANY((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:IALL_PREFIX((/4,2,3,2,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.26 IPARITY(ARRAY,DIM,MASK)

可选参数:DIM,MASK。

描述;沿ARRAY的第DIM维计算一个位逻辑排它OR归约。

分类:转换函数。

参数:

ARRAY:必须是整型,不能是标量。

DIM(可选的):必须是一个整型标量,其值的范围在1DIMn之间,其中n是ARRAY的维数。相应的实参不能是一个可选哑参。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数,以及形状:结果是整型的,并与ARRAY具有相同的种类参数。如果不存在DIM或ARRAY是一维的,则它是标量;否则,结果是一个n-1维数组,且其形状是(d1,d2,...,dDIM-1,dDIM+1,...,dn),其中(d1,d2,..,dn)是ARRAY的形状。

结果值:

情形(i):

情形(ii):

情形(iii):

例子:

情形(i):IPARITY(/13,8,3,2/)的值是4。

情形(ii):IPARITY(C,MASK=BTEST(C,0))的值是C中奇数元素的IEOR归约。

情形(iii):

6.7.27 IPARITY_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个分段的位逻辑排它OR扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是IPARITY((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:IPARITY_PREFIX((/1,2,3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.28 IPARITY_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)

可选参数:MASK。

描述:将MASK所选定的ARRAY中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。当且仅当BASE中相应元素的第j位以及分散到该位置上的ARRAY中元素的第j位等于1的个数是奇数时,结果元素的第j位为1。

分类:转换函数。

参数:

ARRAY:    必须是整型,但不能是标量。

BASE:     必须是整型且与ARRAY具有相同的种类参数。不能是标量。

INDX1,..,INDXn:必须是整型的且与ARRAY相符。INDX参数的个数必须等于BASE的维数。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是IPARITY((/a1,...,am,b/)),其中(a1,...,am)是如6.4.4节中所描述的与b相关联的ARRAY中的元素。

例子:IPARITY_SCATTER((/1,2,3,6/),(/1,3,7/),(/1,1,2,2/))的结果是

6.7.29 IPARITY_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个反向的,分段的位逻辑排它OR扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是IPARITY((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:IPARITY_SUFFIX((/1,2,3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.30 LEADZ(I)

述:返回整数中前导零的个数。

分类:基本函数。

参数:I必须是整型。

结果类型和类型参数:与I相同。

结果值:结果是整数I中前导零的位数。Fortran标准13.5.7节REPLACE THIS HARD LINK!!!中描述了将一个整数解释为位序列的模型。LEADZ(0)的结果是BIT_SIZE(I)。对于非0的I,如果I中最左边为1的位出现在k-1的位置(在这里,我们把最右的位称为位0),则LEADZ(I)的结果是BIT_SIZE(I)-k。

例子:LEADZ(3)的值是BIT_SIZE(3)-2。对于标量I,LEADZ(I)等于MINVAL((/(J,J=0,BIT_SIZE(I))/),MASK=M),其中M=(/(BTEST(I,J),J=BIT_SIZE(I)-1,0,-1),.TRUE./)。依赖于整数描述中的位数(BIT_SIZE(I)),一个给定的整数I可能从LEADZ(I)中产生不同的值。那是因为LEADZ是从最有效的位开始统计位数的。参照ILEN。

6.7.31 MAXVAL_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个分段的MAXVAL扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的或实型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是MAXVAL((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:MAXVAL_PREFIX((/3,4,-5,2,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.32 MAXVAL_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)

可选参数:MASK。

描述:将MASK所选定的ARRAY中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。每个结果元素的值是BASE中相应元素以及分散到该位置上的ARRAY中元素的最大值。

分类:转换函数。

参数:

ARRAY:    必须是整型或实型,但不能是标量。

BASE:     必须与ARRAY具有相同的类型和种类参数。不能是标量。

INDX1,..,INDXn:必须是整型的且与ARRAY相符。INDX参数的个数必须等于BASE的维数。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是MAXVAL((/a1,...,am,b/)),其中(a1,...,am)是如6.4.4节中所描述的与b相关联的ARRAY中的元素。

例子:MAXVAL_SCATTER((/1,2,3,1/),(/4,-5,7/),(/1,1,2,2/))的结果是

6.7.33 MAXVAL_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个反向的,分段的MAXVAL扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的或实型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是MAXVAL((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:MAXVAL_SUFFIX((/3,4,-5,2,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.34 MINVAL_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个分段的MINVAL扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的或实型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是MINVAL((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:MINVAL_PREFIX((/1,2,-3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.35 MINVAL_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)

可选参数:MASK。

描述:将MASK所选定的ARRAY中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。每个结果元素的值是BASE中相应元素以及分散到该位置上的ARRAY中元素的最小值。

分类:转换函数。

参数:

ARRAY:    必须是整型或实型,但不能是标量。

BASE:     必须与ARRAY具有相同的类型和种类参数。不能是标量。

INDX1,..,INDXn:必须是整型的且与ARRAY相符。INDX参数的个数必须等于BASE的维数。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是MINVAL((/a1,...,am,b/)),其中(a1,...,am)是如6.4.4节中所描述的与b相关联的ARRAY中的元素。

例子:MINVAL_SCATTER((/1,-2,-3,6/),(/4,3,7/),(/1,1,2,2/))的结果是

6.7.36 MINVAL_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个反向的,分段的MINVAL扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的或实型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是MINVAL((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:MINVAL_SUFFIX((/1,2,-3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.37 PARITY(MASK,DIM)

可选参数:DIM。

描述;确定沿MASK的第DIM维值的数目是奇数是否为真。

分类:转换函数。

参数:

MASK:必须是逻辑型,不能是标量。

DIM(可选的):必须是一个整型标量,其值的范围在1DIMn之间,其中n是MASK的维数。相应的实参不能是一个可选哑参。

结果类型,类型参数,以及形状:结果是逻辑型的,并与MASK具有相同的种类参数。如果不存在DIM或MASK是一维的,则它是标量;否则,结果是一个n-1维数组,且其形状是(d1,d2,...,dDIM-1,dDIM+1,...,dn),其中(d1,d2,..,dn)是MASK的形状。

结果值:

情形(i):

情形(ii):

例子:

情形(i):

情形(iii):

6.7.38 PARITY_PREFIX(MASK,DIM,SEGMENT,EXCLUSIVE)

可选参数:DIM,SEGMENT,EXCLUSIVE。

描述:沿MASK的第DIM维计算一个分段的逻辑排它OR扫描。

分类:转换函数。

参数:

ARRAY:     必须是逻辑型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是MASK的维数。

SEGMENT(可选的): 必须是逻辑型且与MASK具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同MASK。

结果值:结果元素r的值是PARITY((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的MASK的元素集合(可能是空的)。

例子:PARITY_PREFIX((/T,F,T,T,T/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.39 PARITY_SCATTER(MASK,BASE,INDX1,...,INDXn)

描述:将MASK中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。当且仅当BASE中相应元素以及分散到该位置上的MASK中元素为真值的个数是奇数时,结果元素为真。

分类:转换函数。

参数:

MASK:    必须是逻辑型,但不能是标量。

BASE:     必须是逻辑型且与MASK具有相同的种类参数。不能是标量。

INDX1,..,INDXn:必须是整型的且与MASK相符。INDX参数的个数必须等于BASE的维数。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是PARITY((/a1,...,am,b/)),其中(a1,...,am)是如6.4.4节中所描述的与b相关联的MASK中的元素。

例子:PARITY_SCATTER((/T,T,T,T/),(/T,F,F/),(/1,1,1,2/))的结果是

6.7.40 PARITY_SUFFIX(MASK,DIM,SEGMENT,EXCLUSIVE)

可选参数:DIM,SEGMENT,EXCLUSIVE。

描述:沿MASK的第DIM维计算一个反向的,分段的逻辑排它OR扫描。

分类:转换函数。

参数:

ARRAY:     必须是逻辑型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是MASK的维数。

SEGMENT(可选的): 必须是逻辑型且与MASK具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同MASK。

结果值:结果元素r的值是PARITY((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的MASK的元素集合(可能是空的)。

例子:PARITY_SUFFIX((/T,F,T,T,T/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.41 POPCNT(I)

描述:返回整数中1的位数。

分类:基本函数。

参数:I必须是整型的。

结果类型和类型参数:同I。

返回值:POPCNT(I)是整数I的二进制描述中1的位数。Fortran标准13.5.7节REPLACE THIS HARD LINK!!!中描述了将一个整数解释为位序列的模型。

对于标量I,POPCNT(I)=COUNT((/(BTEST(I,J),J=0,BIT_SIZE(I)-1)/))。

6.7.42 POPPAR(I)

描述:返回整数的奇偶性。

分类:基本函数。

参数:I必须是整型的。

结果类型和类型参数:同I。

返回值:如果I中1的位数是奇数,POPCNT(I)=1,如果I中1的位数是偶数,POPCNT(I)=0。Fortran标准13.5.7节REPLACE THIS HARD LINK!!!中描述了将一个整数解释为位序列的模型。

对于标量I,POPPAR(I)=MERGE(1,0,BTEST(POPCNT(I),0))。

6.7.43 PRODUCT_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个分段的PRODUCT扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的,实型的或复型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是PRODUCT((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:PRODUCT_PREFIX((/1,2,3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.44 PRODUCT_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)

可选参数:MASK。

描述:将MASK所选定的ARRAY中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。每个结果元素的值等于BASE中相应元素以及分散到该位置上的ARRAY中元素的乘积。

分类:转换函数。

参数:

ARRAY:    必须是整型,实型或复型的,但不能是标量。

BASE:     必须与ARRAY具有相同的类型和种类参数。不能是标量。

INDX1,..,INDXn:必须是整型的且与ARRAY相符。INDX参数的个数必须等于BASE的维数。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是PRODUCT((/a1,...,am,b/)),其中(a1,...,am)是如6.4.4节中所描述的与b相关联的ARRAY中的元素。

例子:PRODUCT_SCATTER((/1,2,3,1/),(/4,-5,7/),(/1,1,2,2/))的结果是

6.7.45 PRODUCT_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个反向的,分段的PRODUCT扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的,实型的或复型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是PRODUCT((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:PRODUCT_SUFFIX((/1,2,3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.46 SORT_DOWN(ARRAY,DIM)

选参数:DIM。

描述:按降序排序。

分类:转换函数。

参数:

ARRAY:  必须是整型,实型,或字符型。不能是标量。

DIM(可选的):必须是一个整型标量,其值的范围在1DIMn之间,其中n是ARRAY的维数。相应的实参不能是一个可选哑参。

结果类型,类型参数和形状:结果与ARRAY具有相同的形状,类型和类型参数。

结果值:

情形(i):

情形(ii):

情形(iii):

情形(i): 

情形(ii):

情形(iii):

6.7.47 SORT_UP(ARRAY,DIM)

可选参数:DIM。

描述:按升序排序。

分类:转换函数。

参数:

ARRAY:  必须是整型,实型,或字符型。不能是标量。

DIM(可选的):必须是一个整型标量,其值的范围在1DIMn之间,其中n是ARRAY的维数。相应的实参不能是一个可选哑参。

结果类型,类型参数和形状:结果与ARRAY具有相同的形状,类型和类型参数。

结果值:

情形(i):

情形(ii):

例子:

情形(i): 

情形(ii):

情形(iii):

6.7.48 SUM_PREFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个分段的SUM扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的,实型的或复型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是SUM((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:SUM_PREFIX((/1,2,3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是

6.7.49 SUM_SCATTER(ARRAY,BASE,INDX1,...,INDXn,MASK)

可选参数:MASK。

描述:将MASK所选定的ARRAY中的元素分散到索引数组INDX1,...,INDXn指定的结果位置上。每个结果元素的值等于BASE中相应元素以及分散到该位置上的ARRAY中元素的和。

分类:转换函数。

参数:

ARRAY:    必须是整型,实型或复型的,但不能是标量。

BASE:     必须与ARRAY具有相同的类型和种类参数。不能是标量。

INDX1,..,INDXn:必须是整型的且与ARRAY相符。INDX参数的个数必须等于BASE的维数。

MASK(可选的):必须是逻辑型且必须与ARRAY相符。

结果类型,类型参数和形状:同BASE。

结果值:对应于BASE中元素b的结果元素的值是SUM((/a1,...,am,b/)),其中(a1,...,am)是如6.4.4节中所描述的与b相关联的ARRAY中的元素。

例子:SUM_SCATTER((/1,2,3,1/),(/4,-5,7/),(/1,1,2,2/))的结果是

6.7.50 SUM_SUFFIX(ARRAY,DIM,MASK,SEGMENT,EXCLUSIVE)

可选参数:DIM,MASK,SEGMENT,EXCLUSIVE。

描述:沿ARRAY的第DIM维计算一个反向的,分段的SUM扫描。

分类:转换函数。

参数:

ARRAY:     必须是整型的,实型的或复型的。一定不能是标量。

DIM(可选的):   必须是一个整型标量,其值的范围是1DIMn,其中n是ARRAY的维数。

MASK(可选的):  必须是逻辑型,且必须与ARRAY相符。

SEGMENT(可选的): 必须是逻辑型且与ARRAY具有相同的形状。

EXCLUSIVE(可选的):必须是逻辑型标量。

结果类型,类型参数和形状:同ARRAY。

结果值:结果元素r的值是SUM((/a1,...,am/)),其中,(a1,...,am)是根据6.4.5节中的规则所选定的作用于r的ARRAY的元素集合(可能是空的)。

例子:SUM_SUFFIX((/1,2,3,4,5/),SEGMENT=(/F,F,F,T,T/))的结果是


Copyright: NPACT BACKWARD FORWARD