18
19
20
24#include "../concepts.hpp"
26#include "../mapped_functions.hpp"
36
37
38
39 using dcomplex = std::complex<
double>;
46
47
48
60 requires(!std::is_same_v<A, std::remove_cvref_t<A>>)
61 static constexpr bool is_conj_array_expr<A> = is_conj_array_expr<std::remove_cvref_t<A>>;
84
85
86
87
88
89
92 static_assert(!(
conj and not transpose),
"Error in nda::blas::get_op: Cannot use conjugate operation alone in blas operations");
102
103
104
105
106
107
108 template <MemoryMatrix A>
110 return a.indexmap().strides()[has_F_layout<A> ? 1 : 0];
114
115
116
117
118
119
120 template <MemoryMatrix A>
122 return a.shape()[has_F_layout<A> ? 1 : 0];
#define CUBLAS_CHECK(X,...)
#define NDA_RUNTIME_ERROR
int get_ld(A const &a)
Get the leading dimension in LAPACK jargon of an nda::MemoryMatrix.
static constexpr bool has_C_layout
Constexpr variable that is true if the given nda::Array type has a C memory layout.
static constexpr bool is_conj_array_expr
Constexpr variable that is true if the given type is a conjugate lazy expression.
int get_ncols(A const &a)
Get the number of columns in LAPACK jargon of an nda::MemoryMatrix.
static constexpr bool is_conj_array_expr< expr_call< conj_f, A > >
Specialization of nda::blas::is_conj_array_expr for the conjugate lazy expressions.
static constexpr bool has_F_layout
Constexpr variable that is true if the given nda::Array type has a Fortran memory layout.
const char get_op
Variable template that determines the BLAS matrix operation tag ('N','T','C') based on the given bool...