Skip to content

Commit d73c2fc

Browse files
committed
linalg: refine BLAS1 functions (#1233)
- Markdownリストレイアウト崩れ修正 - 一部に内部リンク付与 - 例示コードのハイライト指定
1 parent 0ee79ff commit d73c2fc

14 files changed

+93
-78
lines changed

reference/linalg/apply_givens_rotation.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ namespace std::linalg {
5050
complex<Real> s); // (4)
5151
}
5252
```
53+
* complex[link /reference/complex/complex.md]
5354
5455
5556
## 概要
@@ -73,8 +74,8 @@ $$
7374
7475
## 適格要件
7576
- 共通:
76-
+ `Real`が`complex<Real>`を規定できる型であること
77-
+ [`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InOutVec1, InOutVec2>(0,0) == true`
77+
+ `Real`が[`complex`](/reference/complex/complex.md)`<Real>`を規定できる型であること
78+
+ [`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InOutVec1, InOutVec2>(0,0) == true`
7879
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
7980
8081

reference/linalg/copy.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,17 @@ namespace std::linalg {
3030
3131
## テンプレートパラメータ制約
3232
`x`と`y`の次元が等しくなければならない。
33+
3334
- `x.rank() == y.rank()`
3435
3536
3637
## 適格要件
37-
- (1), (2): 0以上`x.rank()`未満の整数rに対して、[`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InVec, OutVec>(r,r)`が`true`
38+
- (1), (2): 0以上[`x.rank()`](/reference/mdspan/mdspan/rank.md)未満の整数`r`に対して、[`compatible-static-extents`](/reference/linalg/compatible-static-extents.md)`<InVec, OutVec>(r,r)`が`true`
3839
- (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
3940
4041
## 事前条件
4142
`x`と`y`の各次元の要素数が等しくなければならない。
43+
4244
- `x.extents() == y.extents()`
4345
4446

reference/linalg/dot.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ namespace std::linalg {
4545
4646
## 適格要件
4747
- 共通:
48-
+ [`compatible-static-extents`](compatible-static-extents.md)`<InVec1, InVec2>(0, 0)`が`true` (2つのベクトルの静的な要素数が同じ)
48+
+ [`compatible-static-extents`](compatible-static-extents.md)`<InVec1, InVec2>(0, 0)`が`true` (2つのベクトルの静的な要素数が同じ)
4949
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
5050
5151
@@ -58,8 +58,8 @@ namespace std::linalg {
5858
## 効果
5959
- (1), (2): なし
6060
- (3), (4): `T`を各ベクトルの値型の積の型`decltype(declval<typename InVec1::value_type>() * declval<typename InVec2::value_type>())`とする。
61-
+ (3): `dot(v1, v2, T{})`を返す。
62-
+ (4): `dot(std::forward<ExecutionPolicy>(exec), v1, v2, T{})`を返す。
61+
+ (3): `dot(v1, v2, T{})`を返す。
62+
+ (4): `dot(std::forward<ExecutionPolicy>(exec), v1, v2, T{})`を返す。
6363
6464
6565
## 戻り値
@@ -77,7 +77,7 @@ $$
7777
7878
7979
## 備考
80-
- (1), (2): もし`InVec1::value_type`、`InVec2::value_type`、`Scalar`が全て浮動小数点数型または`std::complex`の特殊化で、`Scalar`が`InVec1::value_type`と`InVec2::value_type`より精度が高い場合、和の各項は`Scalar`またはより高い精度の型が使われる。
80+
- (1), (2): もし`InVec1::value_type`、`InVec2::value_type`、`Scalar`が全て浮動小数点数型または[`std::complex`](/reference/complex/complex.md)の特殊化で、`Scalar`が`InVec1::value_type`と`InVec2::value_type`より精度が高い場合、和の各項は`Scalar`またはより高い精度の型が使われる。
8181
8282
8383
## 例

reference/linalg/dotc.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ namespace std::linalg {
4545
4646
## 適格要件
4747
- 共通:
48-
+ [`compatible-static-extents`](compatible-static-extents.md)`<InVec1, InVec2>(0, 0)`が`true` (2つのベクトルの静的な要素数が同じ)
48+
+ [`compatible-static-extents`](compatible-static-extents.md)`<InVec1, InVec2>(0, 0)`が`true` (2つのベクトルの静的な要素数が同じ)
4949
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
5050
5151
@@ -57,10 +57,10 @@ namespace std::linalg {
5757
5858
## 効果
5959
- (1): [`dot`](dot.md)`(`[`conjugated`](conjugated.md)`(v1), v2, init)`を返す。
60-
- (2): `dot(std::forward<ExecutionPolicy>(exec), conjugated(v1), v2, init)`を返す。
61-
- (3), (4): `T`を各ベクトルの値型の積の型`decltype(conj-if-needed(declval<typename InVec1::value_type>()) * declval<typename InVec2::value_type>())`とする。
62-
+ (3): `dotc(v1, v2, T{})`を返す。
63-
+ (4): `dotc(std::forward<ExecutionPolicy>(exec), v1, v2, T{})`を返す。
60+
- (2): [`dot`](dot.md)`(std::forward<ExecutionPolicy>(exec),` [`conjugated`](conjugated.md)`(v1), v2, init)`を返す。
61+
- (3), (4): `T`を各ベクトルの値型の積の型`decltype(`[`conj-if-needed`](conj-if-needed.md)`(declval<typename InVec1::value_type>()) * declval<typename InVec2::value_type>())`とする。
62+
+ (3): `dotc(v1, v2, T{})`を返す。
63+
+ (4): `dotc(std::forward<ExecutionPolicy>(exec), v1, v2, T{})`を返す。
6464
6565
6666
## 戻り値
@@ -114,7 +114,7 @@ int main()
114114
return 0;
115115
}
116116
```
117-
117+
* std::linalg::dotc[color ff0000]
118118

