1 #ifndef SimTK_SIMMATRIX_VECTORBASE_H_ 
    2 #define SimTK_SIMMATRIX_VECTORBASE_H_ 
  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); 
 
#define SimTK_THROW1(exc, a1)
Definition: Exception.h:325
 
Specialized information about Composite Numerical Types which allows us to define appropriate templat...
Definition: CompositeNumericalTypes.h:136
 
K::StdNumber StdNumber
Definition: CompositeNumericalTypes.h:163
 
static TSqrt sqrt(const K &t)
Definition: CompositeNumericalTypes.h:239
 
K::TSqrt TSqrt
Definition: CompositeNumericalTypes.h:154
 
K::TInvert TInvert
Definition: CompositeNumericalTypes.h:157
 
K::Scalar Scalar
Definition: CompositeNumericalTypes.h:160
 
K::Number Number
Definition: CompositeNumericalTypes.h:162
 
Definition: Exception.h:307
 
This is the common base class for Simbody's Vector_ and Matrix_ classes for handling large,...
Definition: MatrixBase.h:68
 
const MatrixCommitment & getCharacterCommitment() const
Definition: MatrixBase.h:118
 
MatrixBase & elementwiseInvertInPlace()
Set M(i,j) = M(i,j)^-1.
Definition: BigMatrix.h:361
 
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
 
MatrixBase & resize(int m, int n)
Change the size of this matrix.
Definition: MatrixBase.h:773
 
MatrixView_< EHerm > updTranspose()
Definition: BigMatrix.h:230
 
int nrow() const
Return the number of rows m in the logical shape of this matrix.
Definition: MatrixBase.h:136
 
ENumber Number
Definition: MatrixBase.h:98
 
int ncol() const
Return the number of columns n in the logical shape of this matrix.
Definition: MatrixBase.h:138
 
MatrixBase & operator=(const MatrixBase &b)
Definition: MatrixBase.h:200
 
MatrixBase & operator*=(const StdNumber &t)
Definition: MatrixBase.h:289
 
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...
 
void clear()
This restores the MatrixBase to the state it would be in had it been constructed specifying only its ...
Definition: MatrixBase.h:287
 
MatrixHelper< Scalar > & updHelper()
Definition: MatrixBase.h:865
 
MatrixBase & operator+=(const MatrixBase &r)
Definition: MatrixBase.h:291
 
VectorView_< ELT > operator()(int j) const
Definition: MatrixBase.h:594
 
EScalarNormSq ScalarNormSq
Definition: MatrixBase.h:101
 
ptrdiff_t nelt() const
Return the number of elements in the logical shape of this matrix.
Definition: MatrixBase.h:147
 
MatrixBase & operator-=(const MatrixBase &r)
Definition: MatrixBase.h:292
 
MatrixBase< typename CNT< E >::TInvert > elementwiseInvert() const
Definition: MatrixBase.h:452
 
TAbs abs() const
abs() with the result as a function return.
Definition: MatrixBase.h:698
 
MatrixBase & setTo(const ELT &t)
Fill every element in current allocation with given element (or NaN or 0).
Definition: MatrixBase.h:582
 
EScalar Scalar
Definition: MatrixBase.h:97
 
MatrixBase & operator/=(const StdNumber &t)
Definition: MatrixBase.h:290
 
EStdNumber StdNumber
Definition: MatrixBase.h:99
 
const MatrixHelper< Scalar > & getHelper() const
Definition: MatrixBase.h:864
 
MatrixView_< EHerm > transpose() const
Definition: BigMatrix.h:222
 
CNT< E >::TAbs EAbs
Definition: MatrixBase.h:84
 
A MatrixCharacter is a set containing a value for each of the matrix characteristics except element t...
Definition: MatrixCharacteristics.h:597
 
A MatrixCommitment provides a set of acceptable matrix characteristics.
Definition: MatrixCharacteristics.h:832
 
const S * getElt(int i, int j) const
 
(Advanced) This class is identical to Matrix_ except that it has shallow (reference) copy and assignm...
Definition: MatrixView_.h:43
 
This is the matrix class intended to appear in user code for large, variable size matrices.
Definition: Matrix_.h:51
 
