Skip to content

Commit

Permalink
linalg : ExecutionPolicyの制約を明文化 (#1233)
Browse files Browse the repository at this point in the history
Signed-off-by: Yuya Asano <64895419+sukeya@users.noreply.github.com>
  • Loading branch information
sukeya committed Jul 10, 2024
1 parent 2d887fe commit b6e197f
Show file tree
Hide file tree
Showing 31 changed files with 66 additions and 34 deletions.
5 changes: 2 additions & 3 deletions reference/linalg/add.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,8 @@ $$
## 適格要件
行列またはベクトルの`x`、`y`、`z`の各次元の静的要素数が同じであること。
- [`possibly-addable`](possibly-addable.md)`<InObj1, InObj2, OutObj>() == true`
- (1), (2): [`possibly-addable`](possibly-addable.md)`<InObj1, InObj2, OutObj>()`が`true` (行列またはベクトルの`x`、`y`、`z`の各次元の静的要素数が同じ)
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
5 changes: 4 additions & 1 deletion reference/linalg/apply_givens_rotation.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,10 @@ $$
## 適格要件
- [`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InOutVec1, InOutVec2>(0,0) == true`
- 共通:
+ `Real`が`complex<Real>`を規定できる型であること
+ [`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InOutVec1, InOutVec2>(0,0) == true`
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
4 changes: 2 additions & 2 deletions reference/linalg/copy.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ namespace std::linalg {
## 適格要件
- 0以上`x.rank()`未満の整数rに対して、[`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InVec, OutVec>(r,r)`が`true`
- (1), (2): 0以上`x.rank()`未満の整数rに対して、[`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InVec, OutVec>(r,r)`が`true`
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
`x`と`y`の各次元の要素数が等しくなければならない。
Expand Down
6 changes: 3 additions & 3 deletions reference/linalg/dot.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ namespace std::linalg {
## 適格要件
2つのベクトルの静的な要素数が同じであること。
- [`compatible-static-extents`](compatible-static-extents.md)`<InVec1, InVec2>(0, 0) == true`
- 共通:
+ [`compatible-static-extents`](compatible-static-extents.md)`<InVec1, InVec2>(0, 0)`が`true` (2つのベクトルの静的な要素数が同じ)
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
6 changes: 3 additions & 3 deletions reference/linalg/dotc.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ namespace std::linalg {
## 適格要件
2つのベクトルの静的な要素数が同じであること。
- [`compatible-static-extents`](compatible-static-extents.md)`<InVec1, InVec2>(0, 0) == true`
- 共通:
+ [`compatible-static-extents`](compatible-static-extents.md)`<InVec1, InVec2>(0, 0)`が`true` (2つのベクトルの静的な要素数が同じ)
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/hermitian_matrix_product.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ namespace std::linalg {
+ `InMat2`(`B`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(B), decltype(B)>(0, 1)`が`true` (つまり`B`が正方行列であること)
- (5), (6), (7), (8): [`possibly-addable`](possibly-addable.md)`<decltype(E),decltype(E),decltype(C)>()`が`true`
- (2), (4), (6), (8): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
10 changes: 6 additions & 4 deletions reference/linalg/hermitian_matrix_rank_1_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,12 @@ namespace std::linalg {
## 適格要件
- `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md)
- `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
- [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(A)>(0, 1)`が`true` (つまり`A`が正方行列であること)
- [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(x)>(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること)
- 共通:
+ `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md)
+ `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(A)>(0, 1)`が`true` (つまり`A`が正方行列であること)
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(x)>(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること)
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
8 changes: 5 additions & 3 deletions reference/linalg/hermitian_matrix_rank_2_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ namespace std::linalg {
## 適格要件
- `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md)
- `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
- [`possibly-multipliable`](possibly-multipliable.md)`<decltype(A), decltype(x), decltype(y)>()`が`true`
- 共通:
+ `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md)
+ `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
+ [`possibly-multipliable`](possibly-multipliable.md)`<decltype(A), decltype(x), decltype(y)>()`が`true`
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/hermitian_matrix_vector_product.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ namespace std::linalg {
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(A)>(0, 1)`が`true` (つまり`A`が正方行列であること)
+ [`possibly-multipliable`](possibly-multipliable.md)`<decltype(A), decltype(x), decltype(y)>()`が`true`
- (3), (4): [`possibly-addable`](possibly-addable.md)`<decltype(x),decltype(y),decltype(z)>()`が`true`
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/matrix_frob_norm.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ namespace std::linalg {
## 適格要件
- (1), (2): `decltype(init + `[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()) * abs-if-needed(declval<typename InMat::value_type>()))`が`Scalar`に変換可能。
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 効果
- (3), (4): `T`を`decltype(abs-if-needed(declval<typename InMat::value_type>()) * abs-if-needed(declval<typename InMat::value_type>()))`とすると、
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/matrix_inf_norm.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ namespace std::linalg {
## 適格要件
- (1), (2): `decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()))`が`Scalar`に変換可能。
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 効果
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/matrix_one_norm.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ namespace std::linalg {
## 適格要件
- (1), (2): `decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()))`が`Scalar`に変換可能。
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 効果
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/matrix_product.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ namespace std::linalg {
## 適格要件
- (1), (2), (3), (4): [`possibly-multipliable`](possibly-multipliable.md)`<decltype(A), decltype(B), decltype(C)>()`が`true`
- (3), (4): [`possibly-addable`](possibly-addable.md)`<decltype(E),decltype(E),decltype(C)>()`が`true`
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
3 changes: 2 additions & 1 deletion reference/linalg/matrix_rank_1_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ namespace std::linalg {
## 適格要件
- [`possibly-multipliable`](possibly-multipliable.md)`<InOutMat, InVec2, InVec1>() == true`
- (1), (2): [`possibly-multipliable`](possibly-multipliable.md)`<InOutMat, InVec2, InVec1>() == true`
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
3 changes: 2 additions & 1 deletion reference/linalg/matrix_rank_1_update_c.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ namespace std::linalg {
## 適格要件
- [`possibly-multipliable`](possibly-multipliable.md)`<InOutMat, InVec2, InVec1>() == true`
- (1), (2): [`possibly-multipliable`](possibly-multipliable.md)`<InOutMat, InVec2, InVec1>() == true`
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/matrix_vector_product.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ namespace std::linalg {
## 適格要件
- (1), (2), (3), (4): [`possibly-multipliable`](possibly-multipliable.md)`<decltype(A), decltype(x), decltype(y)>()`が`true`
- (3), (4): [`possibly-addable`](possibly-addable.md)`<decltype(x),decltype(y),decltype(z)>()`が`true`
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
4 changes: 4 additions & 0 deletions reference/linalg/scale.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ $$
$$
## 適格要件
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 効果
ベクトル`x`を`alpha`倍する。
Expand Down
2 changes: 1 addition & 1 deletion reference/linalg/setup_givens_rotation.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ sgn(x):=
$$
## テンプレートパラメータ制約
## 適格要件
- `Real`は`complex<Real>`が規定できる型であること。
Expand Down
2 changes: 1 addition & 1 deletion reference/linalg/setup_givens_rotation_result.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace std::linalg {
ギブンス回転の結果を表すクラス。詳しくは、[`setup_givens_rotation`](setup_givens_rotation.md)にて。
## テンプレートパラメータ制約
## 適格要件
- `Real`は`complex<Real>`が規定できる型であること。
Expand Down
3 changes: 2 additions & 1 deletion reference/linalg/swap_elements.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ namespace std::linalg {
## 適格要件
- 0以上`x.rank()`未満の整数rに対して、[`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InOutVec1, InOutVec2>(r,r)`が`true`
- (1), (2): 0以上`x.rank()`未満の整数rに対して、[`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InOutVec1, InOutVec2>(r,r)`が`true`
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/symmetric_matrix_product.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ namespace std::linalg {
+ `InMat2`(`B`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(B), decltype(B)>(0, 1)`が`true` (つまり`B`が正方行列であること)
- (5), (6), (7), (8): [`possibly-addable`](possibly-addable.md)`<decltype(E),decltype(E),decltype(C)>()`が`true`
- (2), (4), (6), (8): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
10 changes: 6 additions & 4 deletions reference/linalg/symmetric_matrix_rank_1_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,12 @@ namespace std::linalg {
## 適格要件
- `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md)
- `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
- [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(A)>(0, 1)`が`true` (つまり`A`が正方行列であること)
- [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(x)>(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること)
- 共通:
+ `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md)
+ `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(A)>(0, 1)`が`true` (つまり`A`が正方行列であること)
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(x)>(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること)
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
9 changes: 5 additions & 4 deletions reference/linalg/symmetric_matrix_rank_2_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,11 @@ namespace std::linalg {
## 適格要件
- `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md)
- `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
- [`possibly-multipliable`](possibly-multipliable.md)`<decltype(A), decltype(x), decltype(y)>()`が`true`
- 共通:
+ `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md)
+ `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
+ [`possibly-multipliable`](possibly-multipliable.md)`<decltype(A), decltype(x), decltype(y)>()`が`true`
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
- `A.extent(0) == A.extent(1)`
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/symmetric_matrix_vector_product.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ namespace std::linalg {
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(A)>(0, 1)`が`true` (つまり`A`が正方行列であること)
+ [`possibly-multipliable`](possibly-multipliable.md)`<decltype(A), decltype(x), decltype(y)>()`が`true`
- (3), (4): [`possibly-addable`](possibly-addable.md)`<decltype(x),decltype(y),decltype(z)>()`が`true`
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
2 changes: 1 addition & 1 deletion reference/linalg/triangular_matrix_product.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ namespace std::linalg {
+ `InMat2`(`B`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(B), decltype(B)>(0, 1)`が`true` (つまり`B`が正方行列であること)
- (5), (6), (7), (8): [`possibly-addable`](possibly-addable.md)`<decltype(E),decltype(E),decltype(C)>()`が`true`
- (2), (4), (6), (8): `is_execution_policy<ExecutionPolicy>::value`が`true`
- (2), (4), (6), (8): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/triangular_matrix_vector_product.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ namespace std::linalg {
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(y)>(0, 0)`が`true` (つまり`A`の次元と`y`の次元が同じであること)
- (1), (2), (5), (6): [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(x)>(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること)
- (5), (6): [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(z)>(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること)
- (2), (4), (6): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/triangular_matrix_vector_solve.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ namespace std::linalg {
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(A)>(0, 1)`が`true` (つまり`A`が正方行列であること)
+ [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(b)>(0, 0)`が`true` (つまり`A`の次元と`b`の次元が同じであること)
- (1), (2), (3), (4): [`compatible-static-extents`](compatible-static-extents.md)`<decltype(A), decltype(x)>(0, 0)`が`true` (つまり`A`の次元と`b`の次元が同じであること)
- (2), (4), (6), (8): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 事前条件
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/vector_abs_sum.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ namespace std::linalg {
## 適格要件
- (1), (2): `decltype(init + `[`abs-if-needed`](abs-if-needed.md)`(`[`real-if-needed`](real-if-needed.md)`(declval<typename InVec::value_type>())) + abs-if-needed(`[`imag-if-needed`](imag-if-needed.md)`(declval<typename InVec::value_type>())))`が`Scalar`に変換可能。
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 効果
- (3), (4): `T`を`typename InVec::value_type`とすると、
Expand Down
1 change: 1 addition & 0 deletions reference/linalg/vector_idx_abs_max.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ namespace std::linalg {
## 適格要件
- (1), (2): `T`を`decltype(`[`abs-if-needed`](abs-if-needed.md)`(`[`real-if-needed`](real-if-needed.md)`(declval<typename InVec::value_type>())) + abs-if-needed(`[`imag-if-needed`](imag-if-needed.md)`(declval<typename InVec::value_type>())))`とすると、`declval<T>() < declval<T>()`が有効な式であること。
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 戻り値
Expand Down
3 changes: 2 additions & 1 deletion reference/linalg/vector_sum_of_squares.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ $$


## 適格要件
- `decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InVec::value_type>()))``Scalar`に変換可能。
- (1), (2): `decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InVec::value_type>()))``Scalar`に変換可能。
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value``true`


## 効果
Expand Down
2 changes: 2 additions & 0 deletions reference/linalg/vector_two_norm.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ namespace std::linalg {
## 適格要件
- (1), (2): `decltype(init + `[`abs-if-needed`](abs-if-needed.md)`(declval<typename InVec::value_type>()) * abs-if-needed(declval<typename InVec::value_type>()))`が`Scalar`に変換可能。
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
## 効果
- (3), (4): `T`を`decltype(abs-if-needed(declval<typename InVec::value_type>()) * abs-if-needed(declval<typename InVec::value_type>()))`とすると、
Expand Down

0 comments on commit b6e197f

Please sign in to comment.