55 template <MemoryArray A>
60 requires(!std::is_same_v<A, std::remove_cvref_t<A>>)
68 return has_F_layout<
decltype(std::get<0>(std::declval<A>().a))>;
70 return std::remove_cvref_t<A>::is_stride_order_Fortran();
78 return has_C_layout<
decltype(std::get<0>(std::declval<A>().a))>;
80 return std::remove_cvref_t<A>::is_stride_order_C();
90 template <
bool conj,
bool transpose>
92 static_assert(!(
conj and not
transpose),
"Error in nda::blas::get_op: Cannot use conjugate operation alone in blas operations");
108 template <MemoryMatrix A>
120 template <MemoryMatrix A>
Check if a given type satisfies the memory array concept.
Provides concepts for the nda library.
auto transpose(A &&a)
Transpose the memory layout of an nda::MemoryArray or an nda::expr_call.
decltype(auto) conj(A &&a)
Function conj for nda::ArrayOrScalar types (lazy and coefficient-wise for nda::Array types with a com...
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.
std::complex< double > dcomplex
Alias for std::complex<double> type.
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 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...
Provides lazy function calls on arrays/views.
Provides some custom implementations of standard mathematical functions used for lazy,...