Row< N, ELT, STRIDE > Class Template Reference

Generic Row. More...

#include <Row.h>

List of all members.

Classes

struct  EltResult
struct  Result
struct  Substitute

Public Types

enum  {
  NRows = 1, NCols = N, NPackedElements = N, NActualElements = N * STRIDE,
  NActualScalars = CNT<E>::NActualScalars * NActualElements, RowSpacing = NActualElements, ColSpacing = STRIDE, ImagOffset = NTraits<ENumber>::ImagOffset,
  RealStrideFactor = 1, ArgDepth, IsScalar = 0, IsULessScalar = 0,
  IsNumber = 0, IsStdNumber = 0, IsPrecision = 0, SignInterpretation = CNT<E>::SignInterpretation
}
typedef Row< N, E, STRIDE > T
typedef Row< N, ENeg, STRIDE > TNeg
typedef Row< N,
EWithoutNegator, STRIDE > 
TWithoutNegator
typedef Row< N, EReal, STRIDE
*CNT< E >::RealStrideFactor > 
TReal
typedef Row< N, EImag, STRIDE
*CNT< E >::RealStrideFactor > 
TImag
typedef Row< N, EComplex, STRIDE > TComplex
typedef Vec< N, EHerm, STRIDE > THerm
typedef Vec< N, E, STRIDE > TPosTrans
typedef E TElement
typedef Row TRow
typedef E TCol
typedef Vec< N, ESqrt, 1 > TSqrt
typedef Row< N, EAbs, 1 > TAbs
typedef Row< N, EStandard, 1 > TStandard
typedef Vec< N, EInvert, 1 > TInvert
typedef Row< N, ENormalize, 1 > TNormalize
typedef SymMat< N, ESqHermT > TSqHermT
typedef EScalarNormSq TSqTHerm
typedef EScalar Scalar
typedef EULessScalar ULessScalar
typedef ENumber Number
typedef EStdNumber StdNumber
typedef EPrecision Precision
typedef EScalarNormSq ScalarNormSq

Public Member Functions

int size () const
int nrow () const
int ncol () const
ScalarNormSq scalarNormSqr () const
TSqrt sqrt () const
TAbs abs () const
TStandard standardize () const
EStandard sum () const
 Row ()
 Row (const Row &src)
Rowoperator= (const Row &src)
template<int SS>
 Row (const Row< N, E, SS > &src)
template<int SS>
 Row (const Row< N, ENeg, SS > &src)
template<class EE , int SS>
 Row (const Row< N, EE, SS > &vv)
 Row (const ELT &e)
 Row (const E &e0, const E &e1)
 Row (const E &e0, const E &e1, const E &e2)
 Row (const E &e0, const E &e1, const E &e2, const E &e3)
 Row (const E &e0, const E &e1, const E &e2, const E &e3, const E &e4)
 Row (const E &e0, const E &e1, const E &e2, const E &e3, const E &e4, const E &e5)
 Row (const E &e0, const E &e1, const E &e2, const E &e3, const E &e4, const E &e5, const E &e6)
 Row (const E &e0, const E &e1, const E &e2, const E &e3, const E &e4, const E &e5, const E &e6, const E &e7)
 Row (const E &e0, const E &e1, const E &e2, const E &e3, const E &e4, const E &e5, const E &e6, const E &e7, const E &e8)
template<class EE >
 Row (const EE *p)
