マトリックス乗算を実行します。
引き数タイプおよび属性
+----------------------------------IBM 拡張----------------------------------+
MINDIM の値の意味は次のとおりです。
デフォルトでは、MATMUL は、マトリックス乗算の従来の O(N**3) 方式を採用します。
libpthreads.a ライブラリーをリンクすると、O(N**2.81) Strassen 方式の Winograd 変分を次の条件下で採用します。
+--------------------------------IBM 拡張の終り-------------------------------+
最低でも 1 つの引き数のランクを 2 にしなければなりません。 MATRIX_B の唯一のまたはその最初の次元は、MATRIX_A の唯一のまたは最後の次元に等しくなければなりません。
クラス
変換関数
結果値
結果は配列になります。いずれかの引き数のランクが 1 であれば、結果のランクは 1 になります。両方の引き数のランクが 2 であれば、結果のランクは 2 になります。
結果のデータ型は、表 3 および 表 4 に記載されている規則に従って、引き数のデータ型によって異なります。
MATRIX_A と MATRIX_B のデータ型が数値の場合は、結果の配列エレメントは次のようになります。
MATRIX_A と MATRIX_B のデータ型が論理タイプの場合は、結果の配列エレメントは次のようになります。
例
! A is the array | 1 2 3 |, B is the array | 7 10 |
! | 4 5 6 | | 8 11 |
! | 9 12 |
RES = MATMUL(A, B)
! The result is | 50 68 |
! | 122 167 |
+----------------------------------IBM 拡張----------------------------------+
! HUGE_ARRAY and GIGANTIC_ARRAY in this example are
! large arrays of real or complex type, so the operation
! might be faster with the Strassen algorithm.
RES = MATMUL(HUGE_ARRAY, GIGANTIC_ARRAY, MINDIM=196)
+--------------------------------IBM 拡張の終り-------------------------------+
+----------------------------------IBM 拡張----------------------------------+
関連情報
-qessl コンパイラー・オプションが使用されている場合、コンパイラーは Fortran 実行時ライブラリーではなく、 ESSL ライブラリーを使用しようとします。詳細については、「ユーザーズ・ガイド」を参照してください。
マトリックス乗算に対する Strassen の方式の数値的安定度については、以下の資料に記述されています。
+--------------------------------IBM 拡張の終り-------------------------------+