SuperDex Physics C++ API
Loading...
Searching...
No Matches
matrix_utils_inl.h File Reference
#include <mochi_core/utils/matrix_utils.h>
#include <cmath>

Go to the source code of this file.

Namespaces

namespace  superdex

Functions

template<typename T>
constexpr NdArray< T, 2, 2 > superdex::Cofactor (NdArray< T, 2, 2 > const &mat)
template<typename T>
constexpr NdArray< T, 3, 3 > superdex::Cofactor (NdArray< T, 3, 3 > const &mat)
template<typename T>
NdArray< Simd< T, 4 >, 3 > superdex::Cofactor3x3 (NdArray< Simd< T, 4 >, 3 > const &mat)
template<typename T>
constexpr void superdex::Cofactor4x4 (T const m[16], T adjOut[16])
template<typename T>
Simd< T, 4 > superdex::CofactorSym2x2 (Simd< T, 4 > const &mat)
template<typename T>
NdArray< Simd< T, 4 >, 2 > superdex::CofactorSym3x3 (NdArray< Simd< T, 4 >, 2 > const &mat)
template<typename T, size_t N, size_t M>
constexpr T superdex::Colon (NdArray< T, N, M > const &A, NdArray< T, N, M > const &B)
template<typename T>
superdex::Colon3x3 (NdArray< Simd< T, 4 >, 3 > const &A, NdArray< Simd< T, 4 >, 3 > const &B)
template<typename T>
constexpr T superdex::Det (NdArray< T, 2, 2 > const &A)
template<typename T>
constexpr T superdex::Det (NdArray< T, 3, 3 > const &A)
template<typename T>
constexpr T superdex::Det (NdArray< T, 4, 4 > const &A)
template<typename T>
superdex::Det2x2 (Simd< T, 4 > const &A)
template<typename T, size_t N>
superdex::Det3x3 (NdArray< Simd< T, 4 >, N > const &A)
template<typename T>
constexpr T superdex::Det4x4 (T const m[16])
template<size_t N, typename T>
constexpr NdArray< T, N, N > superdex::DiagonalMatrix (NdArray< T, N > const &diagonalVector)
template<size_t N, typename T>
constexpr NdArray< T, N, N > superdex::DiagonalMatrix (T valueOnDiagonal)
template<typename T, size_t N>
constexpr NdArray< T, N, N > superdex::DNormalize (NdArray< T, N > const &v)
template<typename T, size_t N>
constexpr NdArray< T, N, N > superdex::DNormalize (NdArray< T, N > const &v, T sqrNorm)
template<typename T>
NdArray< Simd< T, 4 >, 3 > superdex::DNormalize3 (Simd< T, 4 > const &v)
template<typename T>
constexpr NdArray< T, 3, 3 > superdex::Dot (NdArray< T, 3, 3 > const &a, NdArray< T, 3, 3 > const &b)
template<typename T, size_t N, size_t M, size_t L>
constexpr NdArray< T, N, L > superdex::Dot (NdArray< T, N, M > const &a, NdArray< T, M, L > const &B)
template<typename T>
Simd< T, 4 > superdex::Dot2x2 (Simd< T, 4 > const &a, Simd< T, 4 > const &b)
template<typename T, size_t D0A, size_t D0B>
NdArray< Simd< T, 4 >, 3 > superdex::Dot3x3 (NdArray< Simd< T, 4 >, D0A > const &a, NdArray< Simd< T, 4 >, D0B > const &b)
template<typename T>
NdArray< Simd< T, 4 >, 4 > superdex::Dot4x4 (NdArray< Simd< T, 4 >, 4 > const &a, NdArray< Simd< T, 4 >, 4 > const &b)
template<typename T>
constexpr NdArray< T, 3 > superdex::DotMatVec (NdArray< T, 3, 3 > const &a, NdArray< T, 3 > const &b)
template<typename T, size_t N, size_t M>
constexpr NdArray< T, N > superdex::DotMatVec (NdArray< T, N, M > const &a, NdArray< T, M > const &b)
template<typename T, size_t N, size_t M>
constexpr NdArray< T, N > superdex::DotMatVec (NdArray< T, N, M > const &a, Span< T const > b)
template<typename T, size_t N, size_t M>
void superdex::DotMatVec (NdArray< T, N, M > const &a, Span< T const > b, Span< T > out)
template<typename T, size_t D0>
Simd< T, 4 > superdex::DotMatVec3x3 (NdArray< Simd< T, 4 >, D0 > const &m, Simd< T, 4 > v)
template<size_t N, typename T, size_t D0>
Simd< T, 4 > superdex::DotMatVec3xN (NdArray< Simd< T, 4 >, D0 > const &m, Simd< T, 4 > v)
template<typename T>
Simd< T, 4 > superdex::DotMatVec4x4 (NdArray< Simd< T, 4 >, 4 > const &m, Simd< T, 4 > v)
template<typename T, size_t N, size_t M>
constexpr NdArray< T, M > superdex::DotVecMat (NdArray< T, N > const &a, NdArray< T, N, M > const &b)
template<typename T>
Simd< T, 4 > superdex::DotVecMat2x3 (Simd< T, 4 > v, NdArray< Simd< T, 4 >, 2 > const &m)
template<typename T, size_t D0>
Simd< T, 4 > superdex::DotVecMat3x3 (Simd< T, 4 > v, NdArray< Simd< T, 4 >, D0 > const &m)
template<typename T>
Simd< T, 4 > superdex::DotVecMat4x4 (Simd< T, 4 > a, NdArray< Simd< T, 4 >, 4 > const &b)
template<size_t N, typename T = real>
constexpr NdArray< T, N, N > superdex::Eye ()
template<typename T>
constexpr NdArray< T, 2, 2 > superdex::Invert (NdArray< T, 2, 2 > const &a)
template<typename T>
constexpr NdArray< T, 2, 2 > superdex::Invert (NdArray< T, 2, 2 > const &a, T det)
template<typename T>
constexpr NdArray< T, 3, 3 > superdex::Invert (NdArray< T, 3, 3 > const &a)
template<typename T>
constexpr NdArray< T, 3, 3 > superdex::Invert (NdArray< T, 3, 3 > const &a, T det)
template<typename T>
constexpr NdArray< T, 4, 4 > superdex::Invert (NdArray< T, 4, 4 > const &A)
template<typename T>
Simd< T, 4 > superdex::Invert2x2 (Simd< T, 4 > const &mat, T det)
template<typename T>
NdArray< Simd< T, 4 >, 3 > superdex::Invert3x3 (NdArray< Simd< T, 4 >, 3 > const &mat)
template<typename T>
NdArray< Simd< T, 4 >, 3 > superdex::Invert3x3 (NdArray< Simd< T, 4 >, 3 > const &mat, Simd< T, 4 > det)
template<typename T>
NdArray< Simd< T, 4 >, 3 > superdex::Invert3x3 (NdArray< Simd< T, 4 >, 3 > const &mat, T det)
template<typename T>
constexpr NdArray< Simd< T, 4 >, 4 > superdex::Invert4x4 (NdArray< Simd< T, 4 >, 4 > const &A)
template<typename T>
constexpr void superdex::InvertRowMajor4x4 (T const m[16], T invOut[16])
template<typename T>
NdArray< Simd< T, 4 >, 4 > superdex::InvertTransformation (NdArray< Simd< T, 4 >, 4 > const &mat)
template<typename T>
NdArray< Simd< T, 4 >, 4 > superdex::InvertTransformationTransposed (NdArray< Simd< T, 4 >, 4 > const &mat)
template<typename T>
constexpr Simd< T, 4 > superdex::InvSkew3 (NdArray< Simd< T, 4 >, 3 > const &matrix)
template<typename T, size_t D0, size_t D1>
constexpr auto superdex::LargestRow (NdArray< T, D0, D1 > const &A, T *sqrNorm=nullptr)
auto superdex::LargestRowColSym2x2 (VSymMatrix2x2r A, Vec4r &outNormSqr)
auto superdex::LargestRowColSym3x3 (VSymMatrix3x3r A, Vec4r &outNormSqr)
template<typename T>
constexpr T superdex::Minor4x4 (T const m[16], int r0, int r1, int r2, int c0, int c1, int c2)
template<typename T, size_t N, size_t M>
superdex::Norm (NdArray< T, N, M > const &a)
template<typename T, size_t D0, int D1, std::enable_if_t< D0 > = 3 && D1 >= 3, superdex::ConceptMatch>
superdex::Norm3x3 (NdArray< Simd< T, D1 >, D0 > const &a)
template<typename T, size_t N, size_t M>
constexpr T superdex::NormSqr (NdArray< T, N, M > const &a)
template<typename T, size_t D0, int D1, std::enable_if_t< D0 > = 3 && D1 >= 3, superdex::ConceptMatch>
superdex::NormSqr3x3 (NdArray< Simd< T, D1 >, D0 > const &a)
template<typename T>
constexpr NdArray< T, 2, 2 > superdex::Outer (NdArray< T, 2 > const &a, NdArray< T, 2 > const &b)
template<typename T>
constexpr NdArray< T, 3, 2 > superdex::Outer (NdArray< T, 3 > const &a, NdArray< T, 2 > const &b)
template<typename T>
constexpr NdArray< T, 3, 3 > superdex::Outer (NdArray< T, 3 > const &a, NdArray< T, 3 > const &b)
template<typename T>
NdArray< Simd< T, 4 >, 2, 2 > superdex::Outer2 (Simd< T, 4 > const &a, Simd< T, 4 > const &b)
template<typename T>
NdArray< Simd< T, 4 >, 3, 3 > superdex::Outer3 (NdArray< Simd< T, 4 >, 3 > const &mat, Simd< T, 4 > const &vec)
template<typename T>
NdArray< Simd< T, 4 >, 3, 3, 3 > superdex::Outer3 (NdArray< Simd< T, 4 >, 3 > const &mat0, NdArray< Simd< T, 4 >, 3 > const &mat1)
template<typename T>
NdArray< Simd< T, 4 >, 3, 3, 3 > superdex::Outer3 (NdArray< Simd< T, 4 >, 3, 3 > const &ten, Simd< T, 4 > const &vec)
template<typename T>
NdArray< Simd< T, 4 >, 3 > superdex::Outer3 (Simd< T, 4 > a, Simd< T, 4 > b)
template<typename T>
NdArray< Simd< T, 4 >, 3, 3 > superdex::Outer3 (Simd< T, 4 > const &vec, NdArray< Simd< T, 4 >, 3 > const &mat)
template<typename T>
NdArray< Simd< T, 4 >, 3, 3, 3 > superdex::Outer3 (Simd< T, 4 > const &vec, NdArray< Simd< T, 4 >, 3, 3 > const &ten)
template<typename T>
NdArray< Simd< T, 4 >, 2 > superdex::OuterSym3 (Simd< T, 4 > a, Simd< T, 4 > b)
template<typename T>
void superdex::PseudoInvert (NdArray< T, 3, 2 > const &a, NdArray< T, 2, 3 > *outInv, T *outDet)
template<typename T>
constexpr NdArray< T, 3, 3 > superdex::Skew (NdArray< T, 3 > const &v)
template<typename T>
constexpr NdArray< Simd< T, 4 >, 3 > superdex::Skew3 (Simd< T, 4 > const &vector)
template<typename T>
constexpr NdArray< T, 2, 2 > superdex::SymMatrix2x2 (T a00, T a01, T a11)
template<typename T, size_t DimTotal = 3, size_t DimTrace = DimTotal>
constexpr T superdex::Trace (NdArray< T, DimTotal, DimTotal > const &mat)
template<typename T>
constexpr T superdex::Trace2x2 (Simd< T, 4 > const &mat)
template<typename T>
constexpr T superdex::Trace3x3 (NdArray< Simd< T, 4 >, 3 > const &mat)
template<typename T, size_t N, size_t M>
constexpr NdArray< T, M, N > superdex::Transpose (NdArray< T, N, M > const &mat)
template<typename T>
Simd< T, 4 > superdex::Transpose2x2 (Simd< T, 4 > const &m)
template<typename T, size_t D0>
NdArray< Simd< T, 4 >, 3 > superdex::Transpose3x3 (NdArray< Simd< T, 4 >, D0 > const &m)
template<typename T>
NdArray< Simd< T, 4 >, 4 > superdex::Transpose4x4 (NdArray< Simd< T, 4 >, 4 > const &m)
template<typename T, size_t N>
Simd< T, 4 > superdex::VDet3x3 (NdArray< Simd< T, 4 >, N > const &A)
template<size_t N, typename T>
NdArray< Simd< T, 4 >, N > superdex::VDiagonalMatrix (Simd< T, 4 > const &diagonalVector)
template<size_t N, typename T>
NdArray< Simd< T, 4 >, N > superdex::VDiagonalMatrix (T valueOnDiagonal)
template<typename T = real>
NdArray< Simd< T, 4 >, 3, 3 > superdex::VDSkew3 ()
template<size_t N, typename T = real>
NdArray< Simd< T, 4 >, N > superdex::VEye ()