template<class EE >
Rowoperator= (const EE *p)
template<class EE , int SS>
Rowoperator= (const Row< N, EE, SS > &vv)
template<class EE , int SS>
Rowoperator+= (const Row< N, EE, SS > &r)
template<class EE , int SS>
Rowoperator+= (const Row< N, negator< EE >, SS > &r)
template<class EE , int SS>
Rowoperator-= (const Row< N, EE, SS > &r)
template<class EE , int SS>
Rowoperator-= (const Row< N, negator< EE >, SS > &r)
template<class EE , int SS>
Row< N, typename CNT< E >
::template Result< EE >::Add > 
conformingAdd (const Row< N, EE, SS > &r) const
template<class EE , int SS>
Row< N, typename CNT< E >
::template Result< EE >::Sub > 
conformingSubtract (const Row< N, EE, SS > &r) const
template<class EE , int SS>
CNT< E >::template Result< EE >
::Mul 
conformingMultiply (const Vec< N, EE, SS > &r) const
template<int MatNCol, class EE , int CS, int RS>
Row< MatNCol, typename CNT< E >
::template Result< EE >::Mul > 
conformingMultiply (const Mat< N, MatNCol, EE, CS, RS > &m) const
const E & operator[] (int i) const
E & operator[] (int i)
const E & operator() (int i) const
E & operator() (int i)
ScalarNormSq normSqr () const
CNT< ScalarNormSq >::TSqrt norm () const
TNormalize normalize () const
TInvert invert () const
const Rowoperator+ () const
const TNegoperator- () const
TNegoperator- ()
const THermoperator~ () const
THermoperator~ ()
const TNegnegate () const
TNegupdNegate ()
const THermtranspose () const
THermupdTranspose ()
const TPosTranspositionalTranspose () const
TPosTransupdPositionalTranspose ()
const TRealreal () const
TRealreal ()
const TImagimag () const
TImagimag ()
const TWithoutNegatorcastAwayNegatorIfAny () const
TWithoutNegatorupdCastAwayNegatorIfAny ()
template<class EE >
Row< N, typename CNT< E >
::template Result< EE >::Mul > 
scalarMultiply (const EE &e) const
template<class EE >
Row< N, typename CNT< EE >
::template Result< E >::Mul > 
scalarMultiplyFromLeft (const EE &e) const
template<class EE >
Row< N, typename CNT< E >
::template Result< EE >::Dvd > 
scalarDivide (const EE &e) const
template<class EE >
Row< N, typename CNT< EE >
::template Result< E >::Dvd > 
scalarDivideFromLeft (const EE &e) const
template<class EE >
Row< N, typename CNT< E >
::template Result< EE >::Add > 
scalarAdd (const EE &e) const
template<class EE >
Row< N, typename CNT< E >
::template Result< EE >::Sub > 
scalarSubtract (const EE &e) const
template<class EE >
Row< N, typename CNT< EE >
::template Result< E >::Sub > 
scalarSubtractFromLeft (const EE &e) const
template<class EE >
Rowoperator= (const EE &e)
template<class EE >
Rowoperator+= (const EE &e)
template<class EE >
Rowoperator-= (const EE &e)
template<class EE >
Rowoperator*= (const EE &e)
template<class EE >
Rowoperator/= (const EE &e)
template<class EE >
RowscalarEq (const EE &ee)
template<class EE >
RowscalarPlusEq (const EE &ee)
template<class EE >
RowscalarMinusEq (const EE &ee)
template<class EE >
RowscalarInverseMinusEq (const EE &ee)
template<class EE >
RowscalarTimesEq (const EE &ee)
template<class EE >
RowscalarDivideEq (const EE &ee)
template<class EE >
RowscalarInverseDivideEq (const EE &ee)
void setToNaN ()
void setToZero ()
template<int NN>
const Row< NN, ELT, STRIDE > & getSubRow (int j) const
template<int NN>
Row< NN, ELT, STRIDE > & updSubRow (int j)
Row< N-1, ELT, 1 > drop1 (int p) const
template<class EE >
Row< N+1, ELT, 1 > append1 (const EE &v) const
template<class EE >
Row< N+1, ELT, 1 > insert1 (int p, const EE &v) const
bool isNaN () const
 Return true if any element of this Row contains a NaN anywhere.
bool isInf () const
 Return true if any element of this Row contains a +Inf or -Inf somewhere but no element contains a NaN anywhere.
bool isFinite () const
 Return true if no element contains an Infinity or a NaN.
template<class E2 , int CS2>
bool isNumericallyEqual (const Row< N, E2, CS2 > &r, double tol) const
 Test whether this row vector is numerically equal to some other row with the same shape, using a specified tolerance.
