目的
マトリックス乗算を実行します。
クラス
変換関数
引き数の型と属性
これは MATRIX_A とは異なる数値型の場合もありますが、 1 つの数値マトリックスに 1 つの論理マトリックスという使い方はできません。
+----------------------------------IBM 拡張----------------------------------+
MINDIM の値の意味は次のとおりです。
デフォルトでは、MATMUL は、 マトリックス乗算の従来の O(N**3) 方式を採用します。
libpthreads.a ライブラリー をリンクすると、O(N**2.81) Strassen 方式の Winograd 変分を次の条件下で採用します。
+------------------------------End of IBM 拡張-------------------------------+
最低でも 1 つの引き数のランクを 2 にしなければなりません。 MATRIX_B の唯一のまたはその最初の 次元は、MATRIX_A の唯一のまたは最後の 次元に等しくなければなりません。
結果の値
結果は配列になります。いずれかの引き数のランクが 1 であれば、 結果のランクは 1 になります。両方の引き数のランクが 2 であれば、 結果のランクは 2 になります。
結果のデータ型は、表 7 および 表 8 に 記載されている規則に従って、引き数のデータ型によって異なります。
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)
+------------------------------End of IBM 拡張-------------------------------+
+----------------------------------IBM 拡張----------------------------------+
関連情報
マトリックス乗算に対する Strassen の方式の数値的安定度については、 以下の資料に記述されています。
+------------------------------End of IBM 拡張-------------------------------+