From Jason Turner

[linalg.tags]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp162_2s7j/{from.md → to.md} +67 -0
tmp/tmp162_2s7j/{from.md → to.md} RENAMED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Tag classes <a id="linalg.tags">[[linalg.tags]]</a>
2
+
3
+ #### Storage order tags <a id="linalg.tags.order">[[linalg.tags.order]]</a>
4
+
5
+ The storage order tags describe the order of elements in an `mdspan`
6
+ with `layout_blas_packed` [[linalg.layout.packed]] layout.
7
+
8
+ ``` cpp
9
+ struct column_major_t {
10
+ explicit column_major_t() = default;
11
+ };
12
+ inline constexpr column_major_t column_major{};
13
+
14
+ struct row_major_t {
15
+ explicit row_major_t() = default;
16
+ };
17
+ inline constexpr row_major_t row_major{};
18
+ ```
19
+
20
+ `column_major_t` indicates a column-major order, and `row_major_t`
21
+ indicates a row-major order.
22
+
23
+ #### Triangle tags <a id="linalg.tags.triangle">[[linalg.tags.triangle]]</a>
24
+
25
+ ``` cpp
26
+ struct upper_triangle_t {
27
+ explicit upper_triangle_t() = default;
28
+ };
29
+ inline constexpr upper_triangle_t upper_triangle{};
30
+
31
+ struct lower_triangle_t {
32
+ explicit lower_triangle_t() = default;
33
+ };
34
+ inline constexpr lower_triangle_t lower_triangle{};
35
+ ```
36
+
37
+ These tag classes specify whether algorithms and other users of a matrix
38
+ (represented as an `mdspan`) access the upper triangle
39
+ (`upper_triangle_t`) or lower triangle (`lower_triangle_t`) of the
40
+ matrix (see also [[linalg.general]]). This is also subject to the
41
+ restrictions of `implicit_unit_diagonal_t` if that tag is also used as a
42
+ function argument; see below.
43
+
44
+ #### Diagonal tags <a id="linalg.tags.diagonal">[[linalg.tags.diagonal]]</a>
45
+
46
+ ``` cpp
47
+ struct implicit_unit_diagonal_t {
48
+ explicit implicit_unit_diagonal_t() = default;
49
+ };
50
+ inline constexpr implicit_unit_diagonal_t implicit_unit_diagonal{};
51
+
52
+ struct explicit_diagonal_t {
53
+ explicit explicit_diagonal_t() = default;
54
+ };
55
+ inline constexpr explicit_diagonal_t explicit_diagonal{};
56
+ ```
57
+
58
+ These tag classes specify whether algorithms access the matrix’s
59
+ diagonal entries, and if not, then how algorithms interpret the matrix’s
60
+ implicitly represented diagonal values.
61
+
62
+ The `implicit_unit_diagonal_t` tag indicates that an implicit unit
63
+ diagonal is to be assumed [[linalg.general]].
64
+
65
+ The `explicit_diagonal_t` tag indicates that an explicit diagonal is
66
+ used [[linalg.general]].
67
+