119119
### 出力
120120
```

reference/linalg/matrix_frob_norm.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ namespace std::linalg {
3838
3939
4040
## 適格要件
41-
- (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`に変換可能。
41+
- (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`に変換可能。
4242
- (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`<ExecutionPolicy>::value`が`true`
4343
4444
## 効果
45-
- (3), (4): `T`を`decltype(abs-if-needed(declval<typename InMat::value_type>()) * abs-if-needed(declval<typename InMat::value_type>()))`とすると、
46-
+ (3): `matrix_frob_norm(A, T{})`を返す。
47-
+ (4): `matrix_frob_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
45+
- (3), (4): `T`を`decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()) * abs-if-needed(declval<typename InMat::value_type>()))`とすると、
46+
+ (3): `matrix_frob_norm(A, T{})`を返す。
47+
+ (4): `matrix_frob_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
4848
4949
5050
## 戻り値
@@ -54,13 +54,13 @@ $$
5454
\sqrt{\sum_{i = 0}^{m - 1} \sum_{j = 0}^{n - 1} |\verb|A[|i, j\verb|]||^2 + \verb|init|^2}
5555
$$
5656
57-
- (3), (4): `T`を`decltype(abs-if-needed(declval<typename InMat::value_type>()) * abs-if-needed(declval<typename InMat::value_type>()))`とすると、
58-
+ (3): `matrix_frob_norm(A, T{})`を返す。
59-
+ (4): `matrix_frob_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
57+
- (3), (4): `T`を`decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()) * abs-if-needed(declval<typename InMat::value_type>()))`とすると、
58+
+ (3): `matrix_frob_norm(A, T{})`を返す。
59+
+ (4): `matrix_frob_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
6060
6161
6262
## 備考
63-
- (1), (2): もし`InMat::value_type`と`Scalar`がどちらも浮動小数点数型または`std::complex`の特殊化で、`Scalar`が`InMat::value_type`より精度が高い場合、和の各項は`Scalar`またはより高い精度の型が使われる。
63+
- (1), (2): もし`InMat::value_type`と`Scalar`がどちらも浮動小数点数型または[`std::complex`](/reference/complex/complex.md)の特殊化で、`Scalar`が`InMat::value_type`より精度が高い場合、和の各項は`Scalar`またはより高い精度の型が使われる。
6464
6565
6666
## 例
@@ -97,7 +97,7 @@ int main()
9797
return 0;
9898
}
9999
```
100-
100+
* std::linalg::matrix_frob_norm[color ff0000]
101101

102102
### 出力
103103
```

reference/linalg/matrix_inf_norm.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ namespace std::linalg {
4343
4444
4545
## 効果
46-
- (3), (4): `T`を`decltype(abs-if-needed(declval<typename InMat::value_type>()))`とすると、
47-
+ (3): `matrix_inf_norm(A, T{})`を返す。
48-
+ (4): `matrix_inf_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
46+
- (3), (4): `T`を`decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()))`とすると、
47+
+ (3): `matrix_inf_norm(A, T{})`を返す。
48+
+ (4): `matrix_inf_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
4949
5050
5151
## 戻り値
@@ -57,13 +57,13 @@ $$
5757
\verb|init| + \max_{i = 0, \dots ,m - 1}\sum_{j = 0}^{n - 1} |\verb|A[|i, j\verb|]||
5858
$$
5959
60-
- (3), (4): `T`を`decltype(abs-if-needed(declval<typename InMat::value_type>()))`とすると、
61-
+ (3): `matrix_inf_norm(A, T{})`を返す。
62-
+ (4): `matrix_inf_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
60+
- (3), (4): `T`を`decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()))`とすると、
61+
+ (3): `matrix_inf_norm(A, T{})`を返す。
62+
+ (4): `matrix_inf_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
6363
6464
6565
## 備考
66-
- (1), (2): もし`InMat::value_type`と`Scalar`がどちらも浮動小数点数型または`std::complex`の特殊化で、`Scalar`が`InMat::value_type`より精度が高い場合、和の各項は`Scalar`またはより高い精度の型が使われる。
66+
- (1), (2): もし`InMat::value_type`と`Scalar`がどちらも浮動小数点数型または[`std::complex`](/reference/complex/complex.md)の特殊化で、`Scalar`が`InMat::value_type`より精度が高い場合、和の各項は`Scalar`またはより高い精度の型が使われる。
6767
6868
6969
## 例
@@ -100,7 +100,7 @@ int main()
100100
return 0;
101101
}
102102
```
103-
103+
* std::linalg::matrix_inf_norm[color ff0000]
104104

105105
### 出力
106106
```

reference/linalg/matrix_one_norm.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ namespace std::linalg {
4343
4444
4545
## 効果
46-
- (3), (4): `T`を`decltype(abs-if-needed(declval<typename InMat::value_type>()))`とすると、
47-
+ (3): `matrix_one_norm(A, T{})`を返す。
48-
+ (4): `matrix_one_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
46+
- (3), (4): `T`を`decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()))`とすると、
47+
+ (3): `matrix_one_norm(A, T{})`を返す。
48+
+ (4): `matrix_one_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
4949
5050
5151
## 戻り値
@@ -57,13 +57,13 @@ $$
5757
\verb|init| + \max_{j = 0, \dots ,n - 1}\sum_{i = 0}^{m - 1} |\verb|A[|i, j\verb|]||
5858
$$
5959
60-
- (3), (4): `T`を`decltype(abs-if-needed(declval<typename InMat::value_type>()))`とすると、
61-
+ (3): `matrix_one_norm(A, T{})`を返す。
62-
+ (4): `matrix_one_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
60+
- (3), (4): `T`を`decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InMat::value_type>()))`とすると、
61+
+ (3): `matrix_one_norm(A, T{})`を返す。
62+
+ (4): `matrix_one_norm(std::forward<ExecutionPolicy>(exec), A, T{})`を返す。
6363
6464
6565
## 備考
66-
- (1), (2): もし`InMat::value_type`と`Scalar`がどちらも浮動小数点数型または`std::complex`の特殊化で、`Scalar`が`InMat::value_type`より精度が高い場合、和の各項は`Scalar`またはより高い精度の型が使われる。
66+
- (1), (2): もし`InMat::value_type`と`Scalar`がどちらも浮動小数点数型または[`std::complex`](/reference/complex/complex.md)の特殊化で、`Scalar`が`InMat::value_type`より精度が高い場合、和の各項は`Scalar`またはより高い精度の型が使われる。
6767
6868
6969
## 例
@@ -100,7 +100,7 @@ int main()
100100
return 0;
101101
}
102102
```
103-
103+
* std::linalg::matrix_one_norm[color ff0000]
104104

105105
### 出力
106106
```

