6.7库过程规格说明 |
可选参数: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/))的结果是。
描述:将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/))的结果。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
描述:将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/))的结果是。
可选参数: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/))的结果是。
可选参数: 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/))的结果是。
可选参数: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}的成员。
可选参数: 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/))的结果是。
可选参数: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/))的结果是。
描述:将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/))的结果是。
可选参数: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/))的结果是。
可选参数:DIM。
描述:产生一个数组索引的置换,并按降序对数组元素值排序。
分类:转换函数。
参数:
ARRAY: 必须是整型,实型或字符型。不能是标量。
DIM(可选的): 必须是整型标量,其值的范围是1DIMn,其中,n是ARRAY的维数。相应的实参一定不能是可选的哑参。
结果类型,类型参数和形状:结果缺省是整型。如果存在DIM,则结果与ARRAY具有相同的形状。如果不存在DIM,则结果的形状是(/SIZE(SHAPE(ARRAY)),SIZE(ARRAY)/)。
结果值:
情形(i):
S=GRADE_DOWN(ARRAY)+SPREAD(LBOUND(ARRAY),DIM=2,NCOPIES=SIZE(ARRAY))-1的结果是这样的:如果通过FORALL(K=1:SIZE(B))B(K)=ARRAY(S(1,K),S(2,K),...,S(N,K))计算一个大小为SIZE(ARRAY)的一维数组B,在这里N的值是SIZE(SHAPE(ARRAY)),则对B按降序排序;而且,S的所有列是不同的,也就是说,如果jm,则所有的(S(:,j) .EQ. S(:m))都为假。排序是固定的;如果jm且B(j)=B(m),则在ARRAY的数组元素序列中,数组(S(1,j),S(2,j),...,S(n,j))位于数组(S(1,m),S(2,m),...,S(n,m))的前面。
情形(ii):
R=GRADE_DOWN(ARRAY,DIM=K)+LBOUND(ARRAY,DIM=K)-1具有下面的特性:如果计算数组B(i1,i2,...,ik,...,in)=ARRAY(i1,i2,...,R(i1,i2,...,ik,...,in),...,in),则对于所有的i1,i2,...,(省略ik),...,in,向量B(i1,i2,...,:,...,in)以降序排序;且R(i1,i2,...,:,...,in)是1到SIZE(ARRAY,DIM=K)之间所有整数的置换。此排序是固定的;即,如果jm,且B(i1,i2,...,j,...,in)=B(i1,i2,...,m,...,in),则R(i1,i2,...,j,...,in)R(i1,i2,...,m,...,in)。
例子:
情形(i):
GRADE_DOWN((/30,20,30,40,-10/))是一个形状为的二维数组,其值是。(为产生一个一维结果,必须使用可选参数DIM=1。)
如果A是数组,则GRADE_DOWN(A)的值是。
情形(ii):
如果A是数组,则GRADE_DOWN(A,DIM=1)的值是,且GRADE_DOWN(A,DIM=2)的值是。
可选参数:DIM。
描述:产生一个数组索引的置换,并按升序对数组元素值排序。
分类:转换函数。
参数:
ARRAY: 必须是整型,实型或字符型。不能是标量。
DIM(可选的): 必须是整型标量,其值的范围是1DIMn,其中,n是ARRAY的维数。相应的实参一定不能是可选的哑参。
结果类型,类型参数和形状:结果缺省是整型。如果存在DIM,则结果与ARRAY具有相同的形状。如果不存在DIM,则结果的形状是(/SIZE(SHAPE(ARRAY)),SIZE(ARRAY)/)。
结果值:
情形(i):
S=GRADE_UP(ARRAY)+SPREAD(LBOUND(ARRAY),DIM=2,NCOPIES=SIZE(ARRAY))-1的结果是这样的:如果通过FORALL(K=1:SIZE(B))B(K)=ARRAY(S(1,K),S(2,K),...,S(N,K))计算一个大小为SIZE(ARRAY)的一维数组B,在这里N的值是SIZE(SHAPE(ARRAY)),则对B按升序排序;而且,S的所有列是不同的,也就是说,如果jm,则所有的(S(:,j) .EQ. S(:m))都为假。排序是固定的;如果jm且B(j)=B(m),则在ARRAY的数组元素序列中,数组(S(1,j),S(2,j),...,S(n,j))位于数组(S(1,m),S(2,m),...,S(n,m))的前面。
情形(ii):
R=GRADE_DOWN(ARRAY,DIM=K)+LBOUND(ARRAY,DIM=K)-1具有下面的特性:如果计算数组B(i1,i2,...,ik,...,in)=ARRAY(i1,i2,...,R(i1,i2,...,ik,...,in),...,in),则对于所有的i1,i2,...,(省略ik),...,in,向量B(i1,i2,...,:,...,in)按升序排序;且R(i1,i2,...,:,...,in)是1到SIZE(ARRAY,DIM=K)之间所有整数的置换。此排序是固定的;即,如果jm,且B(i1,i2,...,j,...,in)=B(i1,i2,...,m,...,in),则R(i1,i2,...,j,...,in)R(i1,i2,...,m,...,in)。
例子:
情形(i):
GRADE_UP((/30,20,30,40,-10/))是一个形状为的二维数组,其值是。(为产生一个一维结果,必须使用可选参数DIM=1。)
如果A是数组,则GRADE_UP(A)的值是。
情形(ii):
如果A是数组,则GRADE_UP(A,DIM=1)的值是,且GRADE_DOWN(A,DIM=2)的值是。
可选参数:LB,UB,STRIDE,AXIS_MAP,IDENTITY_MAP,NCOPIES
描述:返回关于一个变量和它所根本对准的对准目标(数组或模板)之间对应关系的信息。
分类:映射查询子程序。
参数:
ALIGNEE:
可以是任何类型。可以是标量或赋过值的数组。一定不能是假定大小数组(assumed-size)。如果它是一个聚集变量组的成员,则它一定是该组的一个聚集面(aggregate cover)。(见2.8节关于“聚集变量组”和“聚集面”的定义。)它不能是一个已释放的指针或一个尚未分配空间的可分配数组。它是一个INTENT(IN)参数。
如果ALIGNEE是一个指针,则返回关于它目标的对准信息。对准目标不能是一个假定大小哑参或假定大小哑参的一个区域。
LB(可选的)
必须是缺省整型且一维的。其大小必须至少等于ALIGNEE的维数。它是一个INTENT(OUT)参数.ALINGEE第i维的第一个元素沿着对准目标上与ALIGNEE第i维相关联的那一维与对准目标的第LB(i)个元素相对准.如果ALIGNEE的第i维是一个坍塌维,则LB(i)依赖于实现。
UB(可选的)
必须是缺省整型且一维的。其大小必须至少等于ALIGNEE的维数。它是一个INTENT(OUT)参数.ALINGEE第i维的最后一个元素沿着对准目标上与ALIGNEE第i维相关联的那一维与对准目标的第UB(i)个元素相对准。如果ALIGNEE的第i维是一个坍塌维,则UB(i)依赖于实现。
STRIDE(可选的)
必须是缺省整型且一维的。其大小必须至少等于ALIGNEE的维数。它是一个INTENT(OUT)参数。STRIDE的第i个元素被置成对准ALIGNEE第i维元素时所用的步长.如果ALIGNEE的第i维是一个坍塌维,则STRIDE(i)=0。
AXIS_MAP(可选的)
必须是缺省整型且一维的。其大小必须至少等于ALIGNEE的维数。它是一个INTENT(OUT)参数.AXIS_MAP的第i个元素被置成与ALIGNEE第i维相关联的对准目标的维。如果ALIGNEE的第i维是一个坍塌维,则AXIS_MAP(i)=0。
IDENTITY_MAP(可选的)
必须是一个标量且缺省是逻辑型的.它是一个INTENT(OUT)参数。如果与ALIGNEE相关联的根本对准目标具有与ALIGNEE相同的形状,使用特性置换(identity-permutation)对各维进行映射.且所有的步长都是正的(由于形状约束,因此步长等于1),则它的值为真;否则它的值被置为假。如果在一个ALIGN或REALIGN指令中,变量不是作为对准子出现,且没有INHERIT属性,则INDENTITY_MAP必须为真;在其它的环境下它的值也可能为真。
NCOPIES(可选的)
必须是一个缺省整型标量.它是一个INTENT(OUT)参数。它的值被置成与对准目标根本对准的ALIGNEE的拷贝数。对于一个非重复变量,它被置成1。
例子:如果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。
可选参数:AXIS_TYPE,AXIS_INFO,PROCESSORS_RANK,PROCESSORS_SHAPE
描述:HPF_DISTRIBUTION子程序返回与一个变量相关联的根本对准目标的分配信息。
分类:映射查询子程序。
参数:
DISTRIBUTEE
可以是任何类型。可以是标量或赋过值的数组。一定不能是假定大小数组。如果它是一个聚集变量组的成员,则它一定是该组的一个聚集面。(见2.8节关于“聚集变量组”和“聚集面”的定义。)它不能是一个已释放的指针或一个尚未分配空间的可分配数组。它是一个INTENT(IN)参数
如果DITRIBUTEE是一个指针.则返回关于它目标的分配信息.对准目标不能是一个假定大小哑参或假定大小哑参的一个区域。
AXIS_TYPE(可选的)
必须是一个一维字符型数组。它可以是任意长度,但为包含一个完整的值,它的长度应该至少是9。就好象通过一个字符内部赋值语句,将其元素置成了下面的值。它的大小必须至少等于DISTRIBUTEE所根本对准的对准目标的维数;这是一个由TEMPLATE_RANK中HPF_TEMPLATE所返回的值。它的第i个元素包含了对准目标第i维的分配信息。下面的值由HPF所定义(实现时可定义其它的值):
'BLOCK' 该维以BLOCK方式分配。AXIS_INFO中相应的元素包含了块的大小。
'COLLAPSED' 该维是坍塌的(用“*”说明分配)。AXIS_INFO中相应元素的值依赖于实现。
'CYCLIC' 该维以CYCLIC方式分配。AXIS_INFO中相应的元素包含了块的大小。
AXIS_INFO(可选的)
必须是一个一维整型数组,其大小至少等于DISTRIBUTEE所根本对准的对准目标的维数;这是一个由TEMPLATE_RANK中HPF_TEMPLATE所返回的值。它是一个INTENT(OUT)参数。AXIS_INFO的第i个元素包含了DISTRIBUTEE的根本对准目标第i维的block或cyclic分配的块大小;如果该维是一个坍塌维,则其值是依赖于实现的。
PROCESSORS_RANK(可选的)
必须是一个整型标量。它的值是DISTRIBUTEE所分配到的处理器排列的维数。
PROCESSORS_SHAPE(可选的)
必须是一维整型数组且其大小至少等于PROCESSORS_RANK所返回的值m.它是一个INTENT(OUT)参数。它的头m个元素被置成DISTRIBUTEE所映射到的处理器排列的形状。(有必要调用HPF_DISTRIBUTION两次,第一次获得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
可选参数:LB,UB,AXIS_TYPE,AXIS_INFO,NUMBER_ALIGNED,TEMPLATE_RANK
描述:HPF_TEMPLATE子程序返回与一个变量相关联的根本对准目标的信息;HPF_TEMPLATE所返回的是从变量的根本对准目标角度所看到的信息,而HPF_ALIGNMENT所看到的是从变量的角度所看到的信息。
分类:映射查询子程序。
参数:
ALIGNEE:
可以是任何类型。可以是标量或赋过值的数组。一定不能是假定大小数组。如果它是一个聚集变量组的成员,则它一定是该组的一个聚集面。(见2.8节关于“聚集变量组”和“聚集面”的定义。)它不能是一个已释放的指针或一个尚未分配的可分配数组。它是一个INTENT(IN)参数。
如果ALIGNEE是一个指针,则返回关于它目标的对准信息。对准目标不能是一个假定大小哑参或假定大小哑参的一个区域。
TEMPLATE_RANK(可选的)
必须是一个缺省为整型的标量.它是一个INTENT(OUT)参数。它的值可被置为根本对准目标的维数。由于坍塌或重复的原因,该值可能与ALIGNEE的维数不同。
LB(可选的)
必须是缺省整型且一维的。其大小必须至少等于ALIGNEE所根本对准的对准目标的维数;这是一个在TEMPLATE_RANK中所返回的值。它是一个INTENT(OUT)参数。LB的第i个元素包含了对准目标的第i个模板维的下界。
UB(可选的)
必须是缺省整型且一维的。其大小必须至少等于ALIGNEE所根本对准的对准目标的维数;这是一个在TEMPLATE_RANK中所返回的值。它是一个INTENT(OUT)参数。UB的第i个元素包含了对准目标的第i个模板维的上界。
AXIS_TYPE(可选的)
必须是一个一维字符型数组。它可以是任意长度,但为包含一个完整的值,它的长度应该至少是10。就好象通过一个字符内部赋值语句,将其元素置成了下面的值。它的大小必须至少等于ALIGNEE所根本对准的对准目标的维数;这是一个由TEMPLATE_RANK所返回的值。它的第i个元素包含了对准目标第i维的信息。下面的值由HPF所定义(实现时可定义其它的值):
'NORMAL':对准目标的维包含了与其对准的ALIGNEE的一维。对于具有这一值的AXIS_TYPE中的元素,AXIS_INFO中相应的元素被置为沿此对准目标维的ALIGNEE的拷贝数。
'REPLICATED':ALIGNEE沿对准目标的这一维被重复.对于具有这一值的AXIS_TYPE中的元素,AXIS_INFO的相应元素被置成沿对准目标这一维的ALIGNEE的拷贝数。
'SINGLE':ALIGNEE与对准目标这一维的一个坐标对准.对于具有这一值的AXIS_TYPE中的元素,AXIS_INFO的相应元素被置成ALIGNEE所对准的对准目标的坐标。
AXIS_INFO(可选的)
必须是一个一维整型数组,其大小至少等于ALIGNEE所根本对准的对准目标的维数;这是一个由TEMPLATE_RANK所返回的值。它是一个INTENT(OUT)参数。见上面关于AXIS_TYPE的描述。
NUMBER_ALIGNED(可选的)必须是一个缺省整型的标量.它是一个INTENT(OUT)参数。它被置成与根本对准目标相对准的变量总数。如果对准目标被重分配,则该值是发生移动的变量数。
例子:给定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
可选参数: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):
IALL(ARRAY)的结果是ARRAY中所有元素的IAND归约。如果ARRAY的大小为0,则结果等于一个依赖于实现的整数值x,其中x具有下面的性质:对于所有与ARRAY具有相同种类参数的整数I,IAND(I,x)=I。见6.4.3节。
情形(ii):
IALL(ARRAY,MASK=MASK)的结果是MASK中对应元素为真的ARRAY中所有元素的IAND归约;如果MASK中没包含任何真元素,则结果等于一个依赖于实现的整数值x(与ARRAY具有相同的种类参数),其中x具有下面的性质:对于所有整数I,IAND(I,x)=I。
情形(iii):
如果ARRAY是一维的,则IALL(ARRAY,DIM[,MASK])的值等于IALL(ARRAY[,MASK])的值。否则,IALL(ARRAY,DIM[,MASK])中元素(s1,s2,...,sDIM-1,sDIM+1,...,sn)的值等于IALL(ARRAY(s1,s2,...,sDIM-1,:,sDIM+1,...,sn)[,MASK=MASK(s1,s2,...,sDIM-1,:,sDIM+1,...,sn)])
例子:
情形(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)的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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):
IANY(ARRAY)的结果是ARRAY中所有元素的IOR归约。如果ARRAY的大小为0,则结果的值为0。见6.4.3节。
情形(ii):
IANY(ARRAY,MASK=MASK)的结果是MASK中对应元素为真的ARRAY中所有元素的IOR归约;如果MASK中没包含任何真元素,则结果为0。
情形(iii):
如果ARRAY是一维的,则IANY(ARRAY,DIM[,MASK])的值等于IANY(ARRAY[,MASK])的值。否则,IANY(ARRAY,DIM[,MASK])中元素(s1,s2,...,sDIM-1,sDIM+1,...,sn)的值等于IANY(ARRAY(s1,s2,...,sDIM-1,:,sDIM+1,...,sn)[,MASK=MASK(s1,s2,...,sDIM-1,:,sDIM+1,...,sn)])
例子:
情形(i):
IANY(/9,8,3,2/)的值是11。
情形(ii):
IANY(C,MASK=BTEST(C,0))的值是C中奇数元素的IOR归约。
情形(iii):
如果B是数组,则IANY(B,DIM=1)的结果是,且IANY(B,DIM=2)的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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):
IPARITY(ARRAY)的结果是ARRAY中所有元素的IEOR归约。如果ARRAY的大小为0,则结果的值为0。见6.4.3节。
情形(ii):
IPARITY(ARRAY,MASK=MASK)的结果是MASK中对应元素为真的ARRAY中所有元素的IEOR归约;如果MASK中没包含任何真元素,则结果为0。
情形(iii):
如果ARRAY是一维的,则IPARITY(ARRAY,DIM[,MASK])的值等于IPARITY(ARRAY[,MASK])的值。否则,IPARITY(ARRAY,DIM[,MASK])中元素(s1,s2,...,sDIM-1,sDIM+1,...,sn)的值等于IPARITY(ARRAY(s1,s2,...,sDIM-1,:,sDIM+1,...,sn)[,MASK=MASK(s1,s2,...,sDIM-1,:,sDIM+1,...,sn)])
例子:
情形(i):IPARITY(/13,8,3,2/)的值是4。
情形(ii):IPARITY(C,MASK=BTEST(C,0))的值是C中奇数元素的IEOR归约。
情形(iii):
如果B是数组,则IPARITY(B,DIM=1)的结果是,且IPARITY(B,DIM=2)的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
描述:返回整数中前导零的个数。
分类:基本函数。
参数: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。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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):
PARITY(MASK)的结果是MASK中所有元素的.NEQV.归约。如果MASK的大小为0,则结果的值为假。见6.4.3节。
情形(ii):
如果MASK是一维的,则PARITY(MASK,DIM)的值等于PARITY(MASK)的值。否则,PARITY(MASK,DIM)中元素(s1,s2,...,sDIM-1,sDIM+1,...,sn)的值等于PARITY(MASK(s1,s2,...,sDIM-1,:,sDIM+1,...,sn))
例子:
情形(i):
PARITY(/T,T,T,F/)的值是真。
情形(iii):
如果B是数组,则PARITY(B,DIM=1)的结果是且PARITY(B,DIM=2)的结果是。
可选参数: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/))的结果是。
描述:将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/))的结果是。
可选参数: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/))的结果是。
描述:返回整数中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)/))。
描述:返回整数的奇偶性。
分类:基本函数。
参数: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))。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数:DIM。
描述:按降序排序。
分类:转换函数。
参数:
ARRAY: 必须是整型,实型,或字符型。不能是标量。
DIM(可选的):必须是一个整型标量,其值的范围在1DIMn之间,其中n是ARRAY的维数。相应的实参不能是一个可选哑参。
结果类型,类型参数和形状:结果与ARRAY具有相同的形状,类型和类型参数。
结果值:
情形(i):
当ARRAY是一维时,SORT_DOWN(ARRAY)的结果是一个与ARRAY具有相同形状的向量,该向量中所包含的元素与ARRAY相同,但是这些元素是按降序排序的。
情形(ii):
对于多维ARRAY,SORT_DOWN(ARRAY)的结果是这样获得的:首先使用数组元素次序将ARRAY变形为一个一维数组V,然后将该一维数组象情形(i)那样按降序排序,最后将结果重新存储到原始形状中。即它的结果与RESHAPE(SORT_DOWN(V),SHAPE=SHAPE(ARRAY))的结果是相同的,其中,V=RESHAPE(ARRAY,SHAPE=(/M/)且M=SIZE(ARRAY)。
情形(iii):
SORT_DOWN(ARRAY,DIM=k)结果包含了与A相同的元素,但是形式为ARRAY(i1,i2,...,ik-1,:,ik+1,...,in)的每一维数组区域象上面的情形(i)那样,按降序对元素进行了排序,在这里,n是ARRAY的维数。
例子:
情形(i):
SORT_DOWN((/30,20,30,40,-10/))的值是。
情形(ii):
如果A是数组,则SORT_DOWN(A)的值是
情形(iii):
如果A是数组,则SORT_DOWN(A,DIM=1)的值是。
可选参数:DIM。
描述:按升序排序。
分类:转换函数。
参数:
ARRAY: 必须是整型,实型,或字符型。不能是标量。
DIM(可选的):必须是一个整型标量,其值的范围在1DIMn之间,其中n是ARRAY的维数。相应的实参不能是一个可选哑参。
结果类型,类型参数和形状:结果与ARRAY具有相同的形状,类型和类型参数。
结果值:
情形(i):
当ARRAY是一维时,SORT_UP(ARRAY)的结果是一个与ARRAY具有相同形状的向量,该向量中所包含的元素与ARRAY相同,但是这些元素是按升序排序的。
情形(ii):
对于多维ARRAY,SORT_UP(ARRAY)的结果是这样获得的:首先使用数组元素次序将ARRAY变形为一个一维数组V,然后将该一维数组象情形(i)那样按升序排序,最后将结果重新存储到原始形状中。即它的结果与RESHAPE(SORT_UP(V),SHAPE=SHAPE(ARRAY))的结果是相同的,其中,V=RESHAPE(ARRAY,SHAPE=(/M/)且M=SIZE(ARRAY)。
情形(iii):
SORT_UP(ARRAY,DIM=k)结果包含了与A相同的元素,但是形式为ARRAY(i1,i2,...,ik-1,:,ik+1,...,in)的每一维数组区域象上面的情形(i)那样,按升序对元素进行了排序,在这里,n是ARRAY的维数。
例子:
情形(i):
SORT_UP((/30,20,30,40,-10/))的值是
情形(ii):
如果A是数组,则SORT_UP(A)的值是。
情形(iii):
如果A是数组,则SORT_UP(A,DIM=1)的值是。
可选参数: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/))的结果是。
可选参数: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/))的结果是。
可选参数: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 |