|
akreon-linalg
Fixed-size linear algebra and numerical methods in C++26.
|
#include "operator/inner_product.hpp"#include "operator/operator_traits.hpp"#include "vector/vector.hpp"Go to the source code of this file.
Namespaces | |
| namespace | linalg |
Functions | |
| template<VectorContainer Vec> | |
| constexpr auto | linalg::add (const Vec &A, const Vec &B) |
| add two vectors together to get a third | |
| template<VectorContainer Vec> | |
| constexpr auto | linalg::operator+ (const Vec &A, const Vec &B) |
| operator overload for add | |
| template<MatrixContainer Mat> | |
| constexpr auto | linalg::add (const Mat &A, const Mat &B) |
| Add two shape-compatible matrices element by element. | |
| template<MatrixContainer Mat> | |
| constexpr auto | linalg::operator+ (const Mat &A, const Mat &B) |
Matrix addition operator delegating to add. | |
| template<VectorContainer Vec, Field Alpha> | |
| constexpr auto | linalg::scalar_multiplication (const Alpha &alpha, const Vec &A) |
| multiply a vector A with a scalar alpha | |
| template<VectorContainer Vec, Field Alpha> | |
| constexpr auto | linalg::operator* (const Alpha &alpha, const Vec &A) |
| operator overload for scalar multiplication | |
| template<MatrixContainer Mat, Field Alpha> | |
| constexpr auto | linalg::scalar_multiplication (const Alpha &alpha, const Mat &A) |
| Multiply every matrix entry by a field scalar. | |
| template<MatrixContainer Mat, Field Alpha> | |
| constexpr auto | linalg::operator* (const Alpha &alpha, const Mat &A) |
| Left scalar-matrix multiplication operator. | |
| template<VectorContainer Vec> | |
| constexpr auto | linalg::operator- (const Vec &A, const Vec &B) |
| operator overload for subtraction | |
| template<MatrixContainer Mat> | |
| constexpr auto | linalg::operator- (const Mat &A, const Mat &B) |
Subtract two matrices as A + (-1) * B. | |
| template<FieldVector Vec> | |
| constexpr auto | linalg::transpose (const Vec &x) |
| tranpose of a vector | |
| template<ComplexVector Vec> | |
| constexpr auto | linalg::conjugate (const Vec &x) |
| conjugate a vector | |
| template<FieldVector Vec> requires (vector_dim_v<Vec> == 3) | |
| constexpr auto | linalg::cross (const Vec &x, const Vec &y) |
| cross product between x x y = Z | |
| template<FieldVector Vec> requires (vector_dim_v<Vec> > 0) | |
| constexpr bool | linalg::all_zero (const Vec &x) |
| simple function that checks if a vector contains only zeros (hence spans nullspace) | |
| template<std::size_t idx, FieldVector Vec> requires (vector_dim_v<Vec> > 0 && idx < vector_dim_v<Vec>) | |
| constexpr auto | linalg::splice (const Vec &x) |
| splice operator | |
| template<MatrixContainer MatA, MatrixContainer MatB> requires (MatMulCompatible<MatA, MatB>) | |
| constexpr auto | linalg::outer_product (const MatA &A, const MatB &B) |
| Multiply matrix-shaped column and row operands as an outer product. | |
| template<MatrixContainer Mat> | |
| constexpr auto | linalg::transpose (const Mat &A) |
| transpose of a matrix | |
| template<SquareMatrix Mat> requires (mat_rows_v<Mat> > 0) | |
| constexpr auto | linalg::trace (const Mat &A) |
| trace of a matrix | |
| template<MatrixContainer Mat> requires (Complex<matrix_scalar_t<Mat>>) | |
| constexpr auto | linalg::conjugate_transpose (const Mat &A) |
| conjugate transpose of a matrix | |
| template<MatrixContainer MatA, MatrixContainer MatB> requires (MatMulCompatible<MatA, MatB>) | |
| constexpr auto | linalg::operator* (const MatA &A, const MatB &B) |
| Multiply compatible matrices with the standard row-column product. | |
| template<MatrixContainer Mat, VectorContainer Vec> requires (MatVecCompatible<Mat, Vec>) | |
| constexpr auto | linalg::operator* (const Mat &A, const Vec &X) |
| Apply a compatible matrix to a vector. | |
| template<VectorContainer Vec> requires (vector_dim_v<Vec> > 0) | |
| constexpr auto | linalg::min (const Vec &x) |
| min element | |
| template<VectorContainer Vec> requires (vector_dim_v<Vec> > 0) | |
| constexpr auto | linalg::max (const Vec &x) |
| max element | |
| template<VectorContainer Vec> requires (vector_dim_v<Vec> > 0) | |
| constexpr std::size_t | linalg::arg_min (const Vec &x) |
| min element | |
| template<VectorContainer Vec> requires (vector_dim_v<Vec> > 0) | |
| constexpr std::size_t | linalg::arg_max (const Vec &x) |
| max element | |