TRIQS/nda 1.3.0
Multi-dimensional array library for C++
|
#include "../basic_array.hpp"
#include "../basic_functions.hpp"
#include "../clef/make_lazy.hpp"
#include "../concepts.hpp"
#include "../exceptions.hpp"
#include "../lapack/getrf.hpp"
#include "../lapack/getri.hpp"
#include "../layout/policies.hpp"
#include "../matrix_functions.hpp"
#include "../mem/address_space.hpp"
#include "../mem/policies.hpp"
#include "../print.hpp"
#include "../traits.hpp"
#include <iostream>
#include <type_traits>
#include <utility>
Provides functions to compute the determinant and inverse of a matrix.
Definition in file det_and_inverse.hpp.
Go to the source code of this file.
Functions | |
template<typename... A> requires (nda::clef::is_any_lazy<A...>) | |
auto | nda::clef::determinant (A &&...__a) |
Lazy version of nda::determinant. | |
template<typename M > | |
auto | nda::determinant (M const &m) |
Compute the determinant of a square matrix/view. | |
template<typename M > requires (is_matrix_or_view_v<M>) | |
auto | nda::determinant_in_place (M &m) |
Compute the determinant of a square matrix/view. | |
template<Matrix M> requires (get_algebra<M> == 'M') | |
auto | nda::inverse (M const &m) |
Compute the inverse of an n-by-n matrix. | |
template<MemoryMatrix M> requires (get_algebra<M> == 'M' and mem::on_host<M>) | |
void | nda::inverse1_in_place (M &&m) |
Compute the inverse of a 1-by-1 matrix. | |
template<MemoryMatrix M> requires (get_algebra<M> == 'M' and mem::on_host<M>) | |
void | nda::inverse2_in_place (M &&m) |
Compute the inverse of a 2-by-2 matrix. | |
template<MemoryMatrix M> requires (get_algebra<M> == 'M' and mem::on_host<M>) | |
void | nda::inverse3_in_place (M &&m) |
Compute the inverse of a 3-by-3 matrix. | |
template<MemoryMatrix M> requires (get_algebra<M> == 'M') | |
void | nda::inverse_in_place (M &&m) |
Compute the inverse of an n-by-n matrix. | |
template<typename A > | |
bool | nda::is_matrix_diagonal (A const &a, bool print_error=false) |
Check if a given array/view is diagonal, i.e. if it is square (see nda::is_matrix_square) and all the the off-diagonal elements are zero. | |
template<typename A > | |
bool | nda::is_matrix_square (A const &a, bool print_error=false) |
Check if a given array/view is square, i.e. if the first dimension has the same extent as the second dimension. | |