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 |
+
|