PRODUCT
copyright

green dotPRODUCT

書式 PRODUCT(ARRAY[,DIM][,MASK])
機能 DIM番目の次元について、MASK中の真である。
要素に対応するARRAYのすべての要素の積を計算する。
(1)ARRAYの大きさが0であるとき、結果の値は1とする。
(2)PRODUCT(ARRAY,MASK=mask)の結果の値は、MASK中の真である要素と 対応しているARRAYの要素の積とする。ただし、真である要素がないとき 結果の値は1とする。
(3)ARRAYの次元数が1であるとき、PRODUCT(ARRAY,DIM[,MASK])の値は PRODUCT(ARRAY[,MASK=mask])とする。
(4)ARRAYの次元数が2以上であるとき、PRODUCT(ARRAY,DIM[,MASK])の 要素(s1,s2,…,sDIM-1,sDIM+1,…,sn)の 値は、PRODUCT(ARRAY(s1,s2,…, sDIM-1,:,sDIM+1,…, sn)[,MASK=mask(s1,s2,…, sDIM-1,:,sDIM+1,…,sn)])とする。
nはARRAYの次元数とする。
引数
ARRAY:整数型,実数型,複素数配列
DIM
(省略可能)
:整数型スカラ(1≦DIM≦n)
MASK
(省略可能)
:論理型で配列の大きさはARRAYと同じ
戻り値 型、種別型パラメタは引数ARRAYと同じである。
DIMが省略されているかまたはARRAYの次元数が1であるとき 戻り値はスカラである。
それ以外は、n-1次元の配列で、その形状は (d1,d2,…,dDIM-1, dDIM+1,…,dn)である。
ここで(d1,d2,…,dn)は、MASKの形状とする。

green dotサンプルプログラム

整数-3, 9, -5, 1, -9, 6の積を求める。
    INTEGER,DIMENSION(6) :: x
    LOGICAL,DIMENSION(6) :: m
    x=(/-3, 9, -5, 1, -9, 6/)
    WRITE(*,*) PRODUCT(x)          ! 配列要素中の積
    m=(x>0)                        ! 配列xの値が負か?
    WRITE(*,*) PRODUCT(x,MASK=m)   ! 負の配列要素の積

実行例
-7290 -135
line-end