121 lines
2.5 KiB
C++
121 lines
2.5 KiB
C++
#ifndef LAPACK_CPP_ENUMP_HPP
|
|
#define LAPACK_CPP_ENUMP_HPP
|
|
|
|
#include <cassert>
|
|
|
|
namespace lapack_cpp {
|
|
|
|
enum class Layout : char { RowMajor = 'R', ColMajor = 'C' };
|
|
|
|
enum class Op : char { NoTrans = 'N', Trans = 'T', ConjTrans = 'C' };
|
|
|
|
inline constexpr Op char2op(char t)
|
|
{
|
|
switch (t) {
|
|
case 'N':
|
|
return Op::NoTrans;
|
|
case 'T':
|
|
return Op::Trans;
|
|
case 'C':
|
|
return Op::ConjTrans;
|
|
default:
|
|
assert(false);
|
|
return Op::NoTrans;
|
|
}
|
|
}
|
|
|
|
enum class Side : char { Left = 'L', Right = 'R' };
|
|
|
|
inline constexpr Side char2side(char t)
|
|
{
|
|
switch (t) {
|
|
case 'L':
|
|
return Side::Left;
|
|
case 'R':
|
|
return Side::Right;
|
|
default:
|
|
assert(false);
|
|
return Side::Left;
|
|
}
|
|
}
|
|
|
|
enum class Uplo : char { Upper = 'U', Lower = 'L' };
|
|
|
|
inline constexpr Uplo char2uplo(char t)
|
|
{
|
|
switch (t) {
|
|
case 'U':
|
|
return Uplo::Upper;
|
|
case 'R':
|
|
return Uplo::Lower;
|
|
default:
|
|
assert(false);
|
|
return Uplo::Upper;
|
|
}
|
|
}
|
|
|
|
enum class Diag : char { Unit = 'U', NonUnit = 'N' };
|
|
|
|
inline constexpr Diag char2diag(char t)
|
|
{
|
|
switch (t) {
|
|
case 'U':
|
|
return Diag::Unit;
|
|
case 'N':
|
|
return Diag::NonUnit;
|
|
default:
|
|
assert(false);
|
|
return Diag::NonUnit;
|
|
}
|
|
}
|
|
|
|
enum class Direction : char { Forward = 'F', Backward = 'B' };
|
|
|
|
inline constexpr Direction char2direct(char t)
|
|
{
|
|
switch (t) {
|
|
case 'F':
|
|
return Direction::Forward;
|
|
case 'N':
|
|
return Direction::Backward;
|
|
default:
|
|
assert(false);
|
|
return Direction::Forward;
|
|
}
|
|
}
|
|
|
|
enum class IncDec : char { Increasing = 'I', Decreasing = 'D' };
|
|
|
|
inline constexpr IncDec char2incdec(char t)
|
|
{
|
|
switch (t) {
|
|
case 'I':
|
|
return IncDec::Increasing;
|
|
case 'D':
|
|
return IncDec::Decreasing;
|
|
default:
|
|
assert(false);
|
|
return IncDec::Increasing;
|
|
}
|
|
}
|
|
|
|
enum class CompQ : char { No = 'N', Update = 'V', Initialize = 'I' };
|
|
|
|
inline constexpr CompQ char2compq(char t)
|
|
{
|
|
switch (t) {
|
|
case 'N':
|
|
return CompQ::No;
|
|
case 'V':
|
|
return CompQ::Update;
|
|
case 'I':
|
|
return CompQ::Initialize;
|
|
default:
|
|
assert(false);
|
|
return CompQ::No;
|
|
}
|
|
}
|
|
|
|
} // namespace lapack_cpp
|
|
|
|
#endif // LAPACK_CPP_ENUMP_HPP
|