Skip to content

Commit d741acc

Browse files
committed
linalg : abs-if-neededを追加 (#1233)
Signed-off-by: Yuya Asano <64895419+sukeya@users.noreply.github.com>
1 parent d8117d8 commit d741acc

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

reference/linalg/abs-if-needed.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# abs-if-needed
2+
3+
* linalg[meta header]
4+
* function[meta id-type]
5+
* std::linalg[meta namespace]
6+
* cpp26[meta cpp]
7+
8+
## 概要
9+
`abs-if-needed`は、必要に応じて絶対値を計算する、説明専用の関数オブジェクトである。
10+
11+
`T`の式`E`に対して、式`abs-if-needed(E)`は次と等価である。
12+
13+
1. もし`T`が符号なし整数なら、`E`
14+
15+
2. そうでない場合、もし`T`が算術型なら、`std::abs(E)`
16+
17+
3. そうでない場合、式`abs(E)`が下記宣言を含むコンテキストにおいてオーバーロード解決を行った結果が妥当であるとき、`abs(E)`
18+
```cpp
19+
template<class T> T conj(const T&) = delete;
20+
```
21+
22+
23+
## 備考
24+
オーバーロード解決により選択された関数が入力値の絶対値を返さないとき、プログラムは不適格となる。
25+
26+
27+
## バージョン
28+
### 言語
29+
- C++26
30+
31+
32+
## 参照
33+
- [P1673R13 A free function linear algebra interface based on the BLAS](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p1673r13.html)
34+

reference/linalg/vector_sum_of_squares.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ $$
4444

4545

4646
## 適格要件
47-
- `decltype(abs-if-needed(declval<typename InVec::value_type>()))``Scalar`に変換可能。
47+
- `decltype(`[`abs-if-needed`](abs-if-needed.md)`(declval<typename InVec::value_type>()))``Scalar`に変換可能。
4848

4949

5050
## 効果

0 commit comments

Comments
 (0)