@@ -42,12 +42,24 @@ BLAS互換アルゴリズムは、演算対象データの次元数や計算オ
4242| [ ` conjugate_transposed ` ] ( linalg/conjugate_transposed.md ) | 読み取り専用の複素共役転置ビュー` std::mdspan ` を作る (function template) | C++26 |
4343
4444
45+ ## BLASの要件
46+ BLAS 1, 2, 3のアルゴリズムでテンプレートパラメータが特に制約されていない場合、テンプレートパラメータの名前によって以下の制約を満たすとする。
47+
48+ | 名前 | 制約 |
49+ | ------| ------|
50+ | ` ExecutionPolicy ` | ` is_execution_policy<ExecutionPolicy>::value == true ` |
51+ | ` Real ` | ` complex<Real> ` が規定できる型 |
52+ | ` Triangle ` | ` upper_triangle_t ` または` lower_triangle_t ` |
53+ | ` DiagonalStorage ` | ` implicit_unit_diagonal_t ` または` implicit_unit_diagonal_t ` |
54+
55+
4556## BLAS 1アルゴリズム
57+ ` std::mpspan ` をパラメータに持つ、この節の全てのアルゴリズムの計算量は渡された` std::mdspan ` の` extents ` の積の最大値、つまりベクトルや行列の要素数の最大値に線形である。
4658
4759| 名前 | 説明 | 対応バージョン |
4860| ------| ------| ----------------|
49- | ` setup_givens_rotation_result ` | ` setup_givens_rotation ` の結果型 (class template) | C++26 |
50- | ` setup_givens_rotation ` | xLARTG: ギブンス回転をセットアップする (function template) | C++26 |
61+ | [ ` setup_givens_rotation_result ` ] ( linalg/setup_givens_rotation_result.md ) | ` setup_givens_rotation ` の結果型 (class template) | C++26 |
62+ | [ ` setup_givens_rotation ` ] ( linalg/setup_givens_rotation.md ) | xLARTG: ギブンス回転をセットアップする (function template) | C++26 |
5163| ` apply_givens_rotation ` | xROT: ベクトルにギブンス回転を適用する (function template) | C++26 |
5264| ` swap_elements ` | xSWAP: 2つのベクトル/行列の要素を交換する (function template) | C++26 |
5365| ` scale ` | xSCAL: ベクトル/行列の要素にスカラ値を乗算する (function template) | C++26 |
@@ -103,35 +115,38 @@ BLAS互換アルゴリズムは、演算対象データの次元数や計算オ
103115## タグ
104116` <linalg> ` ヘッダでは、行列の格納順序や三角行列の上下をタグを使って表現している。
105117
106- 以下、型名を掲載するが、定数も次のように定義されている。
107-
108- ``` cpp
109- inline constexpr tag_name_t tag_name{};
110- ```
111118
112119### 格納順序
113120行列の格納順序を表すタグ。
114121
115- | 型名 | 説明 | 対応バージョン |
122+ | 名前 | 説明 | 対応バージョン |
116123| ------| ------| ----------------|
117- | [ ` column_major_t ` ] ( linalg/column_major_t.md ) | 列優先(column-major) | C++26 |
118- | [ ` row_major_t ` ] ( linalg/row_major_t.md ) | 行優先(row-major) | C++26 |
124+ | [ ` column_major_t ` ] ( linalg/column_major_t.md ) | 列優先(column-major)を表すタグ型 | C++26 |
125+ | [ ` column_major ` ] ( linalg/column_major_t.md ) | 列優先(column-major)を表すタグ値 | C++26 |
126+ | [ ` row_major_t ` ] ( linalg/row_major_t.md ) | 行優先(row-major)を表すタグ型 | C++26 |
127+ | [ ` row_major ` ] ( linalg/row_major_t.md ) | 行優先(row-major)を表すタグ値 | C++26 |
128+
119129
120130### 三角行列
121131上三角行列か下三角行列かを表すタグ。
122132
123- | 型名 | 説明 | 対応バージョン |
133+ | 名前 | 説明 | 対応バージョン |
124134| ------| ------| ----------------|
125- | [ ` upper_triangle_t ` ] ( linalg/upper_triangle_t.md ) | 上三角行列 | C++26 |
126- | [ ` lower_triangle_t ` ] ( linalg/lower_triangle_t.md ) | 下三角行列 | C++26 |
135+ | [ ` upper_triangle_t ` ] ( linalg/upper_triangle_t.md ) | 上三角行列を表すタグ型 | C++26 |
136+ | [ ` upper_triangle ` ] ( linalg/upper_triangle_t.md ) | 上三角行列を表すタグ値 | C++26 |
137+ | [ ` lower_triangle_t ` ] ( linalg/lower_triangle_t.md ) | 下三角行列を表すタグ型 | C++26 |
138+ | [ ` lower_triangle ` ] ( linalg/lower_triangle_t.md ) | 下三角行列を表すタグ値 | C++26 |
139+
127140
128141### 対角成分
129142行列の全ての対角成分を暗黙に乗法における単位元とみなすかどうかを表すタグ。みなした場合、行列の対角成分にはアクセスせず、値が乗法における単位元であるとして計算する。
130143
131- | 型名 | 説明 | 対応バージョン |
144+ | 名前 | 説明 | 対応バージョン |
132145| ------| ------| ----------------|
133- | [ ` implicit_unit_diagonal_t ` ] ( linalg/implicit_unit_diagonal_t.md ) | 全ての対角成分を暗黙に乗法における単位元とみなす | C++26 |
134- | [ ` explicit_diagonal_t ` ] ( linalg/explicit_diagonal_t.md ) | 全ての対角成分にアクセスする | C++26 |
146+ | [ ` implicit_unit_diagonal_t ` ] ( linalg/implicit_unit_diagonal_t.md ) | 全ての対角成分を暗黙に乗法における単位元とみなすタグ型 | C++26 |
147+ | [ ` implicit_unit_diagonal ` ] ( linalg/implicit_unit_diagonal_t.md ) | 全ての対角成分を暗黙に乗法における単位元とみなすタグ値 | C++26 |
148+ | [ ` explicit_diagonal_t ` ] ( linalg/explicit_diagonal_t.md ) | 全ての対角成分にアクセスするタグ型 | C++26 |
149+ | [ ` explicit_diagonal ` ] ( linalg/explicit_diagonal_t.md ) | 全ての対角成分にアクセスするタグ値 | C++26 |
135150
136151
137152## バージョン
@@ -148,3 +163,4 @@ inline constexpr tag_name_t tag_name{};
148163- [ P1674R2: Evolving a Standard C++ Linear Algebra Library from the BLAS] ( https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1674r2.html )
149164- [ std::linalg: Linear Algebra Coming to Standard C++] ( https://github.com/CppCon/CppCon2023/blob/main/Presentations/stdlinalg_linear_algebra_coming_to_standard_cpp.pdf ) , CppCon 2023
150165- [ BLAS (Basic Linear Algebra Subprograms)] ( https://www.netlib.org/blas/ )
166+ - [ Numerics library] ( https://eel.is/c++draft/complex.numbers )
0 commit comments