(Advanced) This class is identical to RowVector_ except that it has shallow (reference) copy and assi...
Definition: RowVectorView_.h:42
 
This is a dataless rehash of the MatrixBase class to specialize it for Vectors.
Definition: VectorBase.h:42
 
const VectorBase & operator+() const
Definition: VectorBase.h:441
 
EltResult< EE >::Mul elementwiseMultiply(const VectorBase< EE > &v) const
Definition: VectorBase.h:336
 
void elementwiseDivide(const VectorBase< EE > &v, typename EltResult< EE >::Dvd &out) const
Definition: VectorBase.h:360
 
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
 
int size() const
Definition: VectorBase.h:396
 
void clear()
Definition: VectorBase.h:455
 
VectorView_< ELT > updIndex(const Array_< int > &indices)
Definition: VectorBase.h:425
 
ELT sum() const
Definition: VectorBase.h:457
 
const ELT & operator()(int i) const
Definition: VectorBase.h:411
 
TNeg & operator-()
Definition: VectorBase.h:449
 
void elementwiseMultiplyFromLeft(const VectorBase< EE > &v, typename VectorBase< EE >::template EltResult< ELT >::Mul &out) const
Definition: VectorBase.h:343
 
VectorBase & elementwiseMultiplyFromLeftInPlace(const VectorBase< EE > &r)
Definition: VectorBase.h:340
 
VectorBase & elementwiseDivideInPlace(const VectorBase< EE > &r)
Definition: VectorBase.h:358
 
EltResult< EE >::Mul rowScale(const VectorBase< EE > &v) const
Definition: VectorBase.h:172
 
VectorView_< ELT > index(const Array_< int > &indices) const
Definition: VectorBase.h:420
 
void elementwiseMultiply(const VectorBase< EE > &v, typename EltResult< EE >::Mul &out) const
Definition: VectorBase.h:334
 
THerm operator~() const
Definition: VectorBase.h:438
 
TNeg & updNegate()
Definition: VectorBase.h:446
 
VectorIterator< ELT, VectorBase< ELT > > end()
Definition: VectorBase.h:461
 
void elementwiseDivideFromLeft(const VectorBase< EE > &v, typename VectorBase< EE >::template EltResult< ELT >::Dvd &out) const
Definition: VectorBase.h:369
 
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 &r)
Definition: VectorBase.h:147
 
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
 
VectorBase< typename CNT< ELT >::TInvert > elementwiseInvert() const
Return out[i]=this[i]^-1 as function return.
Definition: VectorBase.h:325
 
VectorBase & operator-=(const VectorBase< EE > &b)
Definition: VectorBase.h:155
 
TAbs abs() const
Definition: VectorBase.h:406
 
THerm updTranspose()
Definition: VectorBase.h:436
 
void rowScale(const VectorBase< EE > &v, typename EltResult< EE >::Mul &out) const
Definition: VectorBase.h:170
 
void elementwiseInvert(VectorBase< typename CNT< ELT >::TInvert > &out) const
Set supplied out[i] = this[i]^-1.
Definition: VectorBase.h:320
 
VectorBase & operator/=(const StdNumber &t)
Definition: VectorBase.h:146
 
VectorBase(MatrixHelperRep< Scalar > *hrep)
Definition: VectorBase.h:467
 
const TNeg & operator-() const
Definition: VectorBase.h:448
 
VectorBase & rowScaleInPlace(const VectorBase< EE > &v)
There's only one column here so it's a bit weird to use rowScale rather than elementwiseMultiply,...
Definition: VectorBase.h:168
 
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
 
ptrdiff_t nelt() const
Definition: VectorBase.h:403
 
VectorBase & elementwiseDivideFromLeftInPlace(const VectorBase< EE > &r)
Definition: VectorBase.h:366
 
VectorView_< ELT > operator()(int i, int m) const
Definition: VectorBase.h:415
 
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
 
VectorBase< EE >::template EltResult< ELT >::Dvd elementwiseDivideFromLeft(const VectorBase< EE > &v) const
Definition: VectorBase.h:376
 
int ncol() const
Definition: VectorBase.h:402
 
VectorBase(const VectorBase &source)
Copy constructor is a deep copy (not appropriate for views!).
Definition: VectorBase.h:72
 
