1 #ifndef SimTK_SIMMATRIX_VECTORBASE_H_     2 #define SimTK_SIMMATRIX_VECTORBASE_H_    42 template <
class ELT> 
class VectorBase : 
public MatrixBase<ELT> {
    43     typedef MatrixBase<ELT>                             Base;
    49     typedef VectorBase<ELT>                             T;
    50     typedef VectorBase<typename CNT<ELT>::TAbs>         TAbs;
    51     typedef VectorBase<typename CNT<ELT>::TNeg>         TNeg;
    52     typedef RowVectorView_<typename CNT<ELT>::THerm>    THerm;
   169     { Base::template rowScaleInPlace<EE>(v); 
return *
this; }
   183                 "Vector::normRMS() only defined for scalar elements.");
   184         const int n = 
nrow();
   186             if (worstOne) *worstOne = -1;
   194             for (
int i=0; i<n; ++i) {
   196                 if (v2 > maxsq) maxsq=v2, *worstOne=i;
   200             for (
int i=0; i<n; ++i) {
   219             "Vector::weightedNormRMS() only defined for scalar elements"   221         const int n = 
nrow();
   224             if (worstOne) *worstOne = -1;
   232             for (
int i=0; i<n; ++i) {
   234                 if (wv2 > maxsq) maxsq=wv2, *worstOne=i;
   238             for (
int i=0; i<n; ++i) {
   254                 "Vector::normInf() only defined for scalar elements.");
   255         const int n = 
nrow();
   257             if (worstOne) *worstOne = -1;
   264             for (
int i=0; i<n; ++i) {
   266                 if (a > maxabs) maxabs=a, *worstOne=i;
   269             for (
int i=0; i<n; ++i) {
   271                 if (a > maxabs) maxabs=a;
   287             "Vector::weightedNormInf() only defined for scalar elements"   289         const int n = 
nrow();
   292             if (worstOne) *worstOne = -1;
   299             for (
int i=0; i<n; ++i) {
   301                 if (wv > maxabs) maxabs=wv, *worstOne=i;
   304             for (
int i=0; i<n; ++i) {
   306                 if (wv > maxabs) maxabs=wv;
   333     { Base::template elementwiseMultiplyInPlace<EE>(r); 
return *
this; }
   335     { Base::template elementwiseMultiply<EE>(v,out); }
   341     { Base::template elementwiseMultiplyFromLeftInPlace<EE>(r); 
return *
this; }
   342     template <
class EE> 
inline void    347         Base::template elementwiseMultiplyFromLeft<EE>(v,out);
   353         Base::template elementwiseMultiplyFromLeft<EE>(v,out); 
   359     { Base::template elementwiseDivideInPlace<EE>(r); 
return *
this; }
   361     { Base::template elementwiseDivide<EE>(v,out); }
   367     { Base::template elementwiseDivideFromLeftInPlace<EE>(r); 
return *
this; }
   368     template <
class EE> 
inline void    373         Base::template elementwiseDivideFromLeft<EE>(v,out);
   379         Base::template elementwiseDivideFromLeft<EE>(v,out); 
   475 #endif // SimTK_SIMMATRIX_VECTORBASE_H_ 
VectorBase & operator-=(const VectorBase &r)
Definition: VectorBase.h:148
 
VectorIterator< ELT, VectorBase< ELT > > begin()
Definition: VectorBase.h:458
 
VectorBase & operator/=(const StdNumber &t)
Definition: VectorBase.h:146
 
const TNeg & operator-() const
Definition: VectorBase.h:448
 
EScalarNormSq ScalarNormSq
Definition: MatrixBase.h:101
 
void elementwiseInvert(VectorBase< typename CNT< ELT >::TInvert > &out) const
Set supplied out[i] = this[i]^-1. 
Definition: VectorBase.h:320
 
CNT< ScalarNormSq >::TSqrt weightedNormRMS(const VectorBase< EE > &w, int *worstOne=0) const
Return the weighted root-mean-square (WRMS) norm of a Vector of scalars, with optional return of the ...
Definition: VectorBase.h:216
 
THerm updTranspose()
Definition: VectorBase.h:436
 
VectorBase< typename CNT< ELT >::TInvert > elementwiseInvert() const
Return out[i]=this[i]^-1 as function return. 
Definition: VectorBase.h:325
 
VectorBase(const MatrixHelper< Scalar > &h, const typename MatrixHelper< Scalar >::DeepCopy &d)
Construct a new owner vector initialized with the data from the source. 
Definition: VectorBase.h:123
 
VectorBase & operator=(const VectorBase< EE > &b)
Definition: VectorBase.h:151
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
ptrdiff_t nelt() const
Return the number of elements in the logical shape of this matrix. 
Definition: MatrixBase.h:147
 
VectorBase< EE >::template EltResult< ELT >::Dvd elementwiseDivideFromLeft(const VectorBase< EE > &v) const
Definition: VectorBase.h:376
 
K::TSqrt TSqrt
Definition: CompositeNumericalTypes.h:154
 
MatrixHelper< Scalar > & updHelper()
Definition: MatrixBase.h:865
 
static TSqrt sqrt(const K &t)
Definition: CompositeNumericalTypes.h:239
 
VectorBase & operator=(const VectorBase &b)
Copy assignment is deep copy but behavior depends on type of lhs: if view, rhs must match...
Definition: VectorBase.h:138
 
ELT sum() const
Definition: VectorBase.h:457
 
int ncol() const
Definition: VectorBase.h:402
 
K::Scalar Scalar
Definition: CompositeNumericalTypes.h:160
 
ptrdiff_t nelt() const
Definition: VectorBase.h:403
 
const TNeg & negate() const
Definition: VectorBase.h:445
 
A MatrixCharacter is a set containing a value for each of the matrix characteristics except element t...
Definition: MatrixCharacteristics.h:597
 
MatrixBase & operator/=(const StdNumber &t)
Definition: MatrixBase.h:290
 
MatrixBase & resizeKeep(int m, int n)
Change the size of this matrix, retaining as much of the old data as will fit. 
Definition: MatrixBase.h:779
 
VectorBase< typename CNT< ELT >::template Result< P >::Add > Add
Definition: VectorBase.h:132
 
Definition: Exception.h:298
 
VectorBase< typename CNT< ELT >::template Result< P >::Mul > Mul
Definition: VectorBase.h:130
 
THerm transpose() const
Definition: VectorBase.h:435
 
const VectorBase & operator+() const
Definition: VectorBase.h:441
 
MatrixBase & operator-=(const MatrixBase &r)
Definition: MatrixBase.h:292
 
MatrixBase & operator*=(const StdNumber &t)
Definition: MatrixBase.h:289
 
TNeg & operator-()
Definition: VectorBase.h:449
 
VectorBase & operator-=(const VectorBase< EE > &b)
Definition: VectorBase.h:155
 
VectorBase & operator+=(const VectorBase &r)
Definition: VectorBase.h:147
 
unsigned char square(unsigned char u)
Definition: Scalar.h:349
 
VectorView_< ELT > updIndex(const Array_< int > &indices)
Definition: VectorBase.h:425
 
VectorBase & operator+=(const VectorBase< EE > &b)
Definition: VectorBase.h:153
 
void elementwiseDivide(const VectorBase< EE > &v, typename EltResult< EE >::Dvd &out) const
Definition: VectorBase.h:360
 
VectorBase(const VectorBase &source)
Copy constructor is a deep copy (not appropriate for views!). 
Definition: VectorBase.h:72
 
VectorBase & elementwiseDivideFromLeftInPlace(const VectorBase< EE > &r)
Definition: VectorBase.h:366
 
void elementwiseMultiply(const VectorBase< EE > &v, typename EltResult< EE >::Mul &out) const
Definition: VectorBase.h:334
 
VectorBase< typename CNT< ELT >::template Result< P >::Dvd > Dvd
Definition: VectorBase.h:131
 
VectorBase(const MatrixHelper< Scalar > &h, const typename MatrixHelper< Scalar >::ShallowCopy &s)
Construct a read-only view of the source data. 
Definition: VectorBase.h:120
 
VectorBase(const TNeg &source)
Implicit conversion from compatible vector with negated elements. 
Definition: VectorBase.h:75
 
VectorBase & rowScaleInPlace(const VectorBase< EE > &v)
There's only one column here so it's a bit weird to use rowScale rather than elementwiseMultiply, but there's nothing really wrong with it. 
Definition: VectorBase.h:168
 
MatrixBase< typename CNT< E >::TInvert > elementwiseInvert() const
Definition: MatrixBase.h:452
 
void rowScale(const VectorBase< EE > &v, typename EltResult< EE >::Mul &out) const
Definition: VectorBase.h:170
 
TAbs abs() const
Definition: VectorBase.h:406
 
This is an iterator for iterating over the elements of a Vector_ or Vec object. 
Definition: BigMatrix.h:176
 
THerm operator~()
Definition: VectorBase.h:439
 
VectorView_< ELT > operator()(const Array_< int > &indices)
Definition: VectorBase.h:432
 
VectorBase< EE >::template EltResult< ELT >::Mul elementwiseMultiplyFromLeft(const VectorBase< EE > &v) const
Definition: VectorBase.h:350
 
void elementwiseDivideFromLeft(const VectorBase< EE > &v, typename VectorBase< EE >::template EltResult< ELT >::Dvd &out) const
Definition: VectorBase.h:369
 
VectorBase & elementwiseMultiplyFromLeftInPlace(const VectorBase< EE > &r)
Definition: VectorBase.h:340
 
(Advanced) This class is identical to Matrix_ except that it has shallow (reference) copy and assignm...
Definition: BigMatrix.h:167
 
K::TInvert TInvert
Definition: CompositeNumericalTypes.h:157
 
EAbs weightedNormInf(const VectorBase< EE > &w, int *worstOne=0) const
Return the weighted infinity norm (max absolute value) WInf of a Vector of scalars, with optional return of the index of the weighted element of largest absolute value. 
Definition: VectorBase.h:284
 
MatrixView_< EHerm > updTranspose()
Definition: BigMatrix.h:230
 
const ELT & operator()(int i) const
Definition: VectorBase.h:411
 
VectorView_< ELT > operator()(int i, int m) const
Definition: VectorBase.h:415
 
VectorBase(MatrixHelper< Scalar > &h, const typename MatrixHelper< Scalar >::ShallowCopy &s)
Construct a writable view into the source data. 
Definition: VectorBase.h:117
 
const ELT & operator[](int i) const
Definition: VectorBase.h:409
 
EltResult< EE >::Mul elementwiseMultiply(const VectorBase< EE > &v) const
Definition: VectorBase.h:336
 
VectorBase & resizeKeep(int m)
Definition: VectorBase.h:452
 
ELEM max(const VectorBase< ELEM > &v)
Definition: VectorMath.h:251
 
TNeg & updNegate()
Definition: VectorBase.h:446
 
VectorBase & elementwiseDivideInPlace(const VectorBase< EE > &r)
Definition: VectorBase.h:358
 
int ncol() const
Return the number of columns n in the logical shape of this matrix. 
Definition: MatrixBase.h:138
 
#define SimTK_THROW1(exc, a1)
Definition: Exception.h:316
 
VectorBase(int m, int stride, Scalar *s)
Construct a writable view into existing data. 
Definition: VectorBase.h:104
 
VectorView_< ELT > operator()(const Array_< int > &indices) const
Definition: VectorBase.h:431
 
EltResult< EE >::Dvd elementwiseDivide(const VectorBase< EE > &v) const
Definition: VectorBase.h:362
 
EStdNumber StdNumber
Definition: MatrixBase.h:99
 
MatrixBase & elementwiseInvertInPlace()
Set M(i,j) = M(i,j)^-1. 
Definition: BigMatrix.h:361
 
CNT< ScalarNormSq >::TSqrt normRMS(int *worstOne=0) const
Return the root-mean-square (RMS) norm of a Vector of scalars, with optional return of the index of t...
Definition: VectorBase.h:180
 
EltResult< EE >::Mul rowScale(const VectorBase< EE > &v) const
Definition: VectorBase.h:172
 
This is the matrix class intended to appear in user code for large, variable size matrices...
Definition: BigMatrix.h:168
 
ELT & operator()(int i)
Definition: VectorBase.h:412
 
MatrixBase & operator+=(const MatrixBase &r)
Definition: MatrixBase.h:291
 
K::StdNumber StdNumber
Definition: CompositeNumericalTypes.h:163
 
RowVectorBase< typename CNT< ELEM >::TAbs > abs(const RowVectorBase< ELEM > &v)
Definition: VectorMath.h:120
 
int nrow() const
Definition: VectorBase.h:401
 
THerm operator~() const
Definition: VectorBase.h:438
 
Specialized information about Composite Numerical Types which allows us to define appropriate templat...
Definition: CompositeNumericalTypes.h:136
 
VectorView_< ELT > index(const Array_< int > &indices) const
Definition: VectorBase.h:420
 
VectorBase(MatrixHelperRep< Scalar > *hrep)
Definition: VectorBase.h:467
 
VectorView_< ELT > operator()(int i, int m)
Definition: VectorBase.h:416
 
MatrixBase & operator=(const MatrixBase &b)
Definition: MatrixBase.h:200
 
const MatrixHelper< Scalar > & getHelper() const
Definition: MatrixBase.h:864
 
MatrixView_< EHerm > transpose() const
Definition: BigMatrix.h:222
 
VectorBase & operator=(const ELT &t)
Fill current allocation with copies of element. 
Definition: VectorBase.h:162
 
void clear()
Definition: VectorBase.h:455
 
const S * getElt(int i, int j) const
 
CNT< E >::TAbs EAbs
Definition: MatrixBase.h:84
 
This is a dataless rehash of the MatrixBase class to specialize it for Vectors. 
Definition: BigMatrix.h:164
 
VectorBase(int m, int stride, const Scalar *s)
Construct a read-only view of existing data. 
Definition: VectorBase.h:101
 
VectorIterator< ELT, VectorBase< ELT > > end()
Definition: VectorBase.h:461
 
int size() const
Definition: VectorBase.h:396
 
A MatrixCommitment provides a set of acceptable matrix characteristics. 
Definition: MatrixCharacteristics.h:832
 
void rowScale(const VectorBase< EE > &r, typename EltResult< EE >::Mul &out) const
Return type is a new matrix which will have the same dimensions as 'this' but will have element types...
 
VectorBase & resize(int m)
Definition: VectorBase.h:451
 
const MatrixCommitment & getCharacterCommitment() const
Definition: MatrixBase.h:118
 
K::Number Number
Definition: CompositeNumericalTypes.h:162
 
VectorBase & elementwiseInvertInPlace()
Set this[i] = this[i]^-1. 
Definition: VectorBase.h:314
 
void clear()
This restores the MatrixBase to the state it would be in had it been constructed specifying only its ...
Definition: MatrixBase.h:287
 
VectorBase< typename CNT< ELT >::template Result< P >::Sub > Sub
Definition: VectorBase.h:133
 
MatrixBase & setTo(const ELT &t)
Fill every element in current allocation with given element (or NaN or 0). 
Definition: MatrixBase.h:582
 
VectorBase(int m=0)
Default constructor makes a 0x1 matrix locked at 1 column; you can provide an initial allocation if y...
Definition: VectorBase.h:67
 
MatrixBase & resize(int m, int n)
Change the size of this matrix. 
Definition: MatrixBase.h:773
 
VectorBase & elementwiseMultiplyInPlace(const VectorBase< EE > &r)
Definition: VectorBase.h:332
 
void elementwiseMultiplyFromLeft(const VectorBase< EE > &v, typename VectorBase< EE >::template EltResult< ELT >::Mul &out) const
Definition: VectorBase.h:343
 
ELT & operator[](int i)
Definition: VectorBase.h:410
 
EAbs normInf(int *worstOne=0) const
Return the infinity norm (max absolute value) of a Vector of scalars, with optional return of the ind...
Definition: VectorBase.h:251
 
(Advanced) This class is identical to Vector_ except that it has shallow (reference) copy and assignm...
Definition: BigMatrix.h:170
 
VectorBase & operator*=(const StdNumber &t)
Definition: VectorBase.h:145
 
VectorView_< ELT > operator()(int j) const
Definition: MatrixBase.h:594
 
Definition: VectorBase.h:129
 
TAbs abs() const
abs() with the result as a function return. 
Definition: MatrixBase.h:698
 
int nrow() const
Return the number of rows m in the logical shape of this matrix. 
Definition: MatrixBase.h:136
 
VectorBase(int m, const ELT &initialValue)
Construct an owner vector of length m, with each element initialized to the given value...
Definition: VectorBase.h:79
 
EScalar Scalar
Definition: MatrixBase.h:97
 
VectorBase(int m, const ELT *cppInitialValues)
Construct an owner vector of length m, with the elements initialized sequentially from a C++ array of...
Definition: VectorBase.h:86