1#ifndef SimTK_SIMMATRIX_MATRIXBASE_H_
2#define SimTK_SIMMATRIX_MATRIXBASE_H_
226 { helper.
fillWith(
reinterpret_cast<const Scalar*
>(&initialValue)); }
239 const ELT* cppInitialValuesByRow)
258 int spacing,
const Scalar* data)
260 commitment, character, spacing, data) {}
265 int spacing,
Scalar* data)
267 commitment, character, spacing, data) {}
274 : helper(commitment, source, shallow) {}
278 : helper(commitment, source, shallow) {}
282 : helper(commitment, source, deep) {}
298 { helper = b.helper;
return *
this; }
300 { helper.
addIn(b.helper);
return *
this; }
302 { helper.
subIn(b.helper);
return *
this; }
352 updDiag().elementwiseAddScalarInPlace(s);
393 template <
class EE>
inline void
406 template <
class EE>
inline void
419 template <
class ER,
class EC>
inline MatrixBase&
422 template <
class ER,
class EC>
inline void
445 {
return elementwiseAssign<Real>(
Real(s)); }
468 template <
class S>
inline void
488 template <
class S>
inline void
509 template <
class S>
inline void
517 elementwiseSubtractFromScalar<S>(s,out);
525 template <
class EE>
inline void
531 elementwiseMultiply<EE>(m,out);
539 template <
class EE>
inline void
547 elementwiseMultiplyFromLeft<EE>(m,out);
555 template <
class EE>
inline void
561 elementwiseDivide<EE>(m,out);
569 template <
class EE>
inline void
577 elementwiseDivideFromLeft<EE>(m,out);
602 {
return block(i,j,m,n); }
643 void dump(
const char* msg=0)
const {
655 const ELT&
getElt(
int i,
int j)
const {
return *
reinterpret_cast<const ELT*
>(helper.
getElt(i,j)); }
656 ELT&
updElt(
int i,
int j) {
return *
reinterpret_cast< ELT*
>(helper.
updElt(i,j)); }
676 for(
int j=0;j<nc;++j)
677 for (
int i=0; i<nr; ++i)
690 for(
int j=0;j<nc;++j)
691 for (
int i=0; i<nr; ++i)
713 for(
int j=0;j<nc;++j)
714 for (
int i=0; i<nr; ++i)
741 const int cols =
ncol();
743 for (
int j = 0; j < cols; ++j)
752 const int rows =
nrow();
754 for (
int i = 0; i < rows; ++i)
889 template <
class ELT_A,
class ELT_B>
893 helper.matmul(beta,alpha,A.helper,B.helper);
#define SimTK_THROW1(exc, a1)
Definition Exception.h:316
Specialized information about Composite Numerical Types which allows us to define appropriate templat...
Definition CompositeNumericalTypes.h:136
static TAbs abs(const K &t)
Definition CompositeNumericalTypes.h:240
K::ScalarNormSq ScalarNormSq
Definition CompositeNumericalTypes.h:166
K::StdNumber StdNumber
Definition CompositeNumericalTypes.h:163
static TSqrt sqrt(const K &t)
Definition CompositeNumericalTypes.h:239
K::TSqHermT TSqHermT
Definition CompositeNumericalTypes.h:146
K::TSqrt TSqrt
Definition CompositeNumericalTypes.h:154
K::TInvert TInvert
Definition CompositeNumericalTypes.h:157
K::TNormalize TNormalize
Definition CompositeNumericalTypes.h:158
K::TWithoutNegator TWithoutNegator
Definition CompositeNumericalTypes.h:140
K::TReal TReal
Definition CompositeNumericalTypes.h:141
static TStandard standardize(const K &t)
Definition CompositeNumericalTypes.h:241
K::THerm THerm
Definition CompositeNumericalTypes.h:144
K::TPosTrans TPosTrans
Definition CompositeNumericalTypes.h:145
K::TNeg TNeg
Definition CompositeNumericalTypes.h:139
K::TStandard TStandard
Definition CompositeNumericalTypes.h:156
K::TComplex TComplex
Definition CompositeNumericalTypes.h:143
K::TSqTHerm TSqTHerm
Definition CompositeNumericalTypes.h:147
K::TImag TImag
Definition CompositeNumericalTypes.h:142
K::Precision Precision
Definition CompositeNumericalTypes.h:164
K::Scalar Scalar
Definition CompositeNumericalTypes.h:160
K::TAbs TAbs
Definition CompositeNumericalTypes.h:155
K::Number Number
Definition CompositeNumericalTypes.h:162
Definition Exception.h:298
This is the common base class for Simbody's Vector_ and Matrix_ classes for handling large,...
Definition MatrixBase.h:68
const RowVectorView_< ELT > & getAsRowVectorView() const
Definition MatrixBase.h:810
Scalar * updContiguousScalarData()
Definition MatrixBase.h:844
void elementwiseDivideFromLeft(const MatrixBase< EE > &, typename MatrixBase< EE >::template EltResult< E >::Dvd &) const
Definition BigMatrix.h:533
MatrixBase & elementwiseSubtractFromScalarInPlace(const S &s)
Set M(i,j) = s - M(i,j) for every element of M and some value s.
MatrixBase(const MatrixCommitment &commitment, const MatrixCharacter &character, int spacing, Scalar *data)
Construct a writable view of pre-existing data.
Definition MatrixBase.h:263
MatrixBase & scalarDivideFromLeftInPlace(const S &)
Set M(i,j) = S/M(i,j) for some "scalar" S.
CNT< E >::TWithoutNegator EWithoutNegator
Definition MatrixBase.h:77
const MatrixHelper< Scalar > & getHelper() const
Definition MatrixBase.h:864
ScalarNormSq scalarNormSqr() const
Scalar norm square is sum( squares of all scalars ).
Definition MatrixBase.h:673
VectorBase< ELT > & updAsVectorBase()
Definition MatrixBase.h:807
RowVector_< ELT > sum() const
Alternate name for colSum(); behaves like the Matlab function sum().
Definition MatrixBase.h:748
@ NScalarsPerElement
Definition MatrixBase.h:153
@ CppNScalarsPerElement
Definition MatrixBase.h:154
MatrixBase & elementwiseAssign(const S &s)
Set M(i,j)=s for every element of M and some value s.
MatrixBase & elementwiseSubtractScalarInPlace(const S &s)
Set M(i,j)-=s for every element of M and some value s.
MatrixBase & elementwiseDivideInPlace(const MatrixBase< EE > &)
M(i,j) /= R(i,j); R must have same dimensions as this.
int getPackedSizeofElement() const
This is like sizeof(ELT), but returning the number of bytes we use to store the element which may be ...
Definition MatrixBase.h:835
MatrixBase & setToNaN()
Definition MatrixBase.h:583
EPrecision Precision
Definition MatrixBase.h:100
CNT< ScalarNormSq >::TSqrt norm() const
Definition MatrixBase.h:725
CNT< E >::Number ENumber
Definition MatrixBase.h:92
MatrixBase & rowScaleInPlace(const VectorBase< EE > &)
M = diag(r) * M; r must have nrow() elements.
EltResult< EE >::Mul elementwiseMultiply(const MatrixBase< EE > &m) const
Definition MatrixBase.h:529
const MatrixCharacter & getMatrixCharacter() const
Definition MatrixBase.h:119
MatrixBase & elementwiseInvertInPlace()
Set M(i,j) = M(i,j)^-1.
Definition BigMatrix.h:361
MatrixBase(const MatrixCommitment &commitment, int m, int n)
This constructor takes a handle commitment and allocates the default matrix for that kind of commitme...
Definition MatrixBase.h:180
MatrixBase< EHerm > THerm
Definition MatrixBase.h:108
EltResult< EE >::Mul colScale(const VectorBase< EE > &c) const
Definition MatrixBase.h:410
MatrixBase & elementwiseAssign(int s)
Overloaded to allow an integer argument, which is converted to Real.
Definition MatrixBase.h:444
MatrixBase< EInvert > TInvert
Definition MatrixBase.h:113
TStandard standardize() const
Return a Matrix of the same shape and contents as this one but with the element type converted to one...
Definition MatrixBase.h:710
MatrixBase< EComplex > TComplex
Definition MatrixBase.h:107
MatrixBase & elementwiseMultiplyFromLeftInPlace(const MatrixBase< EE > &)
M(i,j) = R(i,j) * M(i,j); R must have same dimensions as this.
MatrixBase< EReal > TReal
Definition MatrixBase.h:105
CNT< E >::TSqTHerm ESqTHerm
Definition MatrixBase.h:89
CNT< E >::TNeg ENeg
Definition MatrixBase.h:76
const MatrixCommitment & getCharacterCommitment() const
Definition MatrixBase.h:118
MatrixBase & scalarMultiplyFromLeftInPlace(const S &)
Set M(i,j) = S * M(i,j) for some "scalar" S.
MatrixBase< EE >::template EltResult< E >::Mul elementwiseMultiplyFromLeft(const MatrixBase< EE > &m) const
Definition MatrixBase.h:545
MatrixBase & colScaleInPlace(const VectorBase< EE > &)
M = M * diag(c); c must have ncol() elements.
MatrixBase< typename CNT< E >::TInvert > elementwiseInvert() const
Definition MatrixBase.h:452
MatrixView_< ELT > updBlock(int i, int j, int m, int n)
Definition BigMatrix.h:211
VectorView_< ELT > updCol(int j)
Definition BigMatrix.h:261
MatrixBase(const MatrixBase &b)
Copy constructor is a deep copy (not appropriate for views!).
Definition MatrixBase.h:184
void unlockShape()
Definition MatrixBase.h:789
RowVector_< ELT > & updAsRowVector()
Definition MatrixBase.h:816
MatrixBase & operator=(const ELT &t)
Matrix assignment to an element sets only the diagonal elements to the indicated value; everything el...
Definition MatrixBase.h:314
CNT< E >::TComplex EComplex
Definition MatrixBase.h:80
CNT< E >::ScalarNormSq EScalarNormSq
Definition MatrixBase.h:95
void abs(TAbs &mabs) const
abs() is elementwise absolute value; that is, the return value has the same dimension as this Matrix ...
Definition MatrixBase.h:687
MatrixBase & resize(int m, int n)
Change the size of this matrix.
Definition MatrixBase.h:773
MatrixBase & elementwiseMultiplyInPlace(const MatrixBase< EE > &)
M(i,j) *= R(i,j); R must have same dimensions as this.
Matrix_< ELT > & updAsMatrix()
Definition MatrixBase.h:795
const Scalar * getContiguousScalarData() const
Definition MatrixBase.h:841
MatrixBase & elementwiseAddScalarInPlace(const S &s)
Set M(i,j)+=s for every element of M and some value s.
MatrixBase & scalarSubtractFromLeftInPlace(const S &s)
Set M(i,i) = S - M(i,i), M(i,j) = -M(i,j) for i!=j.
Definition MatrixBase.h:350
MatrixBase & rowAndColScaleInPlace(const VectorBase< ER > &r, const VectorBase< EC > &c)
M = diag(r) * M * diag(c); r must have nrow() elements; must have ncol() elements.
MatrixView_< EHerm > updTranspose()
Definition BigMatrix.h:230
TInvert invert() const
Definition MatrixBase.h:634
MatrixBase & scalarDivideInPlace(const S &)
Set M(i,j) = M(i,j)/S for some "scalar" S.
MatrixBase & operator/=(const StdNumber &t)
Definition MatrixBase.h:290
CNT< E >::Precision EPrecision
Definition MatrixBase.h:94
MatrixBase & scalarSubtractInPlace(const S &s)
Subtract a scalar from M's diagonal.
Definition MatrixBase.h:343
void colScale(const VectorBase< EE > &c, typename EltResult< EE >::Mul &out) const
MatrixBase & scalarAddInPlace(const S &s)
Add a scalar to M's diagonal.
Definition MatrixBase.h:334
VectorView_< ELT > & updAsVectorView()
Definition MatrixBase.h:799
const RowVector_< ELT > & getAsRowVector() const
Definition MatrixBase.h:814
CNT< E >::StdNumber EStdNumber
Definition MatrixBase.h:93
void getAnyElt(int i, int j, ELT &value) const
This returns a copy of the element value for any position in the logical matrix, regardless of whethe...
Definition MatrixBase.h:665
CNT< E >::TPosTrans EPosTrans
Definition MatrixBase.h:82
ELT E
Definition MatrixBase.h:75
EltResult< EE >::Dvd elementwiseDivide(const MatrixBase< EE > &m) const
Definition MatrixBase.h:559
void dump(const char *msg=0) const
Matlab-compatible debug output.
Definition MatrixBase.h:643
const TNeg & negate() const
Definition MatrixBase.h:761
int nrow() const
Return the number of rows m in the logical shape of this matrix.
Definition MatrixBase.h:136
void elementwiseSubtractScalar(const S &s, typename EltResult< S >::Sub &) const
MatrixBase< ENeg > TNeg
Definition MatrixBase.h:103
TNeg & operator-()
Definition MatrixBase.h:765
void rowAndColScale(const VectorBase< ER > &r, const VectorBase< EC > &c, typename EltResult< typename VectorBase< ER >::template EltResult< EC >::Mul >::Mul &out) const
Definition BigMatrix.h:337
ENumber Number
Definition MatrixBase.h:98
MatrixView_< ELT > operator()(int i, int j, int m, int n) const
Definition MatrixBase.h:601
MatrixBase(const MatrixCommitment &commitment, int m, int n, const ELT *cppInitialValuesByRow)
Initializing constructor with the initially-allocated elements initialized from a C++ array of elemen...
Definition MatrixBase.h:238
bool isResizeable() const
Return true if either dimension of this Matrix is resizable.
Definition MatrixBase.h:150
bool hasContiguousData() const
Definition MatrixBase.h:837
RowVector_< ELT > colSum() const
Form the column sums of this matrix, returned as a RowVector.
Definition MatrixBase.h:740
MatrixBase & operator=(const MatrixBase &b)
Definition MatrixBase.h:200
int ncol() const
Return the number of columns n in the logical shape of this matrix.
Definition MatrixBase.h:138
MatrixBase(const MatrixCommitment &commitment)
This constructor takes a handle commitment and allocates the default matrix for that kind of commitme...
Definition MatrixBase.h:172
const ELT & getElt(int i, int j) const
Element selection for stored elements.
Definition MatrixBase.h:655
CNT< E >::TStandard EStandard
Definition MatrixBase.h:85
RowVectorView_< ELT > operator[](int i)
Definition MatrixBase.h:593
MatrixBase< EWithoutNegator > TWithoutNegator
Definition MatrixBase.h:104
MatrixView_< ELT > block(int i, int j, int m, int n) const
Definition BigMatrix.h:200
MatrixBase & operator-=(const MatrixBase &r)
Definition MatrixBase.h:292
MatrixBase< E > TPosTrans
Definition MatrixBase.h:109
MatrixView_< EHerm > operator~()
Definition MatrixBase.h:611
MatrixBase< EImag > TImag
Definition MatrixBase.h:106
MatrixBase & negateInPlace()
Definition MatrixBase.h:767
MatrixBase< S >::template EltResult< E >::Sub elementwiseSubtractFromScalar(const S &s) const
Definition MatrixBase.h:515
void invertInPlace()
Definition MatrixBase.h:640
void elementwiseDivide(const MatrixBase< EE > &, typename EltResult< EE >::Dvd &) const
MatrixView_< ELT > & updAsMatrixView()
Definition MatrixBase.h:793
MatrixView_< ELT > operator()(int i, int j, int m, int n)
Definition MatrixBase.h:603
EltResult< S >::Sub elementwiseSubtractScalar(const S &s) const
Definition MatrixBase.h:492
void replaceContiguousScalarData(Scalar *newData, ptrdiff_t length, bool takeOwnership)
Definition MatrixBase.h:847
ELT & operator()(int i, int j)
Definition MatrixBase.h:659
void replaceContiguousScalarData(const Scalar *newData, ptrdiff_t length)
Definition MatrixBase.h:850
MatrixBase< EE >::template EltResult< EE >::Dvd elementwiseDivideFromLeft(const MatrixBase< EE > &m) const
Definition MatrixBase.h:575
CNT< ScalarNormSq >::TSqrt normRMS() const
We only allow RMS norm if the elements are scalars.
Definition MatrixBase.h:731
MatrixBase & scalarMultiplyInPlace(const S &)
Set M(i,j) = M(i,j)*S for some "scalar" S.
void elementwiseSubtractFromScalar(const S &, typename MatrixBase< S >::template EltResult< E >::Sub &) const
Definition BigMatrix.h:435
void elementwiseAddScalar(const S &s, typename EltResult< S >::Add &) const
const VectorBase< ELT > & getAsVectorBase() const
Definition MatrixBase.h:805
EltResult< EE >::Mul rowScale(const VectorBase< EE > &r) const
Definition MatrixBase.h:397
VectorView_< ELT > updDiag()
Select main diagonal (of largest leading square if rectangular) and return it as a writable view of t...
Definition BigMatrix.h:245
MatrixBase & operator+=(const MatrixBase &r)
Definition MatrixBase.h:291
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...
MatrixBase & setTo(const ELT &t)
Fill every element in current allocation with given element (or NaN or 0).
Definition MatrixBase.h:582
MatrixBase & elementwiseDivideFromLeftInPlace(const MatrixBase< EE > &)
M(i,j) = R(i,j) / M(i,j); R must have same dimensions as this.
MatrixHelper< Scalar > & updHelper()
Definition MatrixBase.h:865
MatrixBase(MatrixHelperRep< Scalar > *hrep)
Helper rep-stealing constructor.
Definition MatrixBase.h:861
void clear()
This restores the MatrixBase to the state it would be in had it been constructed specifying only its ...
Definition MatrixBase.h:287
VectorView_< ELT > operator()(int j)
Definition MatrixBase.h:595
void elementwiseMultiply(const MatrixBase< EE > &, typename EltResult< EE >::Mul &) const
MatrixBase(const MatrixCommitment &commitment, const MatrixCharacter &character, int spacing, const Scalar *data)
Construct a read-only view of pre-existing data.
Definition MatrixBase.h:256
const VectorView_< ELT > & getAsVectorView() const
Definition MatrixBase.h:797
ELT getAnyElt(int i, int j) const
Definition MatrixBase.h:667
CNT< E >::TNormalize ENormalize
Definition MatrixBase.h:87
MatrixBase & scalarAssign(const S &s)
Set M's diagonal elements to a "scalar" value S, and all off-diagonal elements to zero.
Definition MatrixBase.h:325
const Matrix_< ELT > & getAsMatrix() const
Definition MatrixBase.h:794
VectorView_< ELT > col(int j) const
Definition BigMatrix.h:252
MatrixBase(const MatrixBase< EE > &b)
Definition MatrixBase.h:294
const RowVectorBase< ELT > & getAsRowVectorBase() const
Definition MatrixBase.h:818
MatrixView_< EHerm > operator~() const
Definition MatrixBase.h:610
EScalarNormSq ScalarNormSq
Definition MatrixBase.h:101
CNT< E >::TInvert EInvert
Definition MatrixBase.h:86
MatrixBase & copyAssign(const MatrixBase &b)
Copy assignment is a deep copy but behavior depends on type of lhs: if view, rhs must match.
Definition MatrixBase.h:196
const MatrixBase & operator+() const
Definition MatrixBase.h:760
CNT< E >::Scalar EScalar
Definition MatrixBase.h:91
MatrixBase< ESqTHerm > TSqTHerm
Definition MatrixBase.h:116
const MatrixView_< ELT > & getAsMatrixView() const
Definition MatrixBase.h:792
MatrixBase< ESqHermT > TSqHermT
Definition MatrixBase.h:115
RowVectorView_< ELT > updRow(int i)
Definition BigMatrix.h:279
ELT & updElt(int i, int j)
Definition MatrixBase.h:656
VectorView_< ELT > operator()(int j) const
Definition MatrixBase.h:594
ScalarNormSq normSqr() const
This is the scalar Frobenius norm, and its square.
Definition MatrixBase.h:722
MatrixBase()
The default constructor builds a 0x0 matrix managed by a helper that understands how many scalars the...
Definition MatrixBase.h:160
CNT< E >::TReal EReal
Definition MatrixBase.h:78
const TNeg & operator-() const
Definition MatrixBase.h:764
EltResult< typenameVectorBase< ER >::templateEltResult< EC >::Mul >::Mul rowAndColScale(const VectorBase< ER > &r, const VectorBase< EC > &c) const
Definition MatrixBase.h:427
void elementwiseMultiplyFromLeft(const MatrixBase< EE > &, typename MatrixBase< EE >::template EltResult< E >::Mul &) const
Definition BigMatrix.h:484
void lockShape()
Definition MatrixBase.h:783
ptrdiff_t nelt() const
Return the number of elements in the logical shape of this matrix.
Definition MatrixBase.h:147
MatrixBase< ENormalize > TNormalize
Definition MatrixBase.h:114
CNT< E >::TSqHermT ESqHermT
Definition MatrixBase.h:88
int getNScalarsPerElement() const
This is the number of consecutive scalars used to represent one element of type ELT.
Definition MatrixBase.h:830
MatrixBase & operator*=(const StdNumber &t)
Definition MatrixBase.h:289
MatrixBase< EAbs > TAbs
Definition MatrixBase.h:111
Vector_< ELT > & updAsVector()
Definition MatrixBase.h:803
ptrdiff_t getContiguousScalarDataLength() const
Definition MatrixBase.h:838
MatrixBase(int m, int n)
This constructor allocates the default matrix a completely uncommitted matrix commitment,...
Definition MatrixBase.h:164
VectorView_< ELT > diag()
This non-const version of diag() is an alternate name for updDiag() available for historical reasons.
Definition MatrixBase.h:621
MatrixBase & operator-=(const MatrixBase< EE > &b)
Definition MatrixBase.h:301
MatrixBase & setToZero()
Definition MatrixBase.h:584
RowVectorBase< ELT > & updAsRowVectorBase()
Definition MatrixBase.h:820
MatrixBase(const TNeg &b)
Implicit conversion from matrix with negated elements (otherwise this is just like the copy construct...
Definition MatrixBase.h:190
const Vector_< ELT > & getAsVector() const
Definition MatrixBase.h:801
MatrixBase(const MatrixCommitment &commitment, const MatrixHelper< Scalar > &source, const typename MatrixHelper< Scalar >::ShallowCopy &shallow)
Definition MatrixBase.h:275
void commitTo(const MatrixCommitment &mc)
Change the handle commitment for this matrix handle; only allowed if the handle is currently clear.
Definition MatrixBase.h:123
void swapOwnedContiguousScalarData(Scalar *newData, ptrdiff_t length, Scalar *&oldData)
Definition MatrixBase.h:853
TAbs abs() const
abs() with the result as a function return.
Definition MatrixBase.h:698
MatrixBase & operator=(const MatrixBase< EE > &b)
Definition MatrixBase.h:297
RowVectorView_< ELT > operator[](int i) const
Definition MatrixBase.h:592
EScalar Scalar
Definition MatrixBase.h:97
TNeg & updNegate()
Definition MatrixBase.h:762
MatrixBase(const MatrixCommitment &commitment, int m, int n, const ELT &initialValue)
Initializing constructor with all of the initially-allocated elements initialized to the same value.
Definition MatrixBase.h:224
EStdNumber StdNumber
Definition MatrixBase.h:99
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< EStandard > TStandard
Definition MatrixBase.h:112
CNT< E >::TImag EImag
Definition MatrixBase.h:79
MatrixBase & viewAssign(const MatrixBase &src)
View assignment is a shallow copy, meaning that we disconnect the MatrixBase from whatever it used to...
Definition MatrixBase.h:211
RowVectorView_< ELT > row(int i) const
Definition BigMatrix.h:270
MatrixView_< EHerm > transpose() const
Definition BigMatrix.h:222
MatrixBase & operator+=(const MatrixBase< EE > &b)
Definition MatrixBase.h:299
MatrixBase(const MatrixCommitment &commitment, MatrixHelper< Scalar > &source, const typename MatrixHelper< Scalar >::ShallowCopy &shallow)
Definition MatrixBase.h:271
EltResult< S >::Add elementwiseAddScalar(const S &s) const
Definition MatrixBase.h:472
Vector_< ELT > rowSum() const
Form the row sums of this matrix, returned as a Vector.
Definition MatrixBase.h:751
const ELT & operator()(int i, int j) const
Definition MatrixBase.h:658
CNT< E >::TAbs EAbs
Definition MatrixBase.h:84
CNT< E >::THerm EHerm
Definition MatrixBase.h:81
MatrixBase(const MatrixCommitment &commitment, const MatrixHelper< Scalar > &source, const typename MatrixHelper< Scalar >::DeepCopy &deep)
Definition MatrixBase.h:279
RowVectorView_< ELT > & updAsRowVectorView()
Definition MatrixBase.h:812
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
bool isResizeable() const
Definition MatrixCharacteristics.h:925
Definition MatrixHelper.h:48
Definition MatrixHelper.h:96
Definition MatrixHelper.h:95
Here we define class MatrixHelper, the scalar-type templatized helper class for the more general,...
Definition MatrixHelper.h:79
void rowSum(int i, S *eltp) const
void dump(const char *msg=0) const
const MatrixCommitment & getCharacterCommitment() const
const S * getElt(int i, int j) const
MatrixHelper & writableViewAssign(MatrixHelper &source)
const S * getContiguousData() const
const MatrixCharacter & getMatrixCharacter() const
bool hasContiguousData() const
void fillWith(const S *eltp)
void resizeKeep(int m, int n)
void subIn(const MatrixHelper &)
void resize(int m, int n)
void commitTo(const MatrixCommitment &)
MatrixHelper & copyAssign(const MatrixHelper &source)
void swapOwnedContiguousData(S *newData, ptrdiff_t length, S *&oldData)
ptrdiff_t getContiguousDataLength() const
void getAnyElt(int i, int j, S *value) const
void scaleBy(const StdNumber &)
void copyInByRowsFromCpp(const S *elts)
void colSum(int j, S *eltp) const
void addIn(const MatrixHelper &)
void fillWithScalar(const StdNumber &)
void replaceContiguousData(S *newData, ptrdiff_t length, bool takeOwnership)
(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
This is a dataless rehash of the MatrixBase class to specialize it for RowVectors.
Definition RowVectorBase.h:42
(Advanced) This class is identical to RowVector_ except that it has shallow (reference) copy and assi...
Definition RowVectorView_.h:42
Represents a variable size row vector; much less common than the column vector type Vector_.
Definition RowVector_.h:52
This is a dataless rehash of the MatrixBase class to specialize it for Vectors.
Definition VectorBase.h:42
(Advanced) This class is identical to Vector_ except that it has shallow (reference) copy and assignm...
Definition VectorView_.h:42
This is the vector class intended to appear in user code for large, variable size column vectors.
Definition Vector_.h:50
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition Assembler.h:37
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double.
Definition SimTKcommon/include/SimTKcommon/internal/common.h:606
Definition MatrixBase.h:128
MatrixBase< typename CNT< E >::template Result< P >::Add > Add
Definition MatrixBase.h:131
MatrixBase< typename CNT< E >::template Result< P >::Sub > Sub
Definition MatrixBase.h:132
MatrixBase< typename CNT< E >::template Result< P >::Mul > Mul
Definition MatrixBase.h:129
MatrixBase< typename CNT< E >::template Result< P >::Dvd > Dvd
Definition MatrixBase.h:130