1#ifndef TATOOINE_LAPACK_LANGE_H
2#define TATOOINE_LAPACK_LANGE_H
6auto dlange_(
char* NORM,
int* M,
int* N,
double* A,
int* LDA,
double* WORK)
8auto slange_(
char* NORM,
int* M,
int* N,
float* A,
int* LDA,
float* WORK)
22template <std::
floating_po
int Float>
23auto lange(
norm n,
int M,
int N, Float* A,
int LDA, Float* WORK) -> Float {
25 if constexpr (std::same_as<Float, double>) {
26 ret =
dlange_(
reinterpret_cast<char*
>(&n), &M, &N, A, &LDA, WORK);
27 }
else if constexpr (std::same_as<Float, float>) {
28 ret =
slange_(
reinterpret_cast<char*
>(&n), &M, &N, A, &LDA, WORK);
33template <std::
floating_po
int Float>
34auto lange(
norm n,
int M,
int N, Float* A,
int LDA) -> Float {
36 auto WORK = std::unique_ptr<Float>{
nullptr};
38 WORK = std::unique_ptr<Float>{
new Float[M]};
40 if constexpr (std::same_as<Float, double>) {
41 ret =
dlange_(
reinterpret_cast<char*
>(&n), &M, &N, A, &LDA, WORK.get());
42 }
else if constexpr (std::same_as<Float, float>) {
43 ret =
slange_(
reinterpret_cast<char*
>(&n), &M, &N, A, &LDA, WORK.get());
51template <
typename T,
size_t M,
size_t N>
constexpr auto data() -> ValueType *
Definition: static_multidim_array.h:260
auto lange(norm n, int M, int N, Float *A, int LDA, Float *WORK) -> Float
Definition: lange.h:23
auto slange_(char *NORM, int *M, int *N, float *A, int *LDA, float *WORK) -> float
auto dlange_(char *NORM, int *M, int *N, double *A, int *LDA, double *WORK) -> double
norm
Definition: base.h:70