22namespace nda::linalg {
50 template <MemoryArray A, MemoryArray B>
54 EXPECTS(a.is_contiguous());
55 EXPECTS(b.is_contiguous());
59 auto constexpr algebra = []() {
66 using layout_pol =
typename A::layout_policy_t::contiguous_t;
71 auto res = return_t::zeros(
stdutil::join(a.shape(), b.shape()));
72 auto a_vec =
reshape(a, std::array{a.size()});
73 auto b_vec =
reshape(b, std::array{b.size()});
74 auto mat =
reshape(res, std::array{a.size(), b.size()});
Provides definitions and type traits involving the different memory address spaces supported by nda.
A generic multi-dimensional array.
Provides concepts for the nda library.
Provides various convenient aliases and helper functions for nda::basic_array and nda::basic_array_vi...
Provides a generic interface to the BLAS ger and geru routine.
auto reshape(A &&a, std::array< Int, R > const &new_shape)
Reshape an nda::basic_array or nda::basic_array_view.
constexpr char get_algebra
Constexpr variable that specifies the algebra of a type.
constexpr int get_rank
Constexpr variable that specifies the rank of an nda::Array or of a contiguous 1-dimensional range.
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 has_F_layout
Constexpr variable that is true if the given nda::Array type has a Fortran memory layout.
void ger(get_value_t< X > alpha, X const &x, Y const &y, M &&m)
Interface to the BLAS ger and geru routine.
heap_basic< mem::mallocator< AdrSp > > heap
Alias template of the nda::heap_basic policy using an nda::mem::mallocator.
constexpr std::array< T, R1+R2 > join(std::array< T, R1 > const &a1, std::array< T, R2 > const &a2)
Make a new std::array by joining two existing std::array objects.
Macros used in the nda library.
Defines various memory handling policies.
Provides type traits for the nda library.