TRIQS/nda 1.3.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
det_and_inverse.hpp File Reference
#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>

Detailed Description

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.