1#ifndef TATOOINE_LAPACK_GESV_H
2#define TATOOINE_LAPACK_GESV_H
5auto dgesv_(
int* N,
int* NRHS,
double* A,
int* LDA,
int* IPIV,
double* B,
6 int* LDB,
int* INFO) -> void;
7auto sgesv_(
int* N,
int* NRHS,
float* A,
int* LDA,
int* IPIV,
float* B,
8 int* LDB,
int* INFO) -> void;
37template <std::
floating_po
int Float>
38auto gesv(
int N,
int NRHS, Float* A,
int LDA,
int* IPIV, Float* B,
int LDB)
41 if constexpr (std::same_as<Float, double>) {
42 dgesv_(&N, &NRHS, A, &LDA, IPIV, B, &LDB, &INFO);
43 }
else if constexpr (std::same_as<Float, float>) {
44 sgesv_(&N, &NRHS, A, &LDA, IPIV, B, &LDB, &INFO);
49template <
typename T,
size_t N>
56template <
typename T,
size_t N,
size_t K>
66 assert(A.
rank() == 2);
70 assert(B.
rank() <= 2);
constexpr auto data() -> ValueType *
Definition: static_multidim_array.h:260
auto dgesv_(int *N, int *NRHS, double *A, int *LDA, int *IPIV, double *B, int *LDB, int *INFO) -> void
auto sgesv_(int *N, int *NRHS, float *A, int *LDA, int *IPIV, float *B, int *LDB, int *INFO) -> void
auto gesv(int N, int NRHS, Float *A, int LDA, int *IPIV, Float *B, int LDB) -> int
Definition: gesv.h:38
static auto constexpr rank()
Definition: base_tensor.h:41
static auto constexpr dimension(std::size_t const i)
Definition: base_tensor.h:49