Functions | |
template<typename U , typename V > | |
std::pair< std::vector< typename U::value_type >, std::array< std::size_t, 2 > > | outer (const U &u, const V &v) |
Compute the outer product of vectors u and v. More... | |
template<typename U , typename V > | |
std::array< typename U::value_type, 3 > | cross (const U &u, const V &v) |
std::pair< std::vector< double >, std::vector< double > > | eigh (const std::span< const double > &A, std::size_t n) |
std::vector< double > | solve (const std::experimental::mdspan< const double, std::experimental::dextents< std::size_t, 2 >> &A, const std::experimental::mdspan< const double, std::experimental::dextents< std::size_t, 2 >> &B) |
bool | is_singular (const std::experimental::mdspan< const double, std::experimental::dextents< std::size_t, 2 >> &A) |
std::vector< std::size_t > | transpose_lu (std::pair< std::vector< double >, std::array< std::size_t, 2 >> &A) |
template<typename U , typename V , typename W > | |
void | dot (const U &A, const V &B, W &&C) |
std::vector< double > | eye (std::size_t n) |
Mathematical functions
std::array<typename U::value_type, 3> basix::math::cross | ( | const U & | u, |
const V & | v | ||
) |
Compute the cross product u x v
u | The first vector. It must has size 3. |
v | The second vector. It must has size 3. |
u x v
. The type will be the same as u
. void basix::math::dot | ( | const U & | A, |
const V & | B, | ||
W && | C | ||
) |
Compute C = A * B
[in] | A | Input matrix |
[in] | B | Input matrix |
[out] | C | Output matrix. Must be sized correctly before calling this function. |
std::pair< std::vector< double >, std::vector< double > > basix::math::eigh | ( | const std::span< const double > & | A, |
std::size_t | n | ||
) |
Compute the eigenvalues and eigenvectors of a square Hermitian matrix A
[in] | A | Input matrix, row-major storage |
[in] | n | Number of rows |
A
must be symmetric std::vector< double > basix::math::eye | ( | std::size_t | n | ) |
Build an identity matrix
[in] | n | The number of rows/columns |
bool basix::math::is_singular | ( | const std::experimental::mdspan< const double, std::experimental::dextents< std::size_t, 2 >> & | A | ) |
Check if A is a singular matrix
[in] | A | The matrix |
std::pair<std::vector<typename U::value_type>, std::array<std::size_t, 2> > basix::math::outer | ( | const U & | u, |
const V & | v | ||
) |
Compute the outer product of vectors u and v.
u | The first vector |
v | The second vector |
u
. std::vector< double > basix::math::solve | ( | const std::experimental::mdspan< const double, std::experimental::dextents< std::size_t, 2 >> & | A, |
const std::experimental::mdspan< const double, std::experimental::dextents< std::size_t, 2 >> & | B | ||
) |
Solve A X = B
[in] | A | The matrix |
[in] | B | Right-hand side matrix/vector |
std::vector< std::size_t > basix::math::transpose_lu | ( | std::pair< std::vector< double >, std::array< std::size_t, 2 >> & | A | ) |
Compute the LU decomposition of the transpose of a square matrix A
[in,out] | A | The matrix |
basix::precompute::prepare_permutation
)