template<class E2 , int CS2>
bool isNumericallyEqual (const Row< N, E2, CS2 > &r) const
 Test whether this row vector is numerically equal to some other row with the same shape, using a default tolerance which is the looser of the default tolerances of the two objects being compared.
bool isNumericallyEqual (const ELT &e, double tol=getDefaultTolerance()) const
 Test whether every element of this row vector is numerically equal to the given element, using either a specified tolerance or the row's default tolerance (which is always the same or looser than the default tolerance for one of its elements).

Static Public Member Functions

static const RowgetAs (const ELT *p)
static RowupdAs (ELT *p)
template<int NN>
static const RowgetSubRow (const Row< NN, ELT, STRIDE > &r, int j)
template<int NN>
static RowupdSubRow (Row< NN, ELT, STRIDE > &r, int j)
static Row< N, ELT, 1 > getNaN ()
static double getDefaultTolerance ()
 For approximate comparisions, the default tolerance to use for a vector is the same as its elements' default tolerance.

Detailed Description

template<int N, class ELT, int STRIDE>
class SimTK::Row< N, ELT, STRIDE >

Generic Row.


Member Typedef Documentation

typedef ENumber Number
typedef EPrecision Precision
typedef EScalar Scalar
typedef EScalarNormSq ScalarNormSq
typedef EStdNumber StdNumber
typedef Row<N,E,STRIDE> T
typedef Row<N,EAbs,1> TAbs
typedef E TCol
typedef Row<N,EComplex,STRIDE> TComplex
typedef E TElement
typedef Vec<N,EHerm,STRIDE> THerm
typedef Row<N,EImag,STRIDE*CNT<E>::RealStrideFactor> TImag
typedef Vec<N,EInvert,1> TInvert
typedef Row<N,ENeg,STRIDE> TNeg
typedef Row<N,ENormalize,1> TNormalize
typedef Vec<N,E,STRIDE> TPosTrans
typedef Row<N,EReal,STRIDE*CNT<E>::RealStrideFactor> TReal
typedef Row TRow
typedef SymMat<N,ESqHermT> TSqHermT
typedef Vec<N,ESqrt,1> TSqrt
typedef EScalarNormSq TSqTHerm
typedef Row<N,EStandard,1> TStandard
typedef Row<N,EWithoutNegator,STRIDE> TWithoutNegator
typedef EULessScalar ULessScalar

Member Enumeration Documentation

anonymous enum
Enumerator:
NRows 
NCols 
NPackedElements 
NActualElements 
NActualScalars 
RowSpacing 
ColSpacing 
ImagOffset 
RealStrideFactor 
ArgDepth 
IsScalar 
IsULessScalar 
IsNumber 
IsStdNumber 
IsPrecision 
SignInterpretation 

Constructor & Destructor Documentation

Row (  )  [inline]
Row ( const Row< N, ELT, STRIDE > &  src  )  [inline]
Row ( const Row< N, E, SS > &  src  )  [inline]
Row ( const Row< N, ENeg, SS > &  src  )  [inline]
Row ( const Row< N, EE, SS > &  vv  )  [inline, explicit]
Row ( const ELT &  e  )  [inline, explicit]
Row ( const E &  e0,
const E &  e1 
) [inline]
Row ( const E &  e0,
const E &  e1,
const E &  e2 
) [inline]
Row ( const E &  e0,
const E &  e1,
const E &  e2,
const E &  e3 
) [inline]
Row ( const E &  e0,
const E &  e1,
const E &  e2,
const E &  e3,
const E &  e4 
) [inline]
Row ( const E &  e0,
const E &  e1,
const E &  e2,
const E &  e3,
const E &  e4,
const E &  e5 
) [inline]
Row ( const E &  e0,
const E &  e1,
const E &  e2,
const E &  e3,
const E &  e4,
const E &  e5,
const E &  e6 
) [inline]
Row ( const E &  e0,
const E &  e1,
const E &  e2,
const E &  e3,
const E &  e4,
const E &  e5,
const E &  e6,
const E &  e7 
) [inline]
Row ( const E &  e0,
const E &  e1,
const E &  e2,
const E &  e3,
const E &  e4,
const E &  e5,
const E &  e6,
const E &  e7,
const E &  e8 
) [inline]
Row ( const EE *  p  )  [inline, explicit]

