XL Fortran for AIX V8.1.1

ランゲージ・リファレンス

MINLOC(ARRAY, DIM, MASK) または MINLOC(ARRAY, MASK)

マスクの値が真になるすべてのエレメントの最小値を持つ配列の最初のエレメントを、次元に沿って見つけます。 MINLOC は、正の整数を用いているエレメントの位置を参照できる指標を戻します。

引き数タイプおよび属性

ARRAY
整数または実数タイプの配列です。

+---------------------------------Fortran 95---------------------------------+

DIM (オプション)
1<=DIM<=n の範囲にあるスカラー整数で、n は、ARRAY のランクを表しています。

+------------------------------Fortran 95 の終り------------------------------+

MASK (オプション)
形状が ARRAY と整合している論理タイプの配列です。これが存在しないと、デフォルトのマスク評価は .TRUE. になります。つまり、配列全体が評価されます。

クラス

変換関数

結果タイプおよび属性

DIM が存在しない場合、結果はランク 1 の整数配列で、ARRAY のランクに等しいサイズを持ちます。 DIM が存在する場合、結果はランク rank(ARRAY)-1 の整数配列で、その形状は (s1, ..., sDIM-1, sDIM+1, ..., sn) となります。この場合 n は ARRAY のランクを表しています。

最小値が存在しない場合 (おそらく、配列がゼロにサイズ決定されているか、または、マスク配列がすべて .FALSE. の値を持っているか、または、DIM 引き数がないのが原因) は、戻り値はサイズがゼロで 1 次元のエンティティーです。 DIM が存在する場合、結果の形状は ARRAY のランクによって決まります。

結果値

結果は ARRAY の、マスクされた最小エレメントの位置の添え字を示します。複数のエレメントがこの最小値に等しいと、この関数は (配列エレメント順に) 最初の位置を検出します。 DIM が指定されると、結果は次元の各ベクトルに沿った最小マスク・エレメントの位置を示します。

+---------------------------------Fortran 95---------------------------------+

DIM と MASK はどちらもオプションであるため、引き数のさまざまな組み合わせが可能になります。 -qintlog オプションが 2 つの引き数を指定すると、2 番目の引き数は次のうちの 1 つを参照します。

DIM 引き数を追加すると、XL Fortran バージョン 3 からの動作が修正されます。

+------------------------------Fortran 95 の終り------------------------------+

! A is the array  |  4  9  8 -8 |
!                 |  2  1 -1  5 |
!                 |  9  4 -1  9 |
!                 | -7  5  7 -3 |
 
! Where is the smallest element of A?
       RES = MINLOC(A)
! The result is | 1 4 | because -8 is located at A(1,4).
 
! Where is the smallest element in each row of A that
! is not equal to -7?
       RES = MINLOC(A, DIM = 2, MASK = A .NE. -7)
! The result is | 4 3 3 4 | because these are the
! corresponding column locations of the smallest value
! in each row not equal ! to -7 (the values being
! -8,-1,-1,-3).

配列の定義された上限と下限に関係なく、MINLOC は下限の指標を '1' として判別します。 MAXLOC および MINLOC 指標は両方とも正の整数を使用します。実際の指標を見つける方法を次に示します。

       INTEGER B(-100:100)
! Minloc views the bounds as (1:201)
! If the smallest element is located at index '-49'
       I = MINLOC(B)
! Will return the index '52'
! To return the exact index for the smallest element, insert:
       INDEX = LBOUND(B) - 1 + I
! Which is:  INDEX = (-100) - 1 + 52 = (-49)
       PRINT*, B(INDEX)


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]