Simbody
3.7
|
This file defines global functions and class members which use a mix of Vec, Row, and Mat types and hence need to wait until everything is defined. More...
Go to the source code of this file.
Namespaces | |
SimTK | |
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with other symbols. | |
Functions | |
template<int M, class EL , int CSL, int RSL, class ER , int RSR> | |
bool | SimTK::operator== (const Mat< M, M, EL, CSL, RSL > &l, const SymMat< M, ER, RSR > &r) |
template<int M, class EL , int CSL, int RSL, class ER , int RSR> | |
bool | SimTK::operator!= (const Mat< M, M, EL, CSL, RSL > &l, const SymMat< M, ER, RSR > &r) |
template<int M, class EL , int RSL, class ER , int CSR, int RSR> | |
bool | SimTK::operator== (const SymMat< M, EL, RSL > &l, const Mat< M, M, ER, CSR, RSR > &r) |
template<int M, class EL , int RSL, class ER , int CSR, int RSR> | |
bool | SimTK::operator!= (const SymMat< M, EL, RSL > &l, const Mat< M, M, ER, CSR, RSR > &r) |
template<int M, class E1 , int S1, class E2 , int S2> | |
CNT< typename CNT< E1 >::THerm >::template Result< E2 >::Mul | SimTK::dot (const Vec< M, E1, S1 > &r, const Vec< M, E2, S2 > &v) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< typename CNT< E1 >::THerm >::template Result< E2 >::Mul | SimTK::dot (const Vec< 1, E1, S1 > &r, const Vec< 1, E2, S2 > &v) |
template<int N, class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::operator* (const Row< N, E1, S1 > &r, const Vec< N, E2, S2 > &v) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::operator* (const Row< 1, E1, S1 > &r, const Vec< 1, E2, S2 > &v) |
template<int N, class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::dot (const Row< N, E1, S1 > &r, const Vec< N, E2, S2 > &v) |
template<int M, class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::dot (const Vec< M, E1, S1 > &v, const Row< M, E2, S2 > &r) |
template<int N, class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::dot (const Row< N, E1, S1 > &r, const Row< N, E2, S2 > &s) |
template<int M, class E1 , int S1, class E2 , int S2> | |
Mat< M, M, typename CNT< E1 >::template Result< typename CNT< E2 >::THerm >::Mul > | SimTK::outer (const Vec< M, E1, S1 > &v, const Vec< M, E2, S2 > &w) |
template<int M, class E1 , int S1, class E2 , int S2> | |
Vec< M, E1, S1 >::template Result< Row< M, E2, S2 > >::Mul | SimTK::operator* (const Vec< M, E1, S1 > &v, const Row< M, E2, S2 > &r) |
template<int M, class E1 , int S1, class E2 , int S2> | |
Mat< M, M, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::outer (const Vec< M, E1, S1 > &v, const Row< M, E2, S2 > &r) |
template<int M, class E1 , int S1, class E2 , int S2> | |
Mat< M, M, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::outer (const Row< M, E1, S1 > &r, const Vec< M, E2, S2 > &v) |
template<int M, class E1 , int S1, class E2 , int S2> | |
Mat< M, M, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::outer (const Row< M, E1, S1 > &r, const Row< M, E2, S2 > &s) |
template<int M, int N, class ME , int CS, int RS, class E , int S> | |
Mat< M, N, ME, CS, RS >::template Result< Vec< N, E, S > >::Mul | SimTK::operator* (const Mat< M, N, ME, CS, RS > &m, const Vec< N, E, S > &v) |
template<int M, class E , int S, int N, class ME , int CS, int RS> | |
Row< M, E, S >::template Result< Mat< M, N, ME, CS, RS > >::Mul | SimTK::operator* (const Row< M, E, S > &r, const Mat< M, N, ME, CS, RS > &m) |
template<int N, class ME , int RS, class E , int S> | |
SymMat< N, ME, RS >::template Result< Vec< N, E, S > >::Mul | SimTK::operator* (const SymMat< N, ME, RS > &m, const Vec< N, E, S > &v) |
template<class ME , int RS, class E , int S> | |
SymMat< 1, ME, RS >::template Result< Vec< 1, E, S > >::Mul | SimTK::operator* (const SymMat< 1, ME, RS > &m, const Vec< 1, E, S > &v) |
template<class ME , int RS, class E , int S> | |
SymMat< 2, ME, RS >::template Result< Vec< 2, E, S > >::Mul | SimTK::operator* (const SymMat< 2, ME, RS > &m, const Vec< 2, E, S > &v) |
template<class ME , int RS, class E , int S> | |
SymMat< 3, ME, RS >::template Result< Vec< 3, E, S > >::Mul | SimTK::operator* (const SymMat< 3, ME, RS > &m, const Vec< 3, E, S > &v) |
template<int M, class E , int S, class ME , int RS> | |
Row< M, E, S >::template Result< SymMat< M, ME, RS > >::Mul | SimTK::operator* (const Row< M, E, S > &r, const SymMat< M, ME, RS > &m) |
template<class E , int S, class ME , int RS> | |
Row< 1, E, S >::template Result< SymMat< 1, ME, RS > >::Mul | SimTK::operator* (const Row< 1, E, S > &r, const SymMat< 1, ME, RS > &m) |
template<class E , int S, class ME , int RS> | |
Row< 2, E, S >::template Result< SymMat< 2, ME, RS > >::Mul | SimTK::operator* (const Row< 2, E, S > &r, const SymMat< 2, ME, RS > &m) |
template<class E , int S, class ME , int RS> | |
Row< 3, E, S >::template Result< SymMat< 3, ME, RS > >::Mul | SimTK::operator* (const Row< 3, E, S > &r, const SymMat< 3, ME, RS > &m) |
template<int M, class E1 , int S1, int N, class E2 , int S2> | |
Vec< M, E1, S1 >::template Result< Row< N, E2, S2 > >::MulNon | SimTK::operator* (const Vec< M, E1, S1 > &v, const Row< N, E2, S2 > &r) |
template<int M, class E1 , int S1, int MM, int NN, class E2 , int CS2, int RS2> | |
Vec< M, E1, S1 >::template Result< Mat< MM, NN, E2, CS2, RS2 > >::MulNon | SimTK::operator* (const Vec< M, E1, S1 > &v, const Mat< MM, NN, E2, CS2, RS2 > &m) |
template<int M, class E1 , int S1, int MM, class E2 , int RS2> | |
Vec< M, E1, S1 >::template Result< SymMat< MM, E2, RS2 > >::MulNon | SimTK::operator* (const Vec< M, E1, S1 > &v, const SymMat< MM, E2, RS2 > &m) |
template<int M, class E1 , int S1, int MM, class E2 , int S2> | |
Vec< M, E1, S1 >::template Result< Vec< MM, E2, S2 > >::MulNon | SimTK::operator* (const Vec< M, E1, S1 > &v1, const Vec< MM, E2, S2 > &v2) |
template<int M, class E , int S, int MM, int NN, class ME , int CS, int RS> | |
Row< M, E, S >::template Result< Mat< MM, NN, ME, CS, RS > >::MulNon | SimTK::operator* (const Row< M, E, S > &r, const Mat< MM, NN, ME, CS, RS > &m) |
template<int N, class E1 , int S1, int M, class E2 , int S2> | |
Row< N, E1, S1 >::template Result< Vec< M, E2, S2 > >::MulNon | SimTK::operator* (const Row< N, E1, S1 > &r, const Vec< M, E2, S2 > &v) |
template<int N1, class E1 , int S1, int N2, class E2 , int S2> | |
Row< N1, E1, S1 >::template Result< Row< N2, E2, S2 > >::MulNon | SimTK::operator* (const Row< N1, E1, S1 > &r1, const Row< N2, E2, S2 > &r2) |
template<int M, int N, class ME , int CS, int RS, int MM, class E , int S> | |
Mat< M, N, ME, CS, RS >::template Result< Vec< MM, E, S > >::MulNon | SimTK::operator* (const Mat< M, N, ME, CS, RS > &m, const Vec< MM, E, S > &v) |
template<int M, int N, class ME , int CS, int RS, int NN, class E , int S> | |
Mat< M, N, ME, CS, RS >::template Result< Row< NN, E, S > >::MulNon | SimTK::operator* (const Mat< M, N, ME, CS, RS > &m, const Row< NN, E, S > &r) |
template<int M, int N, class ME , int CS, int RS, int Dim, class E , int S> | |
Mat< M, N, ME, CS, RS >::template Result< SymMat< Dim, E, S > >::MulNon | SimTK::operator* (const Mat< M, N, ME, CS, RS > &m, const SymMat< Dim, E, S > &sy) |
template<class E1 , int S1, class E2 , int S2> | |
Vec< 3, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::cross (const Vec< 3, E1, S1 > &a, const Vec< 3, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
Vec< 3, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::operator% (const Vec< 3, E1, S1 > &a, const Vec< 3, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
Row< 3, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::cross (const Vec< 3, E1, S1 > &a, const Row< 3, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
Row< 3, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::operator% (const Vec< 3, E1, S1 > &a, const Row< 3, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
Row< 3, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::cross (const Row< 3, E1, S1 > &a, const Vec< 3, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
Row< 3, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::operator% (const Row< 3, E1, S1 > &a, const Vec< 3, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
Row< 3, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::cross (const Row< 3, E1, S1 > &a, const Row< 3, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
Row< 3, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::operator% (const Row< 3, E1, S1 > &a, const Row< 3, E2, S2 > &b) |
template<class E1 , int S1, int N, class E2 , int CS, int RS> | |
Mat< 3, N, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::cross (const Vec< 3, E1, S1 > &v, const Mat< 3, N, E2, CS, RS > &m) |
template<class E1 , int S1, int N, class E2 , int CS, int RS> | |
Mat< 3, N, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::operator% (const Vec< 3, E1, S1 > &v, const Mat< 3, N, E2, CS, RS > &m) |
template<class E1 , int S1, int N, class E2 , int S2, int S3> | |
Row< N, Vec< 3, typename CNT< E1 >::template Result< E2 >::Mul > > | SimTK::cross (const Vec< 3, E1, S1 > &v, const Row< N, Vec< 3, E2, S2 >, S3 > &m) |
template<class E1 , int S1, class E2 , int S2, int S3> | |
Row< 3, Vec< 3, typename CNT< E1 >::template Result< E2 >::Mul > > | SimTK::cross (const Vec< 3, E1, S1 > &v, const Row< 3, Vec< 3, E2, S2 >, S3 > &m) |
template<class E1 , int S1, int N, class E2 , int S2, int S3> | |
Row< N, Vec< 3, typename CNT< E1 >::template Result< E2 >::Mul > > | SimTK::operator% (const Vec< 3, E1, S1 > &v, const Row< N, Vec< 3, E2, S2 >, S3 > &m) |
template<class E1 , int S1, class E2 , int S2, int S3> | |
Row< 3, Vec< 3, typename CNT< E1 >::template Result< E2 >::Mul > > | SimTK::operator% (const Vec< 3, E1, S1 > &v, const Row< 3, Vec< 3, E2, S2 >, S3 > &m) |
template<class EV , int SV, class EM , int RS> | |
Mat< 3, 3, typename CNT< EV >::template Result< EM >::Mul > | SimTK::cross (const Vec< 3, EV, SV > &v, const SymMat< 3, EM, RS > &s) |
template<class EV , int SV, class EM , int RS> | |
Mat< 3, 3, typename CNT< EV >::template Result< EM >::Mul > | SimTK::operator% (const Vec< 3, EV, SV > &v, const SymMat< 3, EM, RS > &s) |
template<class E1 , int S1, int N, class E2 , int CS, int RS> | |
Mat< 3, N, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::cross (const Row< 3, E1, S1 > &r, const Mat< 3, N, E2, CS, RS > &m) |
template<class E1 , int S1, int N, class E2 , int CS, int RS> | |
Mat< 3, N, typename CNT< E1 >::template Result< E2 >::Mul > | SimTK::operator% (const Row< 3, E1, S1 > &r, const Mat< 3, N, E2, CS, RS > &m) |
template<class EV , int SV, class EM , int RS> | |
Mat< 3, 3, typename CNT< EV >::template Result< EM >::Mul > | SimTK::cross (const Row< 3, EV, SV > &r, const SymMat< 3, EM, RS > &s) |
template<class EV , int SV, class EM , int RS> | |
Mat< 3, 3, typename CNT< EV >::template Result< EM >::Mul > | SimTK::operator% (const Row< 3, EV, SV > &r, const SymMat< 3, EM, RS > &s) |
template<int M, class EM , int CS, int RS, class EV , int S> | |
Mat< M, 3, typename CNT< EM >::template Result< EV >::Mul > | SimTK::cross (const Mat< M, 3, EM, CS, RS > &m, const Vec< 3, EV, S > &v) |
template<int M, class EM , int CS, int RS, class EV , int S> | |
Mat< M, 3, typename CNT< EM >::template Result< EV >::Mul > | SimTK::operator% (const Mat< M, 3, EM, CS, RS > &m, const Vec< 3, EV, S > &v) |
template<class EM , int RS, class EV , int SV> | |
Mat< 3, 3, typename CNT< EM >::template Result< EV >::Mul > | SimTK::cross (const SymMat< 3, EM, RS > &s, const Vec< 3, EV, SV > &v) |
template<class EM , int RS, class EV , int SV> | |
Mat< 3, 3, typename CNT< EM >::template Result< EV >::Mul > | SimTK::operator% (const SymMat< 3, EM, RS > &s, const Vec< 3, EV, SV > &v) |
template<int M, class EM , int CS, int RS, class ER , int S> | |
Mat< M, 3, typename CNT< EM >::template Result< ER >::Mul > | SimTK::cross (const Mat< M, 3, EM, CS, RS > &m, const Row< 3, ER, S > &r) |
template<int M, class EM , int CS, int RS, class ER , int S> | |
Mat< M, 3, typename CNT< EM >::template Result< ER >::Mul > | SimTK::operator% (const Mat< M, 3, EM, CS, RS > &m, const Row< 3, ER, S > &r) |
template<class EM , int RS, class EV , int SV> | |
Mat< 3, 3, typename CNT< EM >::template Result< EV >::Mul > | SimTK::cross (const SymMat< 3, EM, RS > &s, const Row< 3, EV, SV > &r) |
template<class EM , int RS, class EV , int SV> | |
Mat< 3, 3, typename CNT< EM >::template Result< EV >::Mul > | SimTK::operator% (const SymMat< 3, EM, RS > &s, const Row< 3, EV, SV > &r) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::cross (const Vec< 2, E1, S1 > &a, const Vec< 2, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::operator% (const Vec< 2, E1, S1 > &a, const Vec< 2, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::cross (const Row< 2, E1, S1 > &a, const Vec< 2, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::operator% (const Row< 2, E1, S1 > &a, const Vec< 2, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::cross (const Vec< 2, E1, S1 > &a, const Row< 2, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::operator% (const Vec< 2, E1, S1 > &a, const Row< 2, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::cross (const Row< 2, E1, S1 > &a, const Row< 2, E2, S2 > &b) |
template<class E1 , int S1, class E2 , int S2> | |
CNT< E1 >::template Result< E2 >::Mul | SimTK::operator% (const Row< 2, E1, S1 > &a, const Row< 2, E2, S2 > &b) |
template<class E , int S> | |
Mat< 3, 3, E > | SimTK::crossMat (const Vec< 3, E, S > &v) |
Calculate matrix M(v) such that M(v)*w = v % w. More... | |
template<class E , int S> | |
Mat< 3, 3, E > | SimTK::crossMat (const Vec< 3, negator< E >, S > &v) |
Specialize crossMat() for negated scalar types. More... | |
template<class E , int S> | |
Mat< 3, 3, E > | SimTK::crossMat (const Row< 3, E, S > &r) |
Form cross product matrix from a Row vector; 3 flops. More... | |
template<class E , int S> | |
Mat< 3, 3, E > | SimTK::crossMat (const Row< 3, negator< E >, S > &r) |
Form cross product matrix from a Row vector whose elements are negated scalars; 3 flops. More... | |
template<class E , int S> | |
Row< 2, E > | SimTK::crossMat (const Vec< 2, E, S > &v) |
Calculate 2D cross product matrix M(v) such that M(v)*w = v0*w1-v1*w0 = v % w (a scalar). More... | |
template<class E , int S> | |
Row< 2, E > | SimTK::crossMat (const Vec< 2, negator< E >, S > &v) |
Specialize 2D cross product matrix for negated scalar types; 1 flop. More... | |
template<class E , int S> | |
Row< 2, E > | SimTK::crossMat (const Row< 2, E, S > &r) |
Form 2D cross product matrix from a Row<2>; 1 flop. More... | |
template<class E , int S> | |
Row< 2, E > | SimTK::crossMat (const Row< 2, negator< E >, S > &r) |
Form 2D cross product matrix from a Row<2> with negated scalar elements; 1 flop. More... | |
template<class E , int S> | |
SymMat< 3, E > | SimTK::crossMatSq (const Vec< 3, E, S > &v) |
Calculate matrix S(v) such that S(v)*w = -v % (v % w) = (v % w) % v. More... | |
template<class E , int S> | |
SymMat< 3, E > | SimTK::crossMatSq (const Vec< 3, negator< E >, S > &v) |
template<class E , int S> | |
SymMat< 3, E > | SimTK::crossMatSq (const Row< 3, E, S > &r) |
template<class E , int S> | |
SymMat< 3, E > | SimTK::crossMatSq (const Row< 3, negator< E >, S > &r) |
template<class E , int CS, int RS> | |
E | SimTK::det (const Mat< 1, 1, E, CS, RS > &m) |
Special case Mat 1x1 determinant. No computation. More... | |
template<class E , int RS> | |
E | SimTK::det (const SymMat< 1, E, RS > &s) |
Special case SymMat 1x1 determinant. No computation. More... | |
template<class E , int CS, int RS> | |
E | SimTK::det (const Mat< 2, 2, E, CS, RS > &m) |
Special case Mat 2x2 determinant. 3 flops (if elements are Real). More... | |
template<class E , int RS> | |
E | SimTK::det (const SymMat< 2, E, RS > &s) |
Special case 2x2 SymMat determinant. 3 flops (if elements are Real). More... | |
template<class E , int CS, int RS> | |
E | SimTK::det (const Mat< 3, 3, E, CS, RS > &m) |
Special case Mat 3x3 determinant. 14 flops (if elements are Real). More... | |
template<class E , int RS> | |
E | SimTK::det (const SymMat< 3, E, RS > &s) |
Special case SymMat 3x3 determinant. 14 flops (if elements are Real). More... | |
template<int M, class E , int CS, int RS> | |
E | SimTK::det (const Mat< M, M, E, CS, RS > &m) |
Calculate the determinant of a square matrix larger than 3x3 by recursive template expansion. More... | |
template<int M, class E , int RS> | |
E | SimTK::det (const SymMat< M, E, RS > &s) |
Determinant of SymMat larger than 3x3. More... | |
template<class E , int CS, int RS> | |
Mat< 1, 1, E, CS, RS >::TInvert | SimTK::lapackInverse (const Mat< 1, 1, E, CS, RS > &m) |
Specialized 1x1 lapackInverse(): costs one divide. More... | |
template<int M, class E , int CS, int RS> | |
Mat< M, M, E, CS, RS >::TInvert | SimTK::lapackInverse (const Mat< M, M, E, CS, RS > &m) |
General inverse of small, fixed-size, square (mXm), non-singular matrix with scalar elements: use Lapack's LU routine with pivoting. More... | |
template<class E , int CS, int RS> | |
Mat< 1, 1, E, CS, RS >::TInvert | SimTK::inverse (const Mat< 1, 1, E, CS, RS > &m) |
Specialized 1x1 Mat inverse: costs one divide. More... | |
template<class E , int RS> | |
SymMat< 1, E, RS >::TInvert | SimTK::inverse (const SymMat< 1, E, RS > &s) |
Specialized 1x1 SymMat inverse: costs one divide. More... | |
template<class E , int CS, int RS> | |
Mat< 2, 2, E, CS, RS >::TInvert | SimTK::inverse (const Mat< 2, 2, E, CS, RS > &m) |
Specialized 2x2 Mat inverse: costs one divide plus 9 flops. More... | |
template<class E , int RS> | |
SymMat< 2, E, RS >::TInvert | SimTK::inverse (const SymMat< 2, E, RS > &s) |
Specialized 2x2 SymMat inverse: costs one divide plus 7 flops. More... | |
template<class E , int CS, int RS> | |
Mat< 3, 3, E, CS, RS >::TInvert | SimTK::inverse (const Mat< 3, 3, E, CS, RS > &m) |
Specialized 3x3 inverse: costs one divide plus 41 flops (for real-valued matrices). More... | |
template<class E , int RS> | |
SymMat< 3, E, RS >::TInvert | SimTK::inverse (const SymMat< 3, E, RS > &s) |
Specialized 3x3 inverse for symmetric or Hermitian: costs one divide plus 29 flops (for real-valued matrices). More... | |
template<int M, class E , int CS, int RS> | |
Mat< M, M, E, CS, RS >::TInvert | SimTK::inverse (const Mat< M, M, E, CS, RS > &m) |
For any matrix larger than 3x3, we just punt to the Lapack implementation. More... | |
This file defines global functions and class members which use a mix of Vec, Row, and Mat types and hence need to wait until everything is defined.
Some of them may depend on Lapack also.