11#ifndef TLAPACK_TYPES_HH
12#define TLAPACK_TYPES_HH
17#if __has_include(<stdfloat>) && __cplusplus > 202002L
38inline std::ostream& operator<<(std::ostream&
out,
const Layout v)
44 return out <<
"<Invalid>";
59inline std::ostream& operator<<(std::ostream&
out,
const Uplo v)
68 return out <<
"<Invalid>";
125 constexpr operator Uplo()
const noexcept
142 constexpr operator Uplo()
const noexcept
201inline std::ostream& operator<<(std::ostream&
out,
const Diag v)
205 return out <<
"<Invalid>";
227enum class Op :
char {
233inline std::ostream& operator<<(std::ostream&
out,
const Op v)
239 return out <<
"<Invalid>";
244 constexpr operator Op()
const noexcept {
return Op::NoTrans; }
247 constexpr operator Op()
const noexcept {
return Op::Trans; }
253 constexpr operator Op()
const noexcept {
return Op::Conj; }
275inline std::ostream& operator<<(std::ostream&
out,
const Side v)
279 return out <<
"<Invalid>";
308inline std::ostream& operator<<(std::ostream&
out,
const Norm v)
315 return out <<
"<Invalid>";
320 constexpr operator Norm()
const noexcept {
return Norm::Max; }
323 constexpr operator Norm()
const noexcept {
return Norm::One; }
326 constexpr operator Norm()
const noexcept {
return Norm::Two; }
329 constexpr operator Norm()
const noexcept {
return Norm::Inf; }
332 constexpr operator Norm()
const noexcept {
return Norm::Fro; }
356inline std::ostream& operator<<(std::ostream&
out,
const Direction v)
360 return out <<
"<Invalid>";
365 constexpr operator Direction()
const noexcept
371 constexpr operator Direction()
const noexcept
392inline std::ostream& operator<<(std::ostream&
out,
const StoreV v)
396 return out <<
"<Invalid>";
401 constexpr operator StoreV()
const noexcept
447 template <
class T,
class idx_t>
462 template <
class T,
class idx_t>
Concept for types that represent tlapack::Diag.
Concept for types that represent tlapack::Direction.
Concept for types that represent tlapack::Norm.
Concept for types that represent tlapack::Op.
Concept for types that represent tlapack::Side.
Concept for types that represent tlapack::StoreV.
Concept for types that represent tlapack::Uplo.
Sort the numbers in D in increasing order (if ID = 'I') or in decreasing order (if ID = 'D' ).
Definition arrayTraits.hpp:15
typename traits::real_type_traits< Types..., int >::type real_type
The common real type of the list of types.
Definition scalar_type_traits.hpp:113
constexpr internal::MaxNorm MAX_NORM
max norm
Definition types.hpp:339
constexpr internal::UpperHessenberg UPPER_HESSENBERG
Upper Hessenberg access.
Definition types.hpp:182
constexpr internal::FrobNorm FROB_NORM
Frobenius norm of matrices.
Definition types.hpp:347
constexpr internal::LowerTriangle LOWER_TRIANGLE
Lower Triangle access.
Definition types.hpp:188
constexpr internal::UpperTriangle UPPER_TRIANGLE
Upper Triangle access.
Definition types.hpp:186
Diag
Definition types.hpp:197
@ Unit
The main diagonal is assumed to consist of 1's.
@ NonUnit
The main diagonal is not assumed to consist of 1's.
constexpr internal::OneNorm ONE_NORM
one norm
Definition types.hpp:341
Side
Definition types.hpp:271
constexpr internal::Backward BACKWARD
Backward direction.
Definition types.hpp:383
constexpr internal::RightSide RIGHT_SIDE
right side
Definition types.hpp:296
constexpr internal::TwoNorm TWO_NORM
two norm
Definition types.hpp:343
constexpr internal::RowwiseStorage ROWWISE_STORAGE
Rowwise storage.
Definition types.hpp:416
constexpr internal::StrictUpper STRICT_UPPER
Strict Upper Triangle access.
Definition types.hpp:190
constexpr internal::Forward FORWARD
Forward direction.
Definition types.hpp:381
constexpr internal::Transpose TRANSPOSE
transpose
Definition types.hpp:262
constexpr internal::UnitDiagonal UNIT_DIAG
The main diagonal is assumed to consist of 1's.
Definition types.hpp:222
constexpr internal::StrictLower STRICT_LOWER
Strict Lower Triangle access.
Definition types.hpp:192
constexpr internal::GeneralAccess GENERAL
General access.
Definition types.hpp:180
constexpr internal::NonUnitDiagonal NON_UNIT_DIAG
The main diagonal is not assumed to consist of 1's.
Definition types.hpp:220
constexpr internal::Conjugate CONJUGATE
non-transpose conjugate
Definition types.hpp:266
Direction
Definition types.hpp:352
@ Forward
Forward direction.
@ Backward
Backward direction.
Op
Definition types.hpp:227
@ Conj
non-transpose conjugate
@ ConjTrans
conjugate transpose
constexpr internal::ConjTranspose CONJ_TRANS
conjugate transpose
Definition types.hpp:264
constexpr internal::ColumnwiseStorage COLUMNWISE_STORAGE
Columnwise storage.
Definition types.hpp:414
StoreV
Definition types.hpp:388
@ Rowwise
Rowwise storage.
@ Columnwise
Columnwise storage.
constexpr internal::LowerHessenberg LOWER_HESSENBERG
Lower Hessenberg access.
Definition types.hpp:184
Uplo
Definition types.hpp:50
@ General
0 <= i <= m, 0 <= j <= n.
@ Upper
0 <= i <= j, 0 <= j <= n.
@ StrictLower
0 <= i <= m, 0 <= j <= i-1.
@ Lower
0 <= i <= m, 0 <= j <= i.
@ StrictUpper
0 <= i <= j-1, 0 <= j <= n.
@ UpperHessenberg
0 <= i <= j+1, 0 <= j <= n.
@ LowerHessenberg
0 <= i <= m, 0 <= j <= i+1.
constexpr internal::NoTranspose NO_TRANS
no transpose
Definition types.hpp:260
constexpr internal::InfNorm INF_NORM
infinity norm of matrices
Definition types.hpp:345
Norm
Definition types.hpp:301
@ Inf
infinity norm of matrices
@ Fro
Frobenius norm of matrices.
constexpr internal::LeftSide LEFT_SIDE
left side
Definition types.hpp:294
Layout
Definition types.hpp:29
@ Unspecified
Used on all other data structures.
@ ColMajor
Column-major layout.
@ RowMajor
Row-major layout.
Band access.
Definition types.hpp:432
std::size_t lower_bandwidth
Number of subdiagonals.
Definition types.hpp:433
std::size_t upper_bandwidth
Number of superdiagonals.
Definition types.hpp:434
General access.
Definition types.hpp:82
Lower Hessenberg access.
Definition types.hpp:141
Lower Triangle access.
Definition types.hpp:110
Strict Lower Triangle access.
Definition types.hpp:172
Strict Upper Triangle access.
Definition types.hpp:158
Upper Hessenberg access.
Definition types.hpp:124
Upper Triangle access.
Definition types.hpp:96
Describes a row- or column-major matrix.
Definition types.hpp:448
Describes a strided vector.
Definition types.hpp:463