akreon-linalg
Fixed-size linear algebra and numerical methods in C++26.
Loading...
Searching...
No Matches
linalg_ops.hpp File Reference
Include dependency graph for linalg_ops.hpp:
This graph shows which files directly or indirectly include this file:

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