THerm operator~()
Definition: VectorBase.h:439
 
EltResult< EE >::Dvd elementwiseDivide(const VectorBase< EE > &v) const
Definition: VectorBase.h:362
 
VectorBase & operator*=(const StdNumber &t)
Definition: VectorBase.h:145
 
VectorBase & elementwiseMultiplyInPlace(const VectorBase< EE > &r)
Definition: VectorBase.h:332
 
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
 
THerm transpose() const
Definition: VectorBase.h:435
 
VectorBase & resize(int m)
Definition: VectorBase.h:451
 
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
 
EAbs weightedNormInf(const VectorBase< EE > &w, int *worstOne=0) const
Return the weighted infinity norm (max absolute value) WInf of a Vector of scalars,...
Definition: VectorBase.h:284
 
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
 
VectorBase(const MatrixHelper< Scalar > &h, const typename MatrixHelper< Scalar >::ShallowCopy &s)
Construct a read-only view of the source data.
Definition: VectorBase.h:120
 
ELT & operator[](int i)
Definition: VectorBase.h:410
 
VectorBase & operator+=(const VectorBase< EE > &b)
Definition: VectorBase.h:153
 
const TNeg & negate() const
Definition: VectorBase.h:445
 
VectorBase(int m, int stride, const Scalar *s)
Construct a read-only view of existing data.
Definition: VectorBase.h:101
 
VectorView_< ELT > operator()(const Array_< int > &indices)
Definition: VectorBase.h:432
 
VectorBase(int m, int stride, Scalar *s)
Construct a writable view into existing data.
Definition: VectorBase.h:104
 
ELT & operator()(int i)
Definition: VectorBase.h:412
 
VectorBase & operator=(const ELT &t)
Fill current allocation with copies of element.
Definition: VectorBase.h:162
 
int nrow() const
Definition: VectorBase.h:401
 
VectorBase(MatrixHelper< Scalar > &h, const typename MatrixHelper< Scalar >::ShallowCopy &s)
Construct a writable view into the source data.
Definition: VectorBase.h:117
 
VectorBase(const TNeg &source)
Implicit conversion from compatible vector with negated elements.
Definition: VectorBase.h:75
 
VectorBase & resizeKeep(int m)
Definition: VectorBase.h:452
 
const ELT & operator[](int i) const
Definition: VectorBase.h:409
 
VectorBase & operator=(const VectorBase< EE > &b)
Definition: VectorBase.h:151
 
VectorBase & operator-=(const VectorBase &r)
Definition: VectorBase.h:148
 
VectorView_< ELT > operator()(int i, int m)
Definition: VectorBase.h:416
 
VectorBase< EE >::template EltResult< ELT >::Mul elementwiseMultiplyFromLeft(const VectorBase< EE > &v) const
Definition: VectorBase.h:350
 
VectorBase & elementwiseInvertInPlace()
Set this[i] = this[i]^-1.
Definition: VectorBase.h:314
 
VectorView_< ELT > operator()(const Array_< int > &indices) const
Definition: VectorBase.h:431
 
VectorIterator< ELT, VectorBase< ELT > > begin()
Definition: VectorBase.h:458
 
This is an iterator for iterating over the elements of a Vector_ or Vec object.
Definition: VectorIterator.h:52
 
(Advanced) This class is identical to Vector_ except that it has shallow (reference) copy and assignm...
Definition: VectorView_.h:42
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
ELEM max(const VectorBase< ELEM > &v)
Definition: VectorMath.h:251
 
RowVectorBase< typename CNT< ELEM >::TAbs > abs(const RowVectorBase< ELEM > &v)
Definition: VectorMath.h:120
 
unsigned char square(unsigned char u)
Definition: Scalar.h:349
 
Definition: VectorBase.h:129
 
VectorBase< typename CNT< ELT >::template Result< P >::Mul > Mul
Definition: VectorBase.h:130
 
VectorBase< typename CNT< ELT >::template Result< P >::Add > Add
Definition: VectorBase.h:132
 
VectorBase< typename CNT< ELT >::template Result< P >::Dvd > Dvd
Definition: VectorBase.h:131
 
VectorBase< typename CNT< ELT >::template Result< P >::Sub > Sub
Definition: VectorBase.h:133