Member Function Documentation

TAbs abs (  )  const [inline]

Reimplemented in UnitRow< S >.

Referenced by SimTK::abs(), and UnitRow< S >::abs().

Row<N+1,ELT,1> append1 ( const EE &  v  )  const [inline]
const TWithoutNegator& castAwayNegatorIfAny (  )  const [inline]
Row<N,typename CNT<E>::template Result<EE>::Add> conformingAdd ( const Row< N, EE, SS > &  r  )  const [inline]
Row<MatNCol,typename CNT<E>::template Result<EE>::Mul> conformingMultiply ( const Mat< N, MatNCol, EE, CS, RS > &  m  )  const [inline]
CNT<E>::template Result<EE>::Mul conformingMultiply ( const Vec< N, EE, SS > &  r  )  const [inline]
Row<N,typename CNT<E>::template Result<EE>::Sub> conformingSubtract ( const Row< N, EE, SS > &  r  )  const [inline]
Row<N-1,ELT,1> drop1 ( int  p  )  const [inline]
static const Row& getAs ( const ELT *  p  )  [inline, static]
static double getDefaultTolerance (  )  [inline, static]

For approximate comparisions, the default tolerance to use for a vector is the same as its elements' default tolerance.

Referenced by Row< 3, Real, S >::getDefaultTolerance(), and Row< 3, Real, S >::isNumericallyEqual().

static Row<N,ELT,1> getNaN (  )  [inline, static]
static const Row& getSubRow ( const Row< NN, ELT, STRIDE > &  r,
int  j 
) [inline, static]
const Row<NN,ELT,STRIDE>& getSubRow ( int  j  )  const [inline]
TImag& imag (  )  [inline]
const TImag& imag (  )  const [inline]
Row<N+1,ELT,1> insert1 ( int  p,
const EE &  v 
) const [inline]
TInvert invert (  )  const [inline]
bool isFinite (  )  const [inline]

Return true if no element contains an Infinity or a NaN.

bool isInf (  )  const [inline]

Return true if any element of this Row contains a +Inf or -Inf somewhere but no element contains a NaN anywhere.

bool isNaN (  )  const [inline]

Return true if any element of this Row contains a NaN anywhere.

bool isNumericallyEqual ( const ELT &  e,
double  tol = getDefaultTolerance() 
) const [inline]

Test whether every element of this row vector is numerically equal to the given element, using either a specified tolerance or the row's default tolerance (which is always the same or looser than the default tolerance for one of its elements).

bool isNumericallyEqual ( const Row< N, E2, CS2 > &  r  )  const [inline]

Test whether this row vector is numerically equal to some other row with the same shape, using a default tolerance which is the looser of the default tolerances of the two objects being compared.

bool isNumericallyEqual ( const Row< N, E2, CS2 > &  r,
double  tol 
) const [inline]

Test whether this row vector is numerically equal to some other row with the same shape, using a specified tolerance.

Referenced by Row< 3, Real, S >::isNumericallyEqual().

int ncol (  )  const [inline]
const TNeg& negate (  )  const [inline]

Reimplemented in UnitRow< S >.

Referenced by Row< 3, Real, S >::operator-().

CNT<ScalarNormSq>::TSqrt norm (  )  const [inline]
TNormalize normalize (  )  const [inline]
ScalarNormSq normSqr (  )  const [inline]
int nrow (  )  const [inline]
E& operator() ( int  i  )  [inline]
const E& operator() ( int  i  )  const [inline]

Reimplemented in UnitRow< S >.

