|
akreon-linalg
Fixed-size linear algebra and numerical methods in C++26.
|
Classes | |
| struct | Cholesky |
| Factors a real positive-definite matrix as A = G G^T. More... | |
| struct | coordinate_map |
| Customization point mapping space elements to finite coordinates. More... | |
| struct | coordinate_map< CoordinateSpace< T, Dim > > |
Identity coordinate map for CoordinateSpace. More... | |
| struct | coordinate_map< Matrix< T, Rows, Cols > > |
| Identity coordinate map for one-row or one-column matrices. More... | |
| struct | coordinate_map< MatrixSpace< T, Rows, Cols > > |
Row-major coordinate isomorphism for MatrixSpace. More... | |
| struct | coordinate_map< SymmetricMatrix< Mat > > |
| struct | coordinate_map< SymmetricMatrixSpace< T, Dim > > |
| Symmetric half-vectorization coordinate isomorphism. More... | |
| struct | CoordinateSpace |
Canonical Dim-dimensional coordinate space over field T. More... | |
| struct | EigenDecomposition |
| Computes eigenvalues and eigenvectors satisfying A V = V diag(lambda). More... | |
| struct | Endomorphism |
| Endomorphism operator CRTP base. More... | |
| struct | Fro |
| compute the frobenius norm of a matrix More... | |
| struct | Hessenberg |
| Reduces A to upper Hessenberg form H = U^* A U. More... | |
| struct | Hessian |
| Hessian as a linear operator. More... | |
| struct | HouseholderVector |
| Compact representation of a real or complex Householder reflector. More... | |
| struct | inner_product_traits |
| Customization point for inner-product associated types. More... | |
| struct | inner_product_traits< StandardInnerProduct< Vec > > |
Associated-type registration for StandardInnerProduct. More... | |
| struct | is_symmetric_matrix_space |
| symmetric matrix space type trait More... | |
| struct | is_symmetric_matrix_space< SymmetricMatrix< Mat > > |
| symmetric matrix space type trait More... | |
| struct | L1 |
| forward declaration for L1 norm More... | |
| struct | L2 |
| forward declaration for L2 norm More... | |
| struct | LDL |
| Factors a real symmetric matrix as A = L D L^T without pivoting. More... | |
| struct | Linf |
| forward declaration for Linf norm More... | |
| struct | mat_traits |
| Customization point for compile-time matrix metadata. More... | |
| struct | mat_traits< Cholesky< Mat > > |
| mat type traits definition for Cholesky More... | |
| struct | mat_traits< Endomorphism< Mat, Derived > > |
| mat type traits definition for linear operator More... | |
| struct | mat_traits< Hessenberg< Mat > > |
| mat type traits definition for hessenberg matrices More... | |
| struct | mat_traits< Hessian< Mat, Type > > |
| mat type traits definition for hessian matrices More... | |
| struct | mat_traits< LDL< Mat > > |
| mat type traits definition for LDL More... | |
| struct | mat_traits< Matrix< T, Rows, Cols > > |
Traits for the Akreon Linalg's owning Matrix container. More... | |
| struct | mat_traits< QuadraticRep< Mat, Circ > > |
| mat type traits definition for P(x) More... | |
| struct | mat_traits< SymmetricMatrix< Mat > > |
| mat type traits definition for symmetric matrices More... | |
| struct | mat_traits< SymmetricOperator< Mat, Derived > > |
| mat type traits definition for symmetric operator More... | |
| struct | Matrix |
| Owning, fixed-size, row-major matrix container over a scalar field. More... | |
| struct | MatrixInverse |
| Matrix inverse via QR. More... | |
| struct | MatrixPencil |
| struct | MatrixSpace |
Space of all Rows x Cols matrices over field T. More... | |
| struct | MatrixSqrt |
| Matrix sqrt (X^{1/2}) More... | |
| struct | norm_traits |
| declaring norm traits More... | |
| struct | norm_traits< Fro< Mat > > |
| struct | norm_traits< L1< Vec > > |
| declaring norm type traits - L1 More... | |
| struct | norm_traits< L2< Vec > > |
| declaring norm type traits - L2 More... | |
| struct | norm_traits< Linf< Vec > > |
| declaring norm type traits - Linf More... | |
| struct | operator_traits |
| struct | operator_traits< Matrix< T, Rows, Cols > > |
| struct | operator_traits< Operator > |
| struct | QR |
| Factors A = Q R using Householder reflections. More... | |
| struct | QuadraticRep |
| forward declaration of P(x) / P(x^{-1}) More... | |
| struct | scalar_traits |
| Customization point for scalar metadata. More... | |
| struct | scalar_traits< std::complex< T > > |
Register std::complex<T> over a floating-point real component. More... | |
| struct | scalar_traits< T > |
| Register a standard floating-point type as a real scalar. More... | |
| struct | space_traits |
| Customization point for finite-dimensional space metadata. More... | |
| struct | space_traits< ColVector< T, Dim > > |
| Space registration for a matrix-shaped column vector. More... | |
| struct | space_traits< CoordinateSpace< T, Dim > > |
Space metadata for CoordinateSpace. More... | |
| struct | space_traits< Matrix< T, 1, 1 > > |
Space registration for a scalar-shaped 1 x 1 matrix. More... | |
| struct | space_traits< Matrix< T, Rows, Cols > > |
| Space registration for a general rectangular matrix container. More... | |
| struct | space_traits< MatrixSpace< T, Rows, Cols > > |
| Space metadata for the full rectangular matrix space. More... | |
| struct | space_traits< RowVector< T, Dim > > |
| Space registration for a matrix-shaped row vector. More... | |
| struct | space_traits< SymmetricMatrix< Mat > > |
| type traits definition for symmetric matrices (subspace of R^n) More... | |
| struct | space_traits< SymmetricMatrixSpace< T, Dim > > |
| Space metadata for real symmetric matrices. More... | |
| struct | StandardInnerProduct |
| Canonical inner product on a fixed-size vector over a scalar field. More... | |
| struct | SVD |
| Computes A = U Sigma V^* from the eigendecomposition of A^* A. More... | |
| struct | SymmetricMatrix |
| forward declaration for a matrix More... | |
| struct | SymmetricMatrixInverse |
| Symmetric matrix inverse via LDL^T. More... | |
| struct | SymmetricMatrixSpace |
Space of real symmetric Dim x Dim matrices. More... | |
| struct | SymmetricOperator |
| forward declaration for symmetric operator More... | |
| struct | Vector |
| Owning, fixed-size vector container. More... | |
| struct | vector_scalar |
| Recursively obtain the non-vector scalar underlying a type. More... | |
| struct | vector_scalar< Vector< T, Dim > > |
Recursively unwrap one Vector layer. More... | |
| struct | vector_traits |
| Customization point for fixed-size vector metadata. More... | |
| struct | vector_traits< Cholesky< Mat > > |
| vec type traits for cholesky matrices More... | |
| struct | vector_traits< Endomorphism< Mat, Derived > > |
| vec type traits for linear operator More... | |
| struct | vector_traits< Hessenberg< Mat > > |
| vec type traits for hessenberg matrices More... | |
| struct | vector_traits< Hessian< Mat, Type > > |
| vec type traits for hessian matrices More... | |
| struct | vector_traits< LDL< Mat > > |
| vec type traits for LDL matrices More... | |
| struct | vector_traits< QuadraticRep< Mat, Circ > > |
| vec type traits for quadratic rep matrices More... | |
| struct | vector_traits< SymmetricMatrix< Mat > > |
| vec type traits for symmetric matrices More... | |
| struct | vector_traits< SymmetricOperator< Mat, Derived > > |
| vec type traits for symmetric operator More... | |
| struct | vector_traits< Vector< T, Dim > > |
Traits and constexpr construction helpers for Vector<T, Dim>. More... | |
Concepts | |
| concept | MatrixContainer |
| Trait-registered, fixed-shape matrix over a supported scalar field. | |
| concept | SquareMatrix |
| Matrix container whose compile-time row and column counts are equal. | |
| concept | RealMatrix |
| Matrix container with a real scalar field. | |
| concept | ComplexMatrix |
| Matrix container with a complex scalar field. | |
| concept | MatVecCompatible |
| Compile-time compatibility contract for matrix-vector multiplication. | |
| concept | MatMulCompatible |
| Compile-time compatibility contract for matrix multiplication. | |
| concept | NormFunction |
| concept for norm like | |
| concept | InnerProduct |
| Callable contract for a trait-registered inner-product operation. | |
| concept | LinearOperator |
| concept | EndomorphicOperator |
| concept | Scalar |
| Type registered with the Akreon Linalg scalar trait system. | |
| concept | Field |
| Registered scalar supporting the Akreon Linalg's field arithmetic interface. | |
| concept | Real |
Field classified by scalar_traits as real. | |
| concept | Complex |
Field classified by scalar_traits as complex. | |
| concept | Space |
| Trait-registered finite-dimensional mathematical space. | |
| concept | CoordinatizedSpace |
| Finite-dimensional space with explicit element-coordinate conversion. | |
| concept | VectorSpace |
| Legacy vector-space expression contract for a registered space. | |
| concept | RnSpace |
| Real, coordinatized space satisfying the vector-space expressions. | |
| concept | VectorContainer |
| Trait-registered fixed-size vector container. | |
| concept | FieldVector |
Registered vector whose element type satisfies Field. | |
| concept | RealVector |
| Field vector over a scalar classified as real. | |
| concept | ComplexVector |
| Field vector over a scalar classified as complex. | |
| concept | CompatibleVectors |
| Pair of vectors with exactly matching element types and dimensions. | |
Typedefs | |
| template<typename T , std::size_t Dim> | |
| using | ColVector = Matrix< T, Dim, 1 > |
Matrix-shaped representation of a Dim-element column vector. | |
| template<typename T , std::size_t Dim> | |
| using | RowVector = Matrix< T, 1, Dim > |
Matrix-shaped representation of a Dim-element row vector. | |
| template<class Mat > | |
| using | matrix_scalar_t = typename mat_traits< remove_cvref_t< Mat > >::value_type |
| Registered matrix scalar type after cv/ref normalization. | |
| template<class Norm > | |
| using | norm_traits_t = norm_traits< remove_cvref_t< Norm > > |
| normalized norm traits | |
| template<class Norm > | |
| using | norm_domain_t = typename norm_traits_t< Norm >::domain_type |
| template<class Norm > | |
| using | norm_scalar_t = typename norm_traits_t< Norm >::scalar_type |
| template<class Norm > | |
| using | norm_codomain_t = typename norm_traits_t< Norm >::codomain_type |
| template<class Product > | |
| using | inner_product_traits_t = inner_product_traits< remove_cvref_t< Product > > |
| Normalized trait specialization for an inner-product type. | |
| template<class Product > | |
| using | inner_product_domain_t = typename inner_product_traits_t< Product >::domain_type |
| Registered vector domain after product cv/ref normalization. | |
| template<class Product > | |
| using | inner_product_scalar_t = typename inner_product_traits_t< Product >::scalar_type |
| Registered scalar field associated with the product domain. | |
| template<class Product > | |
| using | inner_product_codomain_t = typename inner_product_traits_t< Product >::codomain_type |
| Registered result type of the inner product. | |
| template<class Operator > | |
| using | operator_traits_t = operator_traits< remove_cvref_t< Operator > > |
| template<class Operator > | |
| using | operator_scalar_t = typename operator_traits_t< Operator >::scalar_type |
| template<class Operator > | |
| using | operator_domain_t = typename operator_traits_t< Operator >::domain_type |
| template<class Operator > | |
| using | operator_codomain_t = typename operator_traits_t< Operator >::codomain_type |
| template<class Operator > | |
| using | operator_matrix_t = typename operator_traits_t< Operator >::matrix_type |
| template<typename T > | |
| using | remove_cvref_t = std::remove_cvref_t< T > |
| Remove top-level const, volatile, and reference qualification. | |
| template<typename T > | |
| using | scalar_traits_t = scalar_traits< remove_cvref_t< T > > |
| Scalar traits selected after cv/ref normalization. | |
| template<typename T > | |
| using | scalar_type_t = typename scalar_traits_t< T >::scalar_type |
Normalized scalar representation registered for T. | |
| template<typename T > | |
| using | real_type_t = typename scalar_traits_t< T >::real_type |
Associated real component type registered for T. | |
| template<class Space > | |
| using | coordinate_map_t = coordinate_map< remove_cvref_t< Space > > |
| Coordinate-map specialization selected after cv/ref normalization. | |
| template<class Space > | |
| using | space_type_t = typename space_traits< remove_cvref_t< Space > >::value_type |
| Legacy scalar-field alias after cv/ref normalization. | |
| template<class Space > | |
| using | space_point_t = typename space_traits< remove_cvref_t< Space > >::Point |
| Legacy point/domain alias after cv/ref normalization. | |
| template<class Space > | |
| using | space_scalar_t = typename space_traits< remove_cvref_t< Space > >::scalar_type |
| Scalar field registered for a space. | |
| template<class Space > | |
| using | space_element_t = typename space_traits< remove_cvref_t< Space > >::element_type |
| Canonical element representation registered for a space. | |
| template<class Space > | |
| using | space_coordinate_t = typename space_traits< remove_cvref_t< Space > >::coordinate_type |
| Finite coordinate representation registered for a space. | |
| template<class Vec > | |
| using | vector_traits_t = vector_traits< remove_cvref_t< Vec > > |
| Vector traits selected after cv/ref normalization. | |
| template<class Vec > | |
| using | vector_element_t = typename vector_traits_t< Vec >::element_type |
| Registered vector coordinate type. | |
| template<class Vec > | |
| using | vector_scalar_t = typename vector_scalar< remove_cvref_t< Vec > >::type |
| Fully unwrapped scalar type underlying a possibly nested vector. | |
Common scalar and matrix aliases | |
These aliases shorten frequently used real and complex fixed-size types.
| |
| template<std::size_t Dim> | |
| using | Vectord = Vector< double, Dim > |
| template<std::size_t Dim> | |
| using | Vectorf = Vector< float, Dim > |
| template<std::size_t Dim> | |
| using | Vectorcd = Vector< std::complex< double >, Dim > |
| template<std::size_t Dim> | |
| using | Vectorcf = Vector< std::complex< float >, Dim > |
| template<std::size_t Rows, std::size_t Cols> | |
| using | Matrixd = Matrix< double, Rows, Cols > |
| template<std::size_t Dim> | |
| using | ColVectord = ColVector< double, Dim > |
| template<std::size_t Dim> | |
| using | RowVectord = RowVector< double, Dim > |
| template<std::size_t Rows, std::size_t Cols> | |
| using | Matrixf = Matrix< float, Rows, Cols > |
| template<std::size_t Dim> | |
| using | ColVectorf = ColVector< float, Dim > |
| template<std::size_t Dim> | |
| using | RowVectorf = RowVector< float, Dim > |
| template<std::size_t Rows, std::size_t Cols> | |
| using | Matrixcd = Matrix< std::complex< double >, Rows, Cols > |
| template<std::size_t Dim> | |
| using | ColVectorcd = ColVector< std::complex< double >, Dim > |
| template<std::size_t Dim> | |
| using | RowVectorcd = RowVector< std::complex< double >, Dim > |
| template<std::size_t Rows, std::size_t Cols> | |
| using | Matrixcf = Matrix< std::complex< float >, Rows, Cols > |
| template<std::size_t Dim> | |
| using | ColVectorcf = ColVector< std::complex< float >, Dim > |
| template<std::size_t Dim> | |
| using | RowVectorcf = RowVector< std::complex< float >, Dim > |
Enumerations | |
| enum struct | NumericalEvent : uint8_t { NONE = 0 , RANK_DEFICIENCY , INDEFINITE_FACTORIZATION , NEAR_SINGULAR_TRIANGULAR_SOLVE , NUMERICAL_SAFEGUARD , DB_MAX_ITERS_REACHED , FACTORIZATION_FAILED , EVD_FAILED } |
| NumericalEvent. More... | |
| enum struct | SymmetricOperatorType { INV = 0 , IND , PSD , PD , NSD , ND } |
| simple enum to define symmetric matrix types INV = Invalid IND = Indefinite PSD = Positive Semidefinite PD = Positive Definite NSD = Negative Semidefinite ND = Negative Definite More... | |
| enum struct | DifferentialType { PUSHFORWARD , PULLBACK } |
| differential type More... | |
Functions | |
| template<VectorContainer Vec> | |
| constexpr auto | add (const Vec &A, const Vec &B) |
| add two vectors together to get a third | |
| template<VectorContainer Vec> | |
| constexpr auto | operator+ (const Vec &A, const Vec &B) |
| operator overload for add | |
| template<MatrixContainer Mat> | |
| constexpr auto | add (const Mat &A, const Mat &B) |
| Add two shape-compatible matrices element by element. | |
| template<MatrixContainer Mat> | |
| constexpr auto | operator+ (const Mat &A, const Mat &B) |
Matrix addition operator delegating to add. | |
| template<VectorContainer Vec, Field Alpha> | |
| constexpr auto | scalar_multiplication (const Alpha &alpha, const Vec &A) |
| multiply a vector A with a scalar alpha | |
| template<VectorContainer Vec, Field Alpha> | |
| constexpr auto | operator* (const Alpha &alpha, const Vec &A) |
| operator overload for scalar multiplication | |
| template<MatrixContainer Mat, Field Alpha> | |
| constexpr auto | scalar_multiplication (const Alpha &alpha, const Mat &A) |
| Multiply every matrix entry by a field scalar. | |
| template<MatrixContainer Mat, Field Alpha> | |
| constexpr auto | operator* (const Alpha &alpha, const Mat &A) |
| Left scalar-matrix multiplication operator. | |
| template<VectorContainer Vec> | |
| constexpr auto | operator- (const Vec &A, const Vec &B) |
| operator overload for subtraction | |
| template<MatrixContainer Mat> | |
| constexpr auto | operator- (const Mat &A, const Mat &B) |
Subtract two matrices as A + (-1) * B. | |
| template<FieldVector Vec> | |
| constexpr auto | transpose (const Vec &x) |
| tranpose of a vector | |
| template<ComplexVector Vec> | |
| constexpr auto | conjugate (const Vec &x) |
| conjugate a vector | |
| template<FieldVector Vec> requires (vector_dim_v<Vec> == 3) | |
| constexpr auto | 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 | 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 | splice (const Vec &x) |
| splice operator | |
| template<MatrixContainer MatA, MatrixContainer MatB> requires (MatMulCompatible<MatA, MatB>) | |
| constexpr auto | outer_product (const MatA &A, const MatB &B) |
| Multiply matrix-shaped column and row operands as an outer product. | |
| template<MatrixContainer Mat> | |
| constexpr auto | transpose (const Mat &A) |
| transpose of a matrix | |
| template<SquareMatrix Mat> requires (mat_rows_v<Mat> > 0) | |
| constexpr auto | trace (const Mat &A) |
| trace of a matrix | |
| template<MatrixContainer Mat> requires (Complex<matrix_scalar_t<Mat>>) | |
| constexpr auto | conjugate_transpose (const Mat &A) |
| conjugate transpose of a matrix | |
| template<MatrixContainer MatA, MatrixContainer MatB> requires (MatMulCompatible<MatA, MatB>) | |
| constexpr auto | 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 | 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 | min (const Vec &x) |
| min element | |
| template<VectorContainer Vec> requires (vector_dim_v<Vec> > 0) | |
| constexpr auto | max (const Vec &x) |
| max element | |
| template<VectorContainer Vec> requires (vector_dim_v<Vec> > 0) | |
| constexpr std::size_t | arg_min (const Vec &x) |
| min element | |
| template<VectorContainer Vec> requires (vector_dim_v<Vec> > 0) | |
| constexpr std::size_t | arg_max (const Vec &x) |
| max element | |
| template<std::size_t Start, std::size_t End, VectorContainer Vec> requires (End - Start < vector_dim_v<Vec> && Start < vector_dim_v<Vec>) | |
| constexpr auto | get_elements (const Vec &x) |
Copy the half-open vector slice [Start, End). | |
| template<Field T, std::size_t N> | |
| constexpr Matrix< T, N, N > | make_identity () |
| create an identity matrix of size N type T | |
| template<Field T, std::size_t Rows, std::size_t Cols> | |
| constexpr Matrix< T, Rows, Cols > | make_zeros () |
| create a matrix filled with zeros of size Rows x Cols of type T | |
| template<VectorContainer Vec> | |
| constexpr auto | as_col_vector (const Vec &X) |
| express the vector X as a column vector (N x 1) | |
| template<VectorContainer Vec> | |
| constexpr auto | as_row_vector (const Vec &X) |
| express the vector X as a row vector (1 x N) | |
| template<MatrixContainer Mat> | |
| constexpr auto | as_complex_matrix (const Mat &A) |
| express matrix as complex one | |
| template<Field T, std::size_t N> | |
| constexpr auto | as_vector (const ColVector< T, N > &A) |
| express col vector as vector | |
| template<Field T, std::size_t N> | |
| constexpr auto | as_vector (const RowVector< T, N > &A) |
| express row vector as vector | |
| template<MatrixContainer Mat> | |
| constexpr auto | get_col (const Mat &A, std::size_t idx) |
| get the column of matrix A based on given index | |
| template<MatrixContainer Mat> | |
| constexpr auto | get_row (const Mat &A, std::size_t idx) |
| get the row of matrix A based on given index | |
| template<MatrixContainer Mat> | |
| constexpr auto | get_diag (const Mat &A) |
| get the diagonal of a matrix A | |
| template<Field T, std::size_t N> | |
| constexpr auto | make_diag (const Vector< T, N > &X) |
| make a diagonal matrix from a vector | |
| template<std::size_t Start, std::size_t End, MatrixContainer Mat> requires (End - Start <= mat_rows_v<Mat> && Start < mat_rows_v<Mat>) | |
| constexpr auto | get_n_rows (const Mat &A) |
Copy the half-open matrix row range [Start, End). | |
| template<std::size_t Start, std::size_t End, MatrixContainer Mat> requires (End - Start <= mat_cols_v<Mat> && Start < mat_cols_v<Mat>) | |
| constexpr auto | get_n_cols (const Mat &A) |
Copy the half-open matrix column range [Start, End). | |
| template<std::size_t StartRow, std::size_t EndRow, std::size_t StartCol, std::size_t EndCol, MatrixContainer Mat> requires (EndRow - StartRow <= mat_rows_v<Mat> && StartRow < mat_rows_v<Mat> && EndCol - StartCol <= mat_cols_v<Mat> && StartCol < mat_cols_v<Mat>) | |
| constexpr auto | get_block (const Mat &A) |
| Copy a compile-time rectangular matrix block. | |
| template<std::size_t StartRow, std::size_t EndRow, std::size_t StartCol, std::size_t EndCol, MatrixContainer Mat> requires (EndRow - StartRow <= mat_rows_v<Mat> && StartRow < mat_rows_v<Mat> && EndCol - StartCol <= mat_cols_v<Mat> && StartCol < mat_cols_v<Mat>) | |
| constexpr auto | set_block (Mat A, const Matrix< matrix_scalar_t< Mat >, EndRow - StartRow, EndCol - StartCol > &B) |
| Return a matrix copy with one compile-time block replaced. | |
| template<MatrixContainer Mat> | |
| constexpr auto | get_upper_right_triangular_matrix (const Mat &A) |
| get upper right triangular matrix from A | |
| template<MatrixContainer Mat> | |
| constexpr auto | get_lower_left_triangular_matrix (const Mat &A) |
| get lower left triangular matrix from A | |
| template<VectorContainer Vec> | |
| constexpr auto | euclidean_distance (const Vec &X, const Vec &Y) |
| Compute the euclidean distance between two vectors (L2 norm of delta) | |
| template<VectorContainer Vec> | |
| constexpr auto | manhattan_distance (const Vec &X, const Vec &Y) |
| Compute the manhattan distance between two vectors (L1 norm of delta) | |
| template<FieldVector Vec> | |
| constexpr bool | all_equal (const Vec &X, const Vec &Y, real_type_t< vector_element_t< Vec > > tol=1e-10) |
| checks if two vectors are equivalent to a given tolerance (different than == operator on vector which must be exactly equal | |
| template<Field T, std::size_t Rows, std::size_t Cols> | |
| constexpr bool | all_equal (const Matrix< T, Rows, Cols > &A, const Matrix< T, Rows, Cols > &B, real_type_t< T > tol=1e-10) |
| checks if two given matrix are equivalent | |
| template<MatrixContainer MatA, MatrixContainer MatB> requires (std::same_as<matrix_scalar_t<MatA>, matrix_scalar_t<MatB>> && mat_rows_v<MatA> == mat_cols_v<MatB> && mat_cols_v<MatA> == mat_rows_v<MatB>) | |
| constexpr bool | rows_equal_cols (const MatA &A, const MatB &B) |
| checks if the row space of one matrix is equivalent to the column space of another matrix | |
| template<std::size_t N, FieldVector Vec> requires (vector_dim_v<Vec> == N * (N + 1) / 2) | |
| constexpr auto | make_smat (const Vec &L) |
| make symmetric matrix | |
| template<SquareMatrix Mat> | |
| constexpr auto | get_lower_triangle_with_diag (const Mat &A) |
| get lower triangle with diag | |
| template<SquareMatrix Mat> | |
| constexpr auto | get_svec (const Mat &A) |
| get svec encoding of a symmetric matrix | |
| template<SquareMatrix Mat> | |
| constexpr auto | make_svec (const Mat &A) |
Compatibility spelling for get_svec(A). | |
| template<SquareMatrix Mat> | |
| constexpr auto | symmetric_part (const Mat &A) |
| symmetric part of a square matrix | |
| template<SquareMatrix Mat> | |
| constexpr auto | get_lower_triangle (const Mat &A) |
| get lower triangle | |
| template<SquareMatrix Mat, VectorContainer Vec> requires (std::same_as<matrix_scalar_t<Mat>, vector_element_t<Vec>>) | |
| constexpr auto | make_unit_lower_triangle (const Vec &x) |
| Construct a unit lower-triangular matrix from strict-lower entries. | |
| template<SquareMatrix Mat, VectorContainer Vec> requires (std::same_as<matrix_scalar_t<Mat>, vector_element_t<Vec>>) | |
| constexpr auto | make_lower_triangle (const Vec &x) |
| Construct a lower-triangular matrix including its diagonal. | |
| template<Field T, std::size_t Cols, typename... Rows> | |
| Matrix (Vector< T, Cols >, Rows...) -> Matrix< T, 1+sizeof...(Rows), Cols > | |
| Deduce matrix scalar type and shape from one or more row vectors. | |
| template<Field T, std::size_t Dim> | |
| constexpr auto | as_row_matrix (const Vector< T, Dim > &vector) |
Represent a vector as a 1 x Dim matrix. | |
| template<Field T, std::size_t Dim> | |
| constexpr auto | as_col_matrix (const Vector< T, Dim > &vector) |
Represent a vector as a Dim x 1 matrix. | |
| template<Field T, std::size_t Rows, std::size_t Cols> requires (Rows == 1 || Cols == 1) | |
| constexpr auto | as_vector (const Matrix< T, Rows, Cols > &matrix) |
| Convert a one-row or one-column matrix to a vector. | |
| constexpr bool | is_fatal_event (NumericalEvent event) |
| is_fatal_event | |
| template<FieldVector Vec> | |
| constexpr auto | inner_product (const Vec &lhs, const Vec &rhs) |
| Evaluate the canonical inner product for two field vectors. | |
| template<MatrixContainer Mat> | |
| constexpr auto | apply (const Mat &matrix, const operator_domain_t< Mat > &vector) -> operator_codomain_t< Mat > |
| template<class Space > | |
| constexpr auto | coordinates (const space_element_t< Space > &element) |
| Convert a registered space element to its coordinate representation. | |
| template<class Space > | |
| constexpr auto | from_coordinates (const space_coordinate_t< Space > &coordinate) |
| Reconstruct a registered space element from its coordinates. | |
| template<VectorContainer Vec> requires (Complex<vector_element_t<Vec>>) | |
| constexpr auto | make_group_permutation (const Vec &D, real_type_t< vector_element_t< Vec > > tol=1e-10) |
| Group approximately equal eigenvalues into contiguous index runs. | |
| template<std::size_t N> | |
| constexpr auto | invert_permutation (const Vector< std::size_t, N > &p) |
| Invert an index permutation. | |
| template<MatrixContainer Mat> | |
| constexpr auto | permute_ptjp (const Mat &J, const Vector< std::size_t, mat_rows_v< Mat > > &p) |
| Reorder matrix rows and columns by the same permutation. | |
| template<MatrixContainer Mat> | |
| constexpr auto | unpermute_papt (const Mat &A, const Vector< std::size_t, mat_rows_v< Mat > > &p) |
| Scatter matrix entries through a row-and-column permutation. | |
| template<SquareMatrix Mat> | |
| constexpr auto | matrix_exp (const Mat &A) |
| Compute exp(A) using its eigenvector and generalized-eigenvector basis. | |
| template<typename T , std::size_t N> | |
| constexpr auto | array_to_tuple (const std::array< T, N > &x) |
| Copy a fixed-size array into a tuple of the same length. | |
| template<Field T> | |
| constexpr bool | is_real (const std::complex< T > &z, real_type_t< T > tol=1e-10) |
| Check whether a complex value's imaginary component is below a bound. | |
| template<Real T> | |
| constexpr std::optional< T > | constexpr_div (T num, T den) |
| Divide two real scalars with an explicit zero-denominator result. | |
| template<Real T> | |
| constexpr T | constexpr_div_safe (T num, T den, T fallback=T(0)) |
| Divide two real scalars, returning a fallback for a zero denominator. | |
| template<Real T> | |
| constexpr T | constexpr_pow (T x, std::size_t power) |
| Raise a real scalar to a nonnegative integral power. | |
| template<Real T> | |
| constexpr std::optional< T > | constexpr_sqrt (T x, T g=1e-10, T tol=1e-10) |
| Approximate a nonnegative square root with Newton iteration. | |
| template<Real T> | |
| constexpr T | constexpr_sqrt_safe (T x, T floor=T(0), T g=1e-10, T tol=1e-10) |
| Return a scalar square root with a sanitized fallback radicand. | |
| template<Real T> | |
| constexpr T | constexpr_abs (T x) |
| Compute real absolute value or complex magnitude. | |
| template<Complex T> | |
| constexpr auto | constexpr_abs (const T &x) |
| template<Real T> | |
| constexpr std::optional< T > | constexpr_nrt (T x, std::size_t root, T g=1e-10, T tol=1e-10) |
| Approximate a real nth root with Newton iteration. | |
| template<Real T> | |
| constexpr T | constexpr_nrt_safe (T x, std::size_t root, T floor=T(0), T g=1e-10, T tol=1e-10) |
| Return a scalar nth root with a sanitized fallback radicand. | |
| template<Real T> | |
| constexpr auto | constexpr_sin (T x, int terms=16) |
| Approximate sine with a truncated Taylor recurrence. | |
| template<Real T> | |
| constexpr auto | constexpr_cos (T x, int terms=16) |
| Approximate cosine with a truncated Taylor recurrence. | |
| template<Real T> | |
| constexpr std::optional< T > | constexpr_atanh (T x, int terms=16) |
| atanh (inverse hyperbolic tangent function) | |
| template<Real T> | |
| constexpr T | constexpr_atanh_safe (T x, T fallback=T(0), int terms=16) |
| constexpr-safe atanh with fallback | |
| template<Real T> | |
| constexpr auto | constexpr_expi (T theta, int terms=16) |
Approximate exp(i * theta) on the complex unit circle. | |
| template<Real T> | |
| constexpr auto | constexpr_exp (T x, int terms=16) |
| Approximate the real exponential with a truncated power series. | |
| template<Complex T> | |
| constexpr auto | constexpr_exp_lambda (const T &lambda, int terms=16) |
| Approximate the exponential of a complex scalar. | |
| template<Real T> | |
| constexpr std::optional< T > | constexpr_ln (T x_in, int terms=16) |
| natural log | |
| template<Real T> | |
| constexpr T | constexpr_ln_safe (T x, T floor=std::numeric_limits< T >::min(), int terms=16) |
| natural log with domain sanitization and fallback | |
| template<std::size_t Start, std::size_t End, typename Func > requires (End - Start >= 0) | |
| constexpr void | constexpr_for (Func &&f) |
| constexpr for loop which recursively unrolls a dynamic for loop into compile time recursive loop | |
| template<Complex T> | |
| constexpr bool | is_same (const T &a, const T &b, real_type_t< T > tol=1e-10) |
| Compare complex scalars by magnitude of their difference. | |
| template<VectorContainer Vec> requires (Real<vector_element_t<Vec>>) | |
| constexpr auto | argsort_desc (const Vec &x) |
| Return coordinate indices sorted by descending real value. | |
| template<typename T , typename... Ts> | |
| Vector (T, Ts...) -> Vector< std::common_type_t< T, Ts... >, 1+sizeof...(Ts)> | |
| Deduce coordinate type and dimension from constructor arguments. | |
Variables | |
| template<Field T> | |
| constexpr T | sqrt2_v {T(1.414213562373095048801688724209698079L)} |
| template<Field T> | |
| constexpr T | inv_sqrt2_v {T(1) / sqrt2_v<T>} |
| template<Field T> | |
| constexpr T | ln2_v {T(0.693147180559945309417232121458176568L)} |
| template<class Mat > | |
| constexpr std::size_t | mat_rows_v = mat_traits<remove_cvref_t<Mat>>::ROWS |
| Registered compile-time row count after cv/ref normalization. | |
| template<class Mat > | |
| constexpr std::size_t | mat_cols_v = mat_traits<remove_cvref_t<Mat>>::COLS |
| Registered compile-time column count after cv/ref normalization. | |
| template<class Norm > | |
| constexpr std::size_t | norm_dim_v = norm_traits_t<Norm>::dim |
| template<class Norm > | |
| constexpr bool | is_norm_v = norm_traits<remove_cvref_t<Norm>>{} |
| helper for is norm type | |
| template<typename Space > | |
| constexpr bool | is_symmetric_matrix_space_v |
| symmetric matrix space type trait var | |
| template<typename T > | |
| constexpr bool | is_real_v = scalar_traits_t<T>::is_real |
Whether normalized T is registered as a real scalar. | |
| template<typename T > | |
| constexpr bool | is_complex_v = scalar_traits_t<T>::is_complex |
Whether normalized T is registered as a complex scalar. | |
| template<class Space > | |
| constexpr std::size_t | space_dim_v |
| Finite coordinate dimension after cv/ref normalization. | |
| template<class Vec > | |
| constexpr std::size_t | vector_dim_v = vector_traits_t<Vec>::dim |
| Registered compile-time vector dimension. | |
Matrix-shaped representation of a Dim-element column vector.
Definition at line 18 of file matrix_traits.hpp.
Definition at line 138 of file matrix_traits.hpp.
Definition at line 147 of file matrix_traits.hpp.
Definition at line 120 of file matrix_traits.hpp.
Definition at line 129 of file matrix_traits.hpp.
| using linalg::coordinate_map_t = typedef coordinate_map<remove_cvref_t<Space> > |
Coordinate-map specialization selected after cv/ref normalization.
Definition at line 73 of file coordinate_map.hpp.
| using linalg::inner_product_codomain_t = typedef typename inner_product_traits_t<Product>::codomain_type |
Registered result type of the inner product.
Definition at line 93 of file inner_product.hpp.
| using linalg::inner_product_domain_t = typedef typename inner_product_traits_t<Product>::domain_type |
Registered vector domain after product cv/ref normalization.
Definition at line 83 of file inner_product.hpp.
| using linalg::inner_product_scalar_t = typedef typename inner_product_traits_t<Product>::scalar_type |
Registered scalar field associated with the product domain.
Definition at line 88 of file inner_product.hpp.
Normalized trait specialization for an inner-product type.
Definition at line 79 of file inner_product.hpp.
| using linalg::matrix_scalar_t = typedef typename mat_traits<remove_cvref_t<Mat> >::value_type |
Registered matrix scalar type after cv/ref normalization.
Definition at line 87 of file matrix_traits.hpp.
| using linalg::Matrixcd = typedef Matrix<std::complex<double>, Rows, Cols> |
Definition at line 135 of file matrix_traits.hpp.
| using linalg::Matrixcf = typedef Matrix<std::complex<float>, Rows, Cols> |
Definition at line 144 of file matrix_traits.hpp.
| using linalg::Matrixd = typedef Matrix<double, Rows, Cols> |
Definition at line 117 of file matrix_traits.hpp.
| using linalg::Matrixf = typedef Matrix<float, Rows, Cols> |
Definition at line 126 of file matrix_traits.hpp.
| using linalg::norm_codomain_t = typedef typename norm_traits_t<Norm>::codomain_type |
Definition at line 64 of file norm_traits.hpp.
| using linalg::norm_domain_t = typedef typename norm_traits_t<Norm>::domain_type |
Definition at line 58 of file norm_traits.hpp.
| using linalg::norm_scalar_t = typedef typename norm_traits_t<Norm>::scalar_type |
Definition at line 61 of file norm_traits.hpp.
normalized norm traits
Definition at line 55 of file norm_traits.hpp.
| using linalg::operator_codomain_t = typedef typename operator_traits_t<Operator>::codomain_type |
Definition at line 292 of file operator_traits.hpp.
| using linalg::operator_domain_t = typedef typename operator_traits_t<Operator>::domain_type |
Definition at line 289 of file operator_traits.hpp.
| using linalg::operator_matrix_t = typedef typename operator_traits_t<Operator>::matrix_type |
Definition at line 295 of file operator_traits.hpp.
| using linalg::operator_scalar_t = typedef typename operator_traits_t<Operator>::scalar_type |
Definition at line 286 of file operator_traits.hpp.
Definition at line 283 of file operator_traits.hpp.
| using linalg::real_type_t = typedef typename scalar_traits_t<T>::real_type |
Associated real component type registered for T.
For example, both double and std::complex<double> have double as their real_type_t.
Definition at line 82 of file scalar_traits.hpp.
| using linalg::remove_cvref_t = typedef std::remove_cvref_t<T> |
Remove top-level const, volatile, and reference qualification.
Public linalg traits normalize their lookup keys through this alias so a scalar and cv/ref-qualified views of that scalar share one specialization.
Definition at line 20 of file scalar_traits.hpp.
Matrix-shaped representation of a Dim-element row vector.
Definition at line 22 of file matrix_traits.hpp.
Definition at line 141 of file matrix_traits.hpp.
Definition at line 150 of file matrix_traits.hpp.
Definition at line 123 of file matrix_traits.hpp.
Definition at line 132 of file matrix_traits.hpp.
| using linalg::scalar_traits_t = typedef scalar_traits<remove_cvref_t<T> > |
Scalar traits selected after cv/ref normalization.
Definition at line 69 of file scalar_traits.hpp.
| using linalg::scalar_type_t = typedef typename scalar_traits_t<T>::scalar_type |
Normalized scalar representation registered for T.
Definition at line 73 of file scalar_traits.hpp.
| using linalg::space_coordinate_t = typedef typename space_traits<remove_cvref_t<Space> >::coordinate_type |
Finite coordinate representation registered for a space.
Definition at line 106 of file space_traits.hpp.
| using linalg::space_element_t = typedef typename space_traits<remove_cvref_t<Space> >::element_type |
Canonical element representation registered for a space.
Definition at line 101 of file space_traits.hpp.
| using linalg::space_point_t = typedef typename space_traits<remove_cvref_t<Space> >::Point |
Legacy point/domain alias after cv/ref normalization.
Definition at line 87 of file space_traits.hpp.
| using linalg::space_scalar_t = typedef typename space_traits<remove_cvref_t<Space> >::scalar_type |
Scalar field registered for a space.
Definition at line 96 of file space_traits.hpp.
| using linalg::space_type_t = typedef typename space_traits<remove_cvref_t<Space> >::value_type |
Legacy scalar-field alias after cv/ref normalization.
Definition at line 83 of file space_traits.hpp.
| using linalg::vector_element_t = typedef typename vector_traits_t<Vec>::element_type |
Registered vector coordinate type.
Definition at line 66 of file vector_traits.hpp.
| using linalg::vector_scalar_t = typedef typename vector_scalar<remove_cvref_t<Vec> >::type |
Fully unwrapped scalar type underlying a possibly nested vector.
Definition at line 90 of file vector_traits.hpp.
| using linalg::vector_traits_t = typedef vector_traits<remove_cvref_t<Vec> > |
Vector traits selected after cv/ref normalization.
Definition at line 62 of file vector_traits.hpp.
Definition at line 111 of file matrix_traits.hpp.
Definition at line 114 of file matrix_traits.hpp.
Definition at line 105 of file matrix_traits.hpp.
Definition at line 108 of file matrix_traits.hpp.
|
strong |
|
strong |
NumericalEvent.
| Enumerator | |
|---|---|
| NONE | |
| RANK_DEFICIENCY | |
| INDEFINITE_FACTORIZATION | |
| NEAR_SINGULAR_TRIANGULAR_SOLVE | |
| NUMERICAL_SAFEGUARD | |
| DB_MAX_ITERS_REACHED | |
| FACTORIZATION_FAILED | |
| EVD_FAILED | |
Definition at line 26 of file numerical_config.hpp.
simple enum to define symmetric matrix types INV = Invalid IND = Indefinite PSD = Positive Semidefinite PD = Positive Definite NSD = Negative Semidefinite ND = Negative Definite
| Enumerator | |
|---|---|
| INV | |
| IND | |
| PSD | |
| PD | |
| NSD | |
| ND | |
Definition at line 21 of file operator_traits.hpp.
Add two shape-compatible matrices element by element.
| A | Left matrix. |
| B | Right matrix of the same registered type and shape. |
Matrix containing A(row,col) + B(row,col). Definition at line 52 of file linalg_ops.hpp.
References mat_rows_v.
add two vectors together to get a third
A + B = C
| vector | A of type T with N elements |
| vector | B of type T with N elements |
Definition at line 25 of file linalg_ops.hpp.
References mat_rows_v.
Referenced by operator+(), and operator+().
|
constexpr |
checks if two given matrix are equivalent
| matrix | A of type T with Rows x Cols elements |
| vector | B of type T with Rows x Cols elements |
| tolerance | set to 1e-10 by default |
Definition at line 373 of file linalg_util.hpp.
References all_equal(), and mat_rows_v.
|
constexpr |
checks if two vectors are equivalent to a given tolerance (different than == operator on vector which must be exactly equal
| vector | X of type T N elements |
| vector | Y of type T N elements |
Definition at line 358 of file linalg_util.hpp.
References euclidean_distance(), and mat_rows_v.
Referenced by all_equal(), and linalg::MatrixSqrt< MatIn >::apply().
|
constexpr |
simple function that checks if a vector contains only zeros (hence spans nullspace)
| vector | of type T with N elements |
Definition at line 199 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
Definition at line 298 of file operator_traits.hpp.
References mat_rows_v.
|
constexpr |
max element
| vector | x |
Definition at line 422 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
min element
| vector | x |
Definition at line 403 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
Return coordinate indices sorted by descending real value.
| x | Fixed-size real vector. |
std::array<std::size_t, N> containing a descending permutation. Definition at line 540 of file algebra_util.hpp.
References mat_rows_v.
|
constexpr |
Copy a fixed-size array into a tuple of the same length.
| x | Source array in index order. |
x[0] through x[N - 1]. Definition at line 47 of file algebra_util.hpp.
References mat_rows_v.
|
constexpr |
Represent a vector as a Dim x 1 matrix.
Definition at line 144 of file matrix.hpp.
References mat_rows_v.
express the vector X as a column vector (N x 1)
| vector | X of type T and N elements |
Definition at line 66 of file linalg_util.hpp.
References mat_rows_v.
Referenced by linalg::Hessenberg< Mat >::Hessenberg(), and linalg::Hessenberg< Mat >::U().
express matrix as complex one
| Matrix | A type T with Rows x Cols elements |
Definition at line 98 of file linalg_util.hpp.
References mat_rows_v.
Referenced by matrix_exp().
|
constexpr |
Represent a vector as a 1 x Dim matrix.
Definition at line 138 of file matrix.hpp.
References mat_rows_v.
express the vector X as a row vector (1 x N)
| vector | X of type T and N elements |
Definition at line 82 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
express col vector as vector
| Matrix | A type T with N x 1 elements |
Definition at line 121 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
Convert a one-row or one-column matrix to a vector.
The element order follows the non-unit dimension. General rectangular matrices do not implicitly flatten to vectors.
Definition at line 158 of file matrix.hpp.
References mat_rows_v.
|
constexpr |
express row vector as vector
| Matrix | A type T with 1 x N elements |
Definition at line 135 of file linalg_util.hpp.
References mat_rows_v.
conjugate a vector
| vector | of type T with N elements |
Definition at line 166 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
conjugate transpose of a matrix
Like A^T, however the field is complex and the elements get conjugated
| matrix | A of type T Rows x Cols elements |
Definition at line 300 of file linalg_ops.hpp.
References mat_rows_v, and transpose().
Referenced by linalg::Hessenberg< Mat >::Hessenberg(), linalg::QR< Mat >::solve(), and linalg::Hessenberg< Mat >::U().
Definition at line 190 of file algebra_util.hpp.
References constexpr_sqrt_safe().
|
constexpr |
Compute real absolute value or complex magnitude.
| x | Real or complex field scalar. |
|x| in the associated real type. Definition at line 181 of file algebra_util.hpp.
Referenced by linalg::SymmetricMatrixInverse< MatIn >::apply(), constexpr_atanh(), constexpr_nrt(), is_same(), linalg::L1< Vec >::operator()(), and linalg::Linf< Vec >::operator()().
|
constexpr |
atanh (inverse hyperbolic tangent function)
atanh(x) = x + x^3 / 3 + x^5 / 5 + ... = sum_{n=0}^{infinity} frac{x^{2n+1}}{2n+1}
| x | in (-1, 1) |
| terms | Number of odd-power series terms. |
Definition at line 333 of file algebra_util.hpp.
References constexpr_abs(), and mat_rows_v.
Referenced by constexpr_atanh_safe(), and constexpr_ln().
|
constexpr |
constexpr-safe atanh with fallback
| x | input scalar |
| fallback | fallback value when |x| >= 1 |
| terms | series terms |
Definition at line 359 of file algebra_util.hpp.
References constexpr_atanh(), and mat_rows_v.
Approximate cosine with a truncated Taylor recurrence.
sum_{k=0}^{infinity}frac{(-1)^{k}x^{2k}}{(2k)!} = cos x
| x | Angle in radians. |
| terms | Number of series terms. |
Definition at line 308 of file algebra_util.hpp.
References mat_rows_v.
Referenced by constexpr_expi(), affine::Rotation2d< T >::operator()(), affine::Rotation3d< T >::x(), affine::Rotation3d< T >::y(), and affine::Rotation3d< T >::z().
|
constexpr |
Divide two real scalars with an explicit zero-denominator result.
| num | numerator |
| den | denominator |
Definition at line 79 of file algebra_util.hpp.
References mat_rows_v.
Referenced by constexpr_div_safe().
|
constexpr |
Divide two real scalars, returning a fallback for a zero denominator.
| num | numerator |
| den | denominator |
| fallback | fallback value when denominator is zero |
Definition at line 94 of file algebra_util.hpp.
References constexpr_div(), and mat_rows_v.
Referenced by constexpr_ln(), constexpr_nrt(), and constexpr_sqrt().
Approximate the real exponential with a truncated power series.
exp(x) = 1 + x + x^2/2! + x^3/3!... = sum_{n=0}^infinity frac{x^n}{n!}
| x | Real exponent. |
| terms | Number of series terms. |
Definition at line 393 of file algebra_util.hpp.
References mat_rows_v.
Referenced by constexpr_exp_lambda().
|
constexpr |
Approximate the exponential of a complex scalar.
| lambda | Complex exponent alpha + i * omega. |
| terms | Number of series terms used by each component approximation. |
Definition at line 415 of file algebra_util.hpp.
References constexpr_exp(), constexpr_expi(), and mat_rows_v.
Referenced by matrix_exp().
Approximate exp(i * theta) on the complex unit circle.
| theta | Angle in radians. |
| terms | Number of sine and cosine series terms. |
Definition at line 372 of file algebra_util.hpp.
References constexpr_cos(), constexpr_sin(), and mat_rows_v.
Referenced by constexpr_exp_lambda().
constexpr for loop which recursively unrolls a dynamic for loop into compile time recursive loop
| Start | Inclusive compile-time start index. |
| End | Exclusive compile-time end index. |
| f | Callable receiving each index as std::integral_constant. |
Definition at line 513 of file algebra_util.hpp.
References mat_rows_v.
Referenced by linalg::Hessenberg< Mat >::Hessenberg(), and linalg::Hessenberg< Mat >::U().
|
constexpr |
natural log
[old 1] less numerically friendly Taylor series expansion for 1 + t, t = 0 log(1 + t) = t - t^2 / 2 + t^3 / 3 - ... = sum_{k=1}^{infinity}(-1)^{k+1}frac{t^k}{k}
Restricting x in R_++, and let t = x - 1... log(1 + x - 1) = log(x) log(x) approximately (x - 1) - (x - 1)^2 / 2 + (x - 1)^3 - ...
[old 2] use atanh log(x) approximately 2 * atan(y) where y = (x - 1) / (x + 1)
[new] range reduce x = m * 2^e where m in [0.5, 2] for all x > 0 we have x = m 2^e, m in [0.5, 1] and e in Z ln(x) = ln(m) + e ln(2) ** the above makes this much more numerically stable
| x_in | Positive real argument. |
| terms | Number of inverse-hyperbolic-tangent series terms. |
std::nullopt outside the positive domain. Definition at line 452 of file algebra_util.hpp.
References constexpr_atanh(), constexpr_div_safe(), and mat_rows_v.
Referenced by constexpr_ln_safe().
|
constexpr |
natural log with domain sanitization and fallback
Ensures no optional access is required at call sites that need a scalar. Handles NaN/invalid by clamping to a positive floor.
| x | input scalar |
| floor | positive floor value used when x is invalid/non-positive |
| terms | series terms |
Definition at line 492 of file algebra_util.hpp.
References constexpr_ln(), and mat_rows_v.
|
constexpr |
Approximate a real nth root with Newton iteration.
f(g) = g^n - x to df/dg = n g^{n-1} Newton formula : g_{k+1} = g_k - frac{g_k^n - x}{n g^{n-1}} equivalent to g_{k+1} = 1/n ((n - 1) g_k + x / g_k^{n-1})
| x | Real radicand. Negative values require an odd root degree. |
| root | Root degree; zero returns std::nullopt. |
| g | Positive initial guess. |
| tol | Absolute reconstruction tolerance. |
std::nullopt for an invalid real-domain request. Definition at line 212 of file algebra_util.hpp.
References constexpr_abs(), constexpr_div_safe(), mat_rows_v, and MAX_STEP_EVAL.
Referenced by constexpr_nrt_safe().
|
constexpr |
Return a scalar nth root with a sanitized fallback radicand.
| x | input scalar |
| root | root degree |
| floor | fallback scalar |
| g | initial guess |
| tol | convergence tolerance |
Definition at line 263 of file algebra_util.hpp.
References constexpr_nrt(), and mat_rows_v.
|
constexpr |
Raise a real scalar to a nonnegative integral power.
| x | Real base. |
| power | Nonnegative integral exponent; conventionally positive here. |
Definition at line 106 of file algebra_util.hpp.
References mat_rows_v.
Approximate sine with a truncated Taylor recurrence.
sum_{k=0}^{infinity}frac{(-1)^{k}x^{2k+1}}{(2k+1)!}
| x | Angle in radians. |
| terms | Number of series terms. |
Definition at line 284 of file algebra_util.hpp.
References mat_rows_v.
Referenced by constexpr_expi(), affine::Rotation2d< T >::operator()(), affine::Rotation3d< T >::x(), affine::Rotation3d< T >::y(), and affine::Rotation3d< T >::z().
|
constexpr |
Approximate a nonnegative square root with Newton iteration.
f(g) = g^2 - x to df/dg = 2 g Newton formula : g_{k+1} = g_k - frac{g^2 - x} / {2 g_k} equivalent to 0.5 * (g_n + x / g_n)
| x | Nonnegative radicand; a negative value returns std::nullopt. |
| g | Positive initial guess; nonpositive guesses are replaced with one. |
| tol | Absolute squared-residual tolerance. |
std::nullopt outside the real domain. The current zero-input convention returns zero. Definition at line 130 of file algebra_util.hpp.
References constexpr_div_safe(), mat_rows_v, and MAX_STEP_EVAL.
Referenced by constexpr_sqrt_safe().
|
constexpr |
Return a scalar square root with a sanitized fallback radicand.
| x | input scalar |
| floor | minimum scalar for fallback |
| g | initial guess |
| tol | convergence tolerance |
Definition at line 163 of file algebra_util.hpp.
References constexpr_sqrt(), and mat_rows_v.
Referenced by constexpr_abs(), linalg::Fro< Mat >::operator()(), linalg::L2< Vec >::operator()(), and linalg::EigenDecomposition< Mat >::spectral_radius().
|
constexpr |
Convert a registered space element to its coordinate representation.
| element | Element in the canonical representation of Space. |
space_traits<Space>. Definition at line 81 of file coordinate_map.hpp.
References mat_rows_v.
|
constexpr |
cross product between x x y = Z
| vector | of type T with 3 elements |
| vector | of type T with 3 elements |
Definition at line 184 of file linalg_ops.hpp.
|
constexpr |
Compute the euclidean distance between two vectors (L2 norm of delta)
| vector | X of type T with N elements |
| vector | Y of type T with N elements |
Definition at line 331 of file linalg_util.hpp.
References mat_rows_v.
Referenced by all_equal(), and rows_equal_cols().
|
constexpr |
Reconstruct a registered space element from its coordinates.
| coordinate | Coordinate representation registered for Space. |
Space. Definition at line 91 of file coordinate_map.hpp.
References mat_rows_v.
|
constexpr |
Copy a compile-time rectangular matrix block.
| matrix | A of type T Rows x Cols elements |
Row and column bounds are half-open: [StartRow, EndRow) x [StartCol, EndCol).
Definition at line 255 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
get the column of matrix A based on given index
| matrix | A of size Rows x Cols of type T |
| index |
Definition at line 150 of file linalg_util.hpp.
References AK_ASSERT, and mat_rows_v.
Referenced by linalg::LDL< Mat >::apply(), linalg::QuadraticRep< JxJ, Circ >::apply(), linalg::Hessenberg< Mat >::Hessenberg(), and rows_equal_cols().
get the diagonal of a matrix A
| matrix | A of size Rows x Cols of type T |
Definition at line 181 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
Copy the half-open vector slice [Start, End).
| vector | of type T with N elements |
T with End - Start elements. Definition at line 26 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
get lower left triangular matrix from A
| matrix | A of type T Rows x Cols elements |
Definition at line 313 of file linalg_util.hpp.
References mat_rows_v.
get lower triangle
[ 0 0 0 0 ] [ * 0 0 0 ] [ * * 0 0 ] [ * * * 0 ]
| matrix | A |
Definition at line 519 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
get lower triangle with diag
[ * 0 0 0 ] [ * * 0 0 ] [ * * * 0 ] [ * * * * ]
| matrix | A |
Definition at line 446 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
Copy the half-open matrix column range [Start, End).
| matrix | A of type T Rows x Cols elements |
Definition at line 232 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
Copy the half-open matrix row range [Start, End).
| matrix | A of type T Rows x Cols elements |
Definition at line 214 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
get the row of matrix A based on given index
| matrix | A of size Rows x Cols of type T |
| index |
Definition at line 168 of file linalg_util.hpp.
References AK_ASSERT, and mat_rows_v.
get svec encoding of a symmetric matrix
Off-diagonal entries are scaled by sqrt(2) to preserve the Frobenius inner product under vectorization.
| matrix | A |
Definition at line 467 of file linalg_util.hpp.
References mat_rows_v.
Referenced by make_svec().
|
constexpr |
get upper right triangular matrix from A
| matrix | A of type T Rows x Cols elements |
Definition at line 296 of file linalg_util.hpp.
References mat_rows_v.
Referenced by linalg::QR< Mat >::R().
|
constexpr |
Evaluate the canonical inner product for two field vectors.
This is the standard call-site API and delegates to StandardInnerProduct<remove_cvref_t<Vec>>. There is deliberately no separate dot operation with different complex-number semantics.
| lhs | First vector; conjugated for a complex field. |
| rhs | Second vector. |
Vec. Definition at line 123 of file inner_product.hpp.
References mat_rows_v.
Referenced by linalg::L2< Vec >::operator()().
|
constexpr |
Invert an index permutation.
| N | Number of permuted indices. |
| [in] | p | Permutation of indices 0 through N-1. |
Definition at line 53 of file matrix_exp.hpp.
References mat_rows_v.
Referenced by matrix_exp().
|
inlineconstexpr |
is_fatal_event
| event | (NumericalEvent) |
Definition at line 48 of file numerical_config.hpp.
References EVD_FAILED, and FACTORIZATION_FAILED.
Referenced by linalg::SymmetricMatrixInverse< MatIn >::apply(), linalg::LDL< Mat >::apply(), and linalg::LDL< Mat >::solve().
|
constexpr |
Check whether a complex value's imaginary component is below a bound.
This function evaluates z.imag() <= tol exactly; it is primarily used where the expected imaginary residual is nonnegative. It does not take the absolute value of the imaginary component.
| z | Complex value to inspect. |
| tol | Upper bound for its imaginary component. |
Definition at line 66 of file algebra_util.hpp.
Referenced by linalg::L2< Vec >::operator()().
|
constexpr |
Compare complex scalars by magnitude of their difference.
| a | First complex scalar. |
| b | Second complex scalar. |
| tol | Strict magnitude tolerance. |
Definition at line 528 of file algebra_util.hpp.
References constexpr_abs(), and mat_rows_v.
Referenced by make_group_permutation(), and matrix_exp().
|
constexpr |
make a diagonal matrix from a vector
| vector | X of size N and type T |
Definition at line 199 of file linalg_util.hpp.
References mat_rows_v.
Referenced by linalg::LDL< Mat >::D().
|
constexpr |
Group approximately equal eigenvalues into contiguous index runs.
| Vec | Vector type with complex scalar entries. |
| [in] | D | Complex eigenvalue vector. |
| [in] | tol | Absolute tolerance for comparing eigenvalues. |
Definition at line 23 of file matrix_exp.hpp.
References is_same(), and mat_rows_v.
Referenced by matrix_exp().
create an identity matrix of size N type T
Definition at line 39 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
Construct a lower-triangular matrix including its diagonal.
| x | (vector) |
Coordinates are consumed row by row through the diagonal; entries above the diagonal remain value-initialized zero.
L. Definition at line 568 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
make symmetric matrix
| symmetric | vector (flattened) |
Definition at line 412 of file linalg_util.hpp.
References mat_rows_v, and transpose().
Compatibility spelling for get_svec(A).
| A | Square matrix to encode in lower-triangular svec order. |
Definition at line 487 of file linalg_util.hpp.
References get_svec(), and mat_rows_v.
|
constexpr |
Construct a unit lower-triangular matrix from strict-lower entries.
| vector | x |
Coordinates are consumed row by row below the diagonal. Diagonal entries are set to one and upper-triangular entries remain value-initialized zero.
L. Definition at line 541 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
create a matrix filled with zeros of size Rows x Cols of type T
Definition at line 51 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
Compute the manhattan distance between two vectors (L1 norm of delta)
| vector | X of type T with N elements |
| vector | Y of type T with N elements |
Definition at line 344 of file linalg_util.hpp.
References mat_rows_v.
| linalg::Matrix | ( | Vector< T, Cols > | , |
| Rows... | |||
| ) | -> Matrix< T, 1+sizeof...(Rows), Cols > |
Compute exp(A) using its eigenvector and generalized-eigenvector basis.
Algorithm flow:
This path relies on the decomposition producing an invertible generalized eigenvector basis and approximately upper-triangular repeated-root blocks. Eigenvalues are grouped by the helpers' absolute comparison tolerance. Complex arithmetic is retained even for real A, whose eigenvalues may occur in complex-conjugate pairs.
| Mat | Square matrix type. |
| [in] | A | Square input matrix. |
Definition at line 121 of file matrix_exp.hpp.
References as_complex_matrix(), constexpr_exp_lambda(), invert_permutation(), is_same(), make_group_permutation(), mat_rows_v, NONE, permute_ptjp(), and unpermute_papt().
|
constexpr |
max element
| vector | x |
Definition at line 386 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
min element
| vector | x |
Definition at line 369 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
Left scalar-matrix multiplication operator.
Definition at line 118 of file linalg_ops.hpp.
References mat_rows_v, and scalar_multiplication().
|
constexpr |
operator overload for scalar multiplication
Definition at line 94 of file linalg_ops.hpp.
References mat_rows_v, and scalar_multiplication().
|
constexpr |
Apply a compatible matrix to a vector.
| matrix | A of type T Rows x Cols elements |
| vector | X of type T Cols elements |
mat_rows_v<Mat>. Definition at line 347 of file linalg_ops.hpp.
References mat_rows_v.
Multiply compatible matrices with the standard row-column product.
| matrix | A of type T Rows x Cols elements |
| matrix | B of type T Cols x Rows elements |
Definition at line 321 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
Matrix addition operator delegating to add.
Definition at line 65 of file linalg_ops.hpp.
References add(), and mat_rows_v.
|
constexpr |
operator overload for add
Definition at line 41 of file linalg_ops.hpp.
References add(), and mat_rows_v.
|
constexpr |
Subtract two matrices as A + (-1) * B.
Definition at line 135 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
operator overload for subtraction
Definition at line 129 of file linalg_ops.hpp.
References mat_rows_v.
Multiply matrix-shaped column and row operands as an outer product.
A * B = C where C is a new matrix of Rows_of_A x Cols_of_B
| matrix | A of type T Rows1 x Cols1 elements |
| matrix | B of type T Cols1 x Cols2 elements |
mat_rows_v<MatA> rows and mat_cols_v<MatB> columns. The implementation uses A(i, 0) * B(0, j); callers should supply a one-column left operand and one-row right operand. Definition at line 241 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
Reorder matrix rows and columns by the same permutation.
| Mat | Square matrix type. |
| [in] | J | Square matrix to reorder. |
| [in] | p | Permutation mapping new indices to original indices. |
Definition at line 68 of file matrix_exp.hpp.
References mat_rows_v.
Referenced by matrix_exp().
|
constexpr |
checks if the row space of one matrix is equivalent to the column space of another matrix
| matrix | A of type T with Rows x Cols elements |
| vector | B of type T with Cols x Rows elements |
Definition at line 395 of file linalg_util.hpp.
References euclidean_distance(), get_col(), and mat_rows_v.
|
constexpr |
Multiply every matrix entry by a field scalar.
| alpha | Scalar multiplier. |
| A | Matrix operand. |
Definition at line 105 of file linalg_ops.hpp.
References mat_rows_v.
|
constexpr |
multiply a vector A with a scalar alpha
alpha * A = alpha A
| alpha | of scalar type T |
| vector | x of type T with N elements |
Definition at line 80 of file linalg_ops.hpp.
References mat_rows_v.
Referenced by operator*(), and operator*().
|
constexpr |
Return a matrix copy with one compile-time block replaced.
| matrix | A of type T Rows x Cols elements |
| matrix | B of type T (EndRow - StartRow) x (EndCol - StartCol) |
Bounds are half-open. A is accepted by value, so this operation does not mutate the caller's original matrix.
Definition at line 279 of file linalg_util.hpp.
References mat_rows_v.
|
constexpr |
splice operator
| vector | type T with N elements |
Definition at line 216 of file linalg_ops.hpp.
References mat_rows_v.
symmetric part of a square matrix
sym(A) = 0.5 * (A + A^T)
| matrix | A |
Definition at line 501 of file linalg_util.hpp.
References mat_rows_v, and transpose().
|
constexpr |
trace of a matrix
Sum of the diagonal elements of a matrix
| matrix | A of type T Rows x Cols elements |
Definition at line 282 of file linalg_ops.hpp.
References mat_rows_v.
transpose of a matrix
A^T (rows and cols flipped from A)
| matrix | A of type T Rows x Cols elements |
Definition at line 261 of file linalg_ops.hpp.
References mat_rows_v.
tranpose of a vector
Vector is naturally row vector in how it's stored so the transpose flips it from a row to column based matrix
| vector | of type T with N elements |
Definition at line 150 of file linalg_ops.hpp.
References mat_rows_v.
Referenced by conjugate_transpose(), linalg::Hessenberg< Mat >::Hessenberg(), make_smat(), linalg::LDL< Mat >::solve(), linalg::QR< Mat >::solve(), symmetric_part(), and linalg::Hessenberg< Mat >::U().
|
constexpr |
Scatter matrix entries through a row-and-column permutation.
| Mat | Square matrix type. |
| [in] | A | Square matrix whose entries are scattered. |
| [in] | p | Permutation mapping source indices to destination indices. |
Definition at line 86 of file matrix_exp.hpp.
References mat_rows_v.
Referenced by matrix_exp().
| linalg::Vector | ( | T | , |
| Ts... | |||
| ) | -> Vector< std::common_type_t< T, Ts... >, 1+sizeof...(Ts)> |
Definition at line 16 of file constants.hpp.
|
inlineconstexpr |
Whether normalized T is registered as a complex scalar.
Definition at line 90 of file scalar_traits.hpp.
|
inlineconstexpr |
helper for is norm type
Definition at line 71 of file norm_traits.hpp.
|
inlineconstexpr |
Whether normalized T is registered as a real scalar.
Definition at line 86 of file scalar_traits.hpp.
symmetric matrix space type trait var
Definition at line 256 of file operator_traits.hpp.
|
inlineconstexpr |
Definition at line 19 of file constants.hpp.
|
inlineconstexpr |
Registered compile-time column count after cv/ref normalization.
Definition at line 95 of file matrix_traits.hpp.
|
inlineconstexpr |
Registered compile-time row count after cv/ref normalization.
Definition at line 91 of file matrix_traits.hpp.
Referenced by add(), add(), all_equal(), all_equal(), all_zero(), linalg::QuadraticRep< JxJ, Circ >::apply(), linalg::MatrixInverse< MatIn >::apply(), linalg::SymmetricMatrixInverse< MatIn >::apply(), linalg::MatrixSqrt< MatIn >::apply(), apply(), linalg::LDL< Mat >::apply(), linalg::Hessian< Mat, Type >::apply(), linalg::QuadraticRep< JxJ, Circ >::apply(), linalg::Hessian< Mat, Type >::apply(), linalg::MatrixPencil< Mat, Dim >::apply_full(), linalg::MatrixPencil< Mat, Dim >::apply_sym_mat(), arg_max(), arg_min(), argsort_desc(), array_to_tuple(), as_col_matrix(), as_col_vector(), as_complex_matrix(), as_row_matrix(), as_row_vector(), as_vector(), as_vector(), as_vector(), linalg::Cholesky< Mat >::Cholesky(), linalg::Cholesky< Mat >::Cholesky(), affine::AffineMap< Mat >::compose(), linalg::SymmetricOperator< Mat, Derived >::compute_definiteness(), conjugate(), conjugate_transpose(), constexpr_atanh(), constexpr_atanh_safe(), constexpr_cos(), constexpr_div(), constexpr_div_safe(), constexpr_exp(), constexpr_exp_lambda(), constexpr_expi(), constexpr_for(), constexpr_ln(), constexpr_ln_safe(), constexpr_nrt(), constexpr_nrt_safe(), constexpr_pow(), constexpr_sin(), constexpr_sqrt(), constexpr_sqrt_safe(), coordinates(), linalg::LDL< Mat >::det(), linalg::EigenDecomposition< Mat >::EigenDecomposition(), linalg::EigenDecomposition< Mat >::EigenDecomposition(), euclidean_distance(), linalg::mat_traits< Matrix< T, Rows, Cols > >::fill(), linalg::vector_traits< Vector< T, Dim > >::fill(), linalg::coordinate_map< SymmetricMatrix< Mat > >::from_coordinates(), from_coordinates(), linalg::coordinate_map< SymmetricMatrixSpace< T, Dim > >::from_coordinates(), linalg::coordinate_map< CoordinateSpace< T, Dim > >::from_coordinates(), linalg::coordinate_map< Matrix< T, Rows, Cols > >::from_coordinates(), linalg::coordinate_map< MatrixSpace< T, Rows, Cols > >::from_coordinates(), linalg::Cholesky< Mat >::G(), get_block(), get_col(), get_diag(), get_elements(), get_lower_left_triangular_matrix(), get_lower_triangle(), get_lower_triangle_with_diag(), get_n_cols(), get_n_rows(), get_row(), get_svec(), get_upper_right_triangular_matrix(), linalg::Hessenberg< Mat >::H(), linalg::Hessenberg< Mat >::Hessenberg(), linalg::SymmetricOperator< Mat, Derived >::index(), inner_product(), affine::AffineMap< Mat >::inverse(), invert_permutation(), linalg::Hessian< Mat, Type >::is_pullback(), is_same(), linalg::LDL< Mat >::L(), linalg::LDL< Mat >::LDL(), linalg::LDL< Mat >::LDL(), make_diag(), make_group_permutation(), make_identity(), make_lower_triangle(), affine::make_map_id(), affine::make_selector_map(), make_smat(), make_svec(), make_unit_lower_triangle(), make_zeros(), manhattan_distance(), linalg::Matrix< T, Rows, Cols >::Matrix(), matrix_exp(), max(), min(), linalg::Vector< T, N >::operator!=(), linalg::StandardInnerProduct< Vec >::operator()(), linalg::Fro< Mat >::operator()(), linalg::L2< Vec >::operator()(), linalg::L1< Vec >::operator()(), linalg::Linf< Vec >::operator()(), linalg::MatrixInverse< MatIn >::operator()(), linalg::SymmetricMatrixInverse< MatIn >::operator()(), linalg::MatrixSqrt< MatIn >::operator()(), affine::Scale< T, N >::operator()(), linalg::Endomorphism< Mat, Derived >::operator()(), linalg::Endomorphism< Mat, Derived >::operator()(), linalg::Hessenberg< Mat >::operator()(), linalg::Hessian< Mat, Type >::operator()(), linalg::SymmetricOperator< Mat, Derived >::operator()(), affine::Shear< T, N >::operator()(), linalg::Vector< T, N >::operator()(), linalg::Vector< T, N >::operator()(), linalg::Matrix< T, Rows, Cols >::operator()(), linalg::Matrix< T, Rows, Cols >::operator()(), linalg::mat_traits< Matrix< T, Rows, Cols > >::operator()(), linalg::vector_traits< Vector< T, Dim > >::operator()(), operator*(), operator*(), operator*(), operator*(), operator+(), operator+(), operator-(), operator-(), linalg::Vector< T, N >::operator==(), outer_product(), permute_ptjp(), linalg::QR< Mat >::QR(), linalg::QR< Mat >::QR(), linalg::QR< Mat >::rank(), linalg::Matrix< T, Rows, Cols >::row(), rows_equal_cols(), scalar_multiplication(), scalar_multiplication(), linalg::Endomorphism< Mat, Derived >::self(), linalg::Endomorphism< Mat, Derived >::self(), linalg::SymmetricOperator< Mat, Derived >::self(), set_block(), linalg::LDL< Mat >::solve(), linalg::QR< Mat >::solve(), linalg::EigenDecomposition< Mat >::spectral_radius(), splice(), linalg::SVD< Mat >::SVD(), symmetric_part(), linalg::SymmetricMatrix< Mat >::SymmetricMatrix(), linalg::coordinate_map< SymmetricMatrix< Mat > >::to_coordinates(), linalg::coordinate_map< Matrix< T, Rows, Cols > >::to_coordinates(), linalg::coordinate_map< MatrixSpace< T, Rows, Cols > >::to_coordinates(), linalg::coordinate_map< SymmetricMatrixSpace< T, Dim > >::to_coordinates(), linalg::coordinate_map< CoordinateSpace< T, Dim > >::to_coordinates(), linalg::coordinate_map< Matrix< T, Rows, Cols > >::to_coordinates(), trace(), transpose(), transpose(), linalg::Hessenberg< Mat >::U(), unpermute_papt(), and linalg::Vector< T, N >::Vector().
|
inlineconstexpr |
Definition at line 67 of file norm_traits.hpp.
Finite coordinate dimension after cv/ref normalization.
Definition at line 91 of file space_traits.hpp.
|
inlineconstexpr |
Definition at line 13 of file constants.hpp.
|
inlineconstexpr |
Registered compile-time vector dimension.
Definition at line 70 of file vector_traits.hpp.