reference/linalg/setup_givens_rotation.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@
99
```cpp
1010
namespace std::linalg {
1111
template<class Real>
12-
setup_givens_rotation_result<Real> setup_givens_rotation(Real a, Real b) noexcept; // (1)
12+
setup_givens_rotation_result<Real>
13+
setup_givens_rotation(Real a, Real b) noexcept; // (1)
1314

1415
template<class Real>
15-
setup_givens_rotation_result<complex<Real>> setup_givens_rotation(complex<Real> a, complex<Real> b) noexcept; // (2)
16+
setup_givens_rotation_result<complex<Real>>
17+
setup_givens_rotation(complex<Real> a, complex<Real> b) noexcept; // (2)
1618
}
1719
```
18-
20+
* setup_givens_rotation_result[link setup_givens_rotation_result.md]
21+
* complex[link /reference/complex/complex.md]
1922
2023
## 概要
2124
ギブンス回転を計算する。すなわち、以下の式が成り立つような、`Real`型の値`c`と `s`, `r`を計算する。
@@ -53,7 +56,7 @@ $$
5356
5457
5558
## 適格要件
56-
- `Real`は`complex<Real>`が規定できる型であること。
59+
- `Real`は[`complex`](/reference/complex/complex.md)`<Real>`が規定できる型であること。
5760
5861
5962
## 戻り値

reference/linalg/setup_givens_rotation_result.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ namespace std::linalg {
2121
};
2222
}
2323
```
24+
* complex[link /reference/complex/complex.md]
25+
2426
2527
## 概要
2628
ギブンス回転の結果を表すクラス。詳しくは、[`setup_givens_rotation`](setup_givens_rotation.md)にて。
2729
2830
2931
## 適格要件
30-
- `Real`は`complex<Real>`が規定できる型であること。
32+
- `Real`は[`complex`](/reference/complex/complex.md)`<Real>`が規定できる型であること。
3133
3234
3335
## 例

reference/linalg/swap_elements.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ namespace std::linalg {
3030
3131
## テンプレートパラメータ制約
3232
`x`と`y`の次元が等しくなければならない。
33+
3334
- `x.rank() == y.rank()`
3435
3536
@@ -40,6 +41,7 @@ namespace std::linalg {
4041
4142
## 事前条件
4243
`x`と`y`の各次元の要素数が等しくなければならない。
44+
4345
- `x.extents() == y.extents()`
4446
4547

0 commit comments

Comments
 (0)