Row& operator*= ( const EE &  e  )  [inline]
const Row& operator+ (  )  const [inline]
Row& operator+= ( const EE &  e  )  [inline]
Row& operator+= ( const Row< N, negator< EE >, SS > &  r  )  [inline]
Row& operator+= ( const Row< N, EE, SS > &  r  )  [inline]
TNeg& operator- (  )  [inline]
const TNeg& operator- (  )  const [inline]

Reimplemented in UnitRow< S >.

Row& operator-= ( const EE &  e  )  [inline]
Row& operator-= ( const Row< N, negator< EE >, SS > &  r  )  [inline]
Row& operator-= ( const Row< N, EE, SS > &  r  )  [inline]
Row& operator/= ( const EE &  e  )  [inline]
Row& operator= ( const EE &  e  )  [inline]
Row& operator= ( const Row< N, EE, SS > &  vv  )  [inline]
Row& operator= ( const EE *  p  )  [inline]
Row& operator= ( const Row< N, ELT, STRIDE > &  src  )  [inline]
E& operator[] ( int  i  )  [inline]
const E& operator[] ( int  i  )  const [inline]

Reimplemented in UnitRow< S >.

THerm& operator~ (  )  [inline]

Reimplemented in UnitRow< S >.

const THerm& operator~ (  )  const [inline]

Reimplemented in UnitRow< S >.

const TPosTrans& positionalTranspose (  )  const [inline]
TReal& real (  )  [inline]
const TReal& real (  )  const [inline]
Row<N, typename CNT<E>::template Result<EE>::Add> scalarAdd ( const EE &  e  )  const [inline]
Row<N, typename CNT<E>::template Result<EE>::Dvd> scalarDivide ( const EE &  e  )  const [inline]
Row& scalarDivideEq ( const EE &  ee  )  [inline]
Row<N, typename CNT<EE>::template Result<E>::Dvd> scalarDivideFromLeft ( const EE &  e  )  const [inline]
Row& scalarEq ( const EE &  ee  )  [inline]
Row& scalarInverseDivideEq ( const EE &  ee  )  [inline]
Row& scalarInverseMinusEq ( const EE &  ee  )  [inline]
Row& scalarMinusEq ( const EE &  ee  )  [inline]
Row<N, typename CNT<E>::template Result<EE>::Mul> scalarMultiply ( const EE &  e  )  const [inline]
Row<N, typename CNT<EE>::template Result<E>::Mul> scalarMultiplyFromLeft ( const EE &  e  )  const [inline]
ScalarNormSq scalarNormSqr (  )  const [inline]
Row& scalarPlusEq ( const EE &  ee  )  [inline]
Row<N, typename CNT<E>::template Result<EE>::Sub> scalarSubtract ( const EE &  e  )  const [inline]
Row<N, typename CNT<EE>::template Result<E>::Sub> scalarSubtractFromLeft ( const EE &  e  )  const [inline]
Row& scalarTimesEq ( const EE &  ee  )  [inline]
void setToNaN (  )  [inline]

Referenced by Row< 3, Real, S >::Row().

void setToZero (  )  [inline]
int size (  )  const [inline]
TSqrt sqrt (  )  const [inline]

Referenced by Row< 3, Real, S >::norm().

TStandard standardize (  )  const [inline]

Referenced by Row< 3, Real, S >::sum().

EStandard sum (  )  const [inline]
const THerm& transpose (  )  const [inline]
static Row& updAs ( ELT *  p  )  [inline, static]
TWithoutNegator& updCastAwayNegatorIfAny (  )  [inline]
TNeg& updNegate (  )  [inline]
TPosTrans& updPositionalTranspose (  )  [inline]
static Row& updSubRow ( Row< NN, ELT, STRIDE > &  r,
int  j 
) [inline, static]
Row<NN,ELT,STRIDE>& updSubRow ( int  j  )  [inline]
THerm& updTranspose (  )  [inline]

The documentation for this class was generated from the following file:

Generated on Wed Dec 30 11:05:28 2009 for SimTKcore by  doxygen 1.6.1