Fortran
組み込み手続き
サーチ…
備考
利用可能な組み込みプロシージャの多くは、引数型が共通しています。例えば:
- 処理される入力配列の要素を選択する論理的な引数
MASK
- 関数の結果の種類を決定する整数スカラー引数
KIND
- 縮小が実行される次元を制御する縮小関数の整数引数
DIM
PACKを使用して条件を満たす要素を選択する
intrinsic pack
関数は、配列をベクトルにパックし、与えられたマスクに基づいて要素を選択します。関数には2つの形式があります
PACK(array, mask)
PACK(array, mask, vector)
(つまり、 vector
引数はオプションです)。
どちらの場合も、 array
は配列であり、論理型のmask
で、 array
(スカラーまたは同じ形状の配列)に従います。
最初のケースでは、結果はrankの1型array
であり、要素の数はマスク内の真の要素の数であるarray
型パラメータです。
integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0)
positive_values
が配列[2, 3, 5]
2、3、5 [2, 3, 5]
ます。
vector
rank-1引数があれば、結果はvector
のサイズになります( mask
真の値以上の要素が少なくとも必要です)。
効果vector
のマスキングされた要素によって上書きその配列の最初の要素とその配列を返すことであるarray
。例えば
integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0, [10,20,30,40,50])
positive_values
が配列[2,3,5,40,50]
ます。
引数array
形状にかかわらず、結果は常にランク1の配列になります。
マスキング条件を満たす配列の要素を選択することに加えて、マスキング条件が満たされる指標を決定することはしばしば有用である。この共通のイディオムは、次のように表すことができます。
integer, allocatable :: indices(:)
integer i
indices = PACK([(i, i=1,5)], [2, -1, 3, -2, 5]>0)
indices
は配列[1,3,5]
ます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow