1 #ifndef SimTK_SIMMATRIX_MATRIX_CHARACTERISTICS_H_
2 #define SimTK_SIMMATRIX_MATRIX_CHARACTERISTICS_H_
91 class MatrixStructure;
94 class MatrixCondition;
95 class MatrixCharacter;
96 class MatrixCommitment;
108 NoStructure = 0x00000000,
109 Matrix1d = 0x00000001,
111 Identity = 0x00000004,
112 Permutation = 0x00000008,
113 RepeatedDiagonal = 0x00000010,
114 Diagonal = 0x00000020,
115 BiDiagonal = 0x00000040,
116 TriDiagonal = 0x00000080,
117 BandedSymmetric = 0x00000100,
118 BandedHermitian = 0x00000200,
120 Triangular = 0x00000800,
121 QuasiTriangular = 0x00001000,
122 Hessenberg = 0x00002000,
123 Symmetric = 0x00004000,
124 Hermitian = 0x00008000,
125 SkewSymmetric = 0x00010000,
126 SkewHermitian = 0x00020000,
129 static const char* name(Structure);
145 static const char* name(Position);
158 NoDiagValue = 0x0000,
163 static const char* name(DiagValue);
171 if (structure == NoStructure)
173 if (position == NoPosition)
175 if (diagValue == NoDiagValue)
176 diagValue = StoredDiag;
181 return std::string(name(getStructure()))
182 +
"|" + std::string(name(getPosition()))
183 +
"|" + std::string(name(getDiagValue()));
189 : structure(sm), position(pm), diagValue(dm) {}
191 { structure=UncommittedStructure; position=UncommittedPosition;
192 diagValue=UncommittedDiagValue;
return *
this; }
194 {
return structure==UncommittedStructure && position==UncommittedPosition
195 && diagValue==UncommittedDiagValue; }
214 : structure(s), position(p), diagValue(d) {}
231 { structure=s; position=p; diagValue=d;
return *
this; }
234 { structure=NoStructure; position=NoPosition;
235 diagValue=NoDiagValue;
return *
this; }
238 Structure structure:32;
239 Position position:16;
240 DiagValue diagValue:16;
262 static const char* name(Packing);
268 NoPlacement = 0x0000,
272 static const char* name(Placement);
279 ColumnOrder = 0x0001,
282 static const char* name(Order);
292 static const char* name(Diagonal);
301 : packing(UncommittedPacking), placement(UncommittedPlacement),
302 order(UncommittedOrder), diagonal(UncommittedDiagonal) {}
304 : packing(pkm), placement(plm), order(om), diagonal(dm) {}
306 { packing=UncommittedPacking; placement=UncommittedPlacement;
307 order=UncommittedOrder; diagonal=UncommittedDiagonal;
return *
this; }
309 {
return packing==UncommittedPacking && placement==UncommittedPlacement
310 && order==UncommittedOrder && diagonal==UncommittedDiagonal; }
330 return std::string(name(getPacking()))
331 +
"|" + std::string(name(getPlacement()))
332 +
"|" + std::string(name(getOrder()))
333 +
"|" + std::string(name(getDiagonal()));
351 : packing(NoPacking), placement(NoPlacement), order(NoOrder), diagonal(NoDiag) {}
357 : packing(pk), placement(pl), order(o), diagonal(d) {}
362 : packing(pk), placement(NoPlacement), order(o), diagonal(StoredDiag) {}
367 if (packing==NoPacking)
369 if (placement==NoPlacement)
373 if (diagonal==NoDiag)
374 diagonal = StoredDiag;
380 { packing=NoPacking; placement=NoPlacement;
381 order=NoOrder; diagonal=NoDiag;
return *
this; }
395 Placement placement:16;
397 Diagonal diagonal:16;
435 static const char* name(Outline);
442 Mask() : outline(UncommittedOutline) {}
452 std::string
name()
const {
return std::string(
name(getOutline()));}
467 static OutlineMask calcMask(Outline);
474 bool isSizeOK(
int m,
int n)
const;
477 void getMinimumSize(
int& m,
int& n)
const;
504 UnknownCondition = 0x0000,
506 PositiveDefinite = 0x0002,
507 WellConditioned = 0x0004,
511 static const char* name(Condition);
518 UnknownDiagonal = 0x0000,
519 ZeroDiagonal = 0x0001,
520 OneDiagonal = 0x0002,
521 RealDiagonal = 0x0004,
522 ImaginaryDiagonal = 0x0008
524 static const char* name(Diagonal);
532 Mask() : condition(UncommittedCondition), diagonal(UncommittedDiagonal) {}
535 { condition=UncommittedCondition; diagonal=UncommittedDiagonal;
return *
this;}
537 {
return condition==UncommittedCondition && diagonal==UncommittedDiagonal;}
547 {
return std::string(name(getCondition())) +
"|" + std::string(name(getDiagonal()));}
565 static ConditionMask calcMask(Condition);
572 static DiagonalMask calcMask(Diagonal);
577 {
return Mask(calcMask(getCondition()), calcMask(getDiagonal())); }
586 Condition condition:16;
587 Diagonal diagonal:16;
626 std::pair<int,int>
getSize()
const {
return std::pair<int,int>(nrow(),ncol());}
627 ptrdiff_t
nelt()
const {
return (ptrdiff_t)nrow() * (ptrdiff_t)ncol();}
632 {
return std::pair<int,int>(getLowerBandwidth(), getUpperBandwidth()); }
659 assert(lb>=0 && lb>=0);
660 lband = lb; uband = ub;
682 : nr(m), nc(n), lband(lb), uband(ub),
683 structure(structure), storage(storage),
685 condition(condition) {}
700 { assert(m>=0 && n>=0); nr = m; nc = n;
return *
this; }
702 { assert(m>=0); nr = m;
return *
this; }
703 MatrixCharacter& setNumCols(
int n)
704 { assert(n>=0); nc = n;
return *
this; }
709 operator<<(std::ostream& o,
const MatrixCharacter&);
855 { commitNumRows(m); commitNumCols(n);
return *
this; }
858 masks.nr = m;
return *
this; }
861 masks.nc = n;
return *
this; }
864 { commitLowerBandwidth(lb); commitUpperBandwidth(ub);
return *
this;}
867 masks.lband = lb;
return *
this; }
870 masks.uband = ub;
return *
this; }
873 { structure=s; masks.structure=s.
mask();
return *
this; }
875 { storage=s; masks.storage =s.
mask();
return *
this; }
877 { outline=o; masks.outline =o.
mask();
return *
this; }
879 { condition=c; masks.condition=c.
mask();
return *
this; }
891 MatrixCharacter calcDefaultCharacter(
int minNumRows,
int minNumCols)
const;
913 bool isSizeOK(
int m,
int n)
const {
return masks.isSizeOK(m,n);}
915 {
return isSizeOK(mn.first, mn.second); }
917 bool isBandwidthOK(
int lower,
int upper)
const {
return masks.isBandwidthOK(lower,upper);}
920 {
return masks.isSatisfiedBy(actual); }
922 {
return getStructureMask().isSatisfiedBy(s); }
924 {
return getStorageMask().isSatisfiedBy(s); }
926 {
return getOutlineMask().isSatisfiedBy(o); }
928 {
return getConditionMask().isSatisfiedBy(c); }
936 {
return !getStructureMask().isUncommitted(); }
938 {
return !getStorageMask().isUncommitted();}
940 {
return !getOutlineMask().isUncommitted(); }
942 {
return !getConditionMask().isUncommitted();}
946 structure.setToNone();
949 condition.setToNone();
950 masks.setToUncommitted();
958 : structure(structure), storage(storage),
959 outline(outline), condition(condition),
966 masks.structure = structure.
mask();
967 masks.storage = storage.
mask();
968 masks.outline = outline.
mask();
969 masks.condition = condition.
mask();
1108 #endif // SimTK_SIMMATRIX_MATRIX_CHARACTERISTICS_H_
const MatrixStorage::Mask & getStorageMask() const
Definition: MatrixCharacteristics.h:901
bool isBandwidthOK(int lower, int upper) const
Check whether an actual bandwidth satisfies the bandwidth commitment.
Definition: MatrixCharacteristics.h:813
MatrixOutline & updOutline()
Definition: MatrixCharacteristics.h:641
MatrixCondition & updCondition()
Definition: MatrixCharacteristics.h:642
int nrow() const
Definition: MatrixCharacteristics.h:624
MatrixCommitment & commitBandwidth(int lb, int ub)
Definition: MatrixCharacteristics.h:863
MatrixCommitment & commitSize(int m, int n)
Definition: MatrixCharacteristics.h:854
Use this class to represent sets of acceptable values for each of the storage attributes (packing...
Definition: MatrixCharacteristics.h:299
Definition: MatrixCharacteristics.h:429
StructureMask structure
Definition: MatrixCharacteristics.h:204
Vector(int m)
Commit to a column vector of a particular length.
Definition: MatrixCharacteristics.h:998
PackingMask packing
Definition: MatrixCharacteristics.h:320
Matrix "outline" refers to the characteristic relationship between the number of rows and columns of ...
Definition: MatrixCharacteristics.h:423
MatrixStructure & updStructure()
Definition: MatrixCharacteristics.h:639
#define SimTK_SimTKCOMMON_EXPORT
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:202
LapackFull(int m, int n)
Definition: MatrixCharacteristics.h:718
std::string name() const
Definition: MatrixCharacteristics.h:329
MatrixCharacter()
Default constructor sets lengths to zero and the other characteristics to "none specified".
Definition: MatrixCharacteristics.h:607
bool isNumColsLocked() const
Definition: MatrixCharacteristics.h:933
MatrixCharacter & setCondition(const MatrixCondition &ca)
Definition: MatrixCharacteristics.h:647
Mask & setToUncommitted()
Definition: MatrixCharacteristics.h:305
Packing
Definition: MatrixCharacteristics.h:252
MatrixStructure & set(Structure s, Position p, DiagValue d)
Definition: MatrixCharacteristics.h:230
Vector(int m)
Definition: MatrixCharacteristics.h:731
Structure
Definition: MatrixCharacteristics.h:107
bool isBandwidthOK(int lower, int upper) const
Definition: MatrixCharacteristics.h:917
MatrixStructure & setMissingAttributes()
Definition: MatrixCharacteristics.h:170
Use this class to represent a set of acceptable Condition values.
Definition: MatrixCharacteristics.h:531
MatrixStructure & setPosition(Position p)
Definition: MatrixCharacteristics.h:227
OutlineMask outline
Definition: MatrixCharacteristics.h:449
Structure getStructure() const
Definition: MatrixCharacteristics.h:222
bool isOutlineCommitted() const
Definition: MatrixCharacteristics.h:939
Placement
Definition: MatrixCharacteristics.h:267
MatrixStorage storage
Definition: MatrixCharacteristics.h:975
std::string name() const
Definition: MatrixCharacteristics.h:180
int getDefaultNumCols() const
Definition: MatrixCharacteristics.h:911
This is the default commitment for a skew Hermitian (*not* skew symmetric) matrix.
Definition: MatrixCharacteristics.h:1087
MatrixCondition::Mask condition
Definition: MatrixCharacteristics.h:824
unsigned short ConditionMask
Definition: MatrixCharacteristics.h:513
MatrixCondition & setDiagonal(Diagonal d)
Definition: MatrixCharacteristics.h:583
int nc
actual number of columns
Definition: MatrixCharacteristics.h:688
bool isSatisfiedBy(const MatrixOutline &actual) const
Definition: MatrixCharacteristics.h:446
Predefined MatrixCharacter for an ordinary column vector of a particular size.
Definition: MatrixCharacteristics.h:729
Mask(PackingMask pkm, PlacementMask plm, OrderMask om, DiagonalMask dm)
Definition: MatrixCharacteristics.h:303
MatrixCharacter & setActualNumCols(int n)
Definition: MatrixCharacteristics.h:655
Definition: MatrixCharacteristics.h:441
MatrixCondition & setToNone()
Restore to default-constructed state of "none".
Definition: MatrixCharacteristics.h:558
MatrixStorage & updStorage()
Definition: MatrixCharacteristics.h:640
Mask()
Definition: MatrixCharacteristics.h:532
Matrix "condition" is a statement about the numerical characteristics of a Matrix.
Definition: MatrixCharacteristics.h:501
SizeMask nr
number of rows
Definition: MatrixCharacteristics.h:817
MatrixCommitment & commitUpperBandwidth(int ub)
Definition: MatrixCharacteristics.h:868
const MatrixStructure & getStructure() const
Definition: MatrixCharacteristics.h:634
Outline
Definition: MatrixCharacteristics.h:425
int getLowerBandwidth() const
Definition: MatrixCharacteristics.h:629
unsigned short OrderMask
Definition: MatrixCharacteristics.h:283
Matrix "structure" refers to an inherent mathematical (or at least algorithmic) characteristic of the...
Definition: MatrixCharacteristics.h:105
A MatrixCharacter is a set containing a value for each of the matrix characteristics except element t...
Definition: MatrixCharacteristics.h:603
unsigned int getLowerBandwidthMask() const
Definition: MatrixCharacteristics.h:769
Matrix "storage" refers to the physical layout of data in the computer’s memory.
Definition: MatrixCharacteristics.h:250
This class collects masks of each characteristic type for representing sets of accceptable characteri...
Definition: MatrixCharacteristics.h:755
RowVector(int n)
Commit to a row vector of a particular length.
Definition: MatrixCharacteristics.h:1022
unsigned int getUpperBandwidthMask() const
Definition: MatrixCharacteristics.h:770
MatrixCommitment & commitNumRows(int m)
Definition: MatrixCharacteristics.h:856
unsigned short PositionMask
Definition: MatrixCharacteristics.h:147
ptrdiff_t nelt() const
Definition: MatrixCharacteristics.h:627
Definition: MatrixCharacteristics.h:186
bool isFullyResizeable() const
Definition: MatrixCharacteristics.h:763
MatrixStorage & setToNone()
Restore this object to its default-constructed state of "none".
Definition: MatrixCharacteristics.h:379
OrderMask order
Definition: MatrixCharacteristics.h:322
Vector()
Commit to a resizeable column vector.
Definition: MatrixCharacteristics.h:989
DiagValueMask diagValue
Definition: MatrixCharacteristics.h:206
MatrixOutline(Outline outline)
This is an implicit conversion from the Outline enum to a MatrixOutline object.
Definition: MatrixCharacteristics.h:459
bool isUncommitted() const
Definition: MatrixCharacteristics.h:445
bool isSatisfiedBy(const MatrixStorage &actual) const
Definition: MatrixCharacteristics.h:316
MatrixStructure structure
These are the commitments as specified.
Definition: MatrixCharacteristics.h:974
bool isSatisfiedBy(Structure str, Position pos, DiagValue diag) const
Definition: MatrixCharacteristics.h:196
bool isUncommitted() const
Definition: MatrixCharacteristics.h:308
Mask mask() const
Given a Structure commitment, which more-restrictive Structures will still satisfy this commitment...
Mask()
Definition: MatrixCharacteristics.h:187
MatrixCommitment & commitNumCols(int n)
Definition: MatrixCharacteristics.h:859
RowVector(int n)
Definition: MatrixCharacteristics.h:744
unsigned int SizeMask
Definition: MatrixCharacteristics.h:759
MatrixCondition(Condition cond, Diagonal diag=UnknownDiagonal)
This is an implicit conversion from the Condition enum to a MatrixCondition object.
Definition: MatrixCharacteristics.h:555
void clear()
Set commitment s to "none" and masks to "uncommitted" for all characteristics.
Definition: MatrixCharacteristics.h:945
MatrixCommitment & commitStructure(const MatrixStructure &s)
Definition: MatrixCharacteristics.h:872
MatrixStorage(Packing pk, Placement pl=NoPlacement, Order o=NoOrder, Diagonal d=NoDiag)
This constructor is also an implicit conversion from the Packing enum to a MatrixStorage object which...
Definition: MatrixCharacteristics.h:356
Predefined MatrixCharacter for an ordinary Lapack-style full matrix of a particular dimension m x n (...
Definition: MatrixCharacteristics.h:716
Order
Definition: MatrixCharacteristics.h:277
unsigned short DiagValueMask
Definition: MatrixCharacteristics.h:165
MatrixStorage & setPacking(Packing p)
Definition: MatrixCharacteristics.h:383
Packing getPacking() const
Definition: MatrixCharacteristics.h:388
const MatrixStorage & getStorageCommitment() const
Definition: MatrixCharacteristics.h:895
MatrixOutline outline
Definition: MatrixCharacteristics.h:976
static MatrixOutline calcFromSize(int m, int n)
Determine the outline from given actual dimensions.
Hermitian()
Definition: MatrixCharacteristics.h:1059
const MatrixCondition & getConditionCommitment() const
Definition: MatrixCharacteristics.h:897
Placement getPlacement() const
Definition: MatrixCharacteristics.h:389
MatrixStructure & setDiagValue(DiagValue d)
Definition: MatrixCharacteristics.h:228
MatrixCharacter & setOutline(const MatrixOutline &oa)
Definition: MatrixCharacteristics.h:646
std::string name() const
Definition: MatrixCharacteristics.h:452
bool isOutlineOK(const MatrixOutline &o) const
Definition: MatrixCharacteristics.h:925
DiagValue
For triangular, symmetric, and hermitian matrices the diagonal elements may have a single...
Definition: MatrixCharacteristics.h:157
static const SizeMask SizeUncommitted
Definition: MatrixCharacteristics.h:760
MatrixStructure(Structure s, Position p=NoPosition, DiagValue d=NoDiagValue)
This constructor is also an implicit conversion from the Structure enum to a MatrixStructure object w...
Definition: MatrixCharacteristics.h:213
SkewSymmetric()
Definition: MatrixCharacteristics.h:1074
MatrixStorage storage
Definition: MatrixCharacteristics.h:693
This is the default commitment for a triangular matrix.
Definition: MatrixCharacteristics.h:1034
Diagonal getDiagonal() const
Definition: MatrixCharacteristics.h:391
MatrixCharacter & setStorage(const MatrixStorage &sa)
Definition: MatrixCharacteristics.h:645
bool isSizeOK(int m, int n) const
Check whether an actual size satisfies the size commitment.
Definition: MatrixCharacteristics.h:807
MatrixCharacter & setActualNumRows(int m)
Definition: MatrixCharacteristics.h:653
MatrixStructure()
Definition: MatrixCharacteristics.h:209
MatrixOutline & setToNone()
Set the outline back to its default-constructed value of "none".
Definition: MatrixCharacteristics.h:462
SizeMask uband
upper bandwidth, if banded
Definition: MatrixCharacteristics.h:819
int uband
actual upper bandwidth, if banded
Definition: MatrixCharacteristics.h:690
bool isStructureCommitted() const
Definition: MatrixCharacteristics.h:935
This is the default commitment for a row vector.
Definition: MatrixCharacteristics.h:1010
Mask(ConditionMask cmask, DiagonalMask dmask)
Definition: MatrixCharacteristics.h:533
unsigned int getNumColsMask() const
Definition: MatrixCharacteristics.h:768
int lband
actual lower bandwidth, if banded
Definition: MatrixCharacteristics.h:690
Predefined MatrixCharacter for an ordinary row vector of a particular size.
Definition: MatrixCharacteristics.h:742
int ncol() const
Definition: MatrixCharacteristics.h:625
const MatrixStorage & getStorage() const
Definition: MatrixCharacteristics.h:635
Mask mask() const
When "this" outline is used as a commitment, it represents a mask of acceptable outlines.
Definition: MatrixCharacteristics.h:471
Diagonal getDiagonal() const
Definition: MatrixCharacteristics.h:580
Mask(OutlineMask mask)
Definition: MatrixCharacteristics.h:443
This is a user-includable header which includes everything needed to make use of SimMatrix Scalar cod...
MatrixCharacter(int m, int n, int lb, int ub, MatrixStructure structure, MatrixStorage storage, MatrixCondition condition)
Definition: MatrixCharacteristics.h:677
MatrixCondition()
The default constructor sets the condition to Unknown, which is typically where it remains...
Definition: MatrixCharacteristics.h:551
MatrixCharacter & setUpperBandwidth(int ub)
Definition: MatrixCharacteristics.h:668
const MatrixCondition & getCondition() const
Definition: MatrixCharacteristics.h:637
unsigned short PackingMask
Definition: MatrixCharacteristics.h:263
std::string name() const
Definition: MatrixCharacteristics.h:546
Mask()
Definition: MatrixCharacteristics.h:757
DiagValue getDiagValue() const
Definition: MatrixCharacteristics.h:224
Mask & setToUncommitted()
Definition: MatrixCharacteristics.h:444
PlacementMask placement
Definition: MatrixCharacteristics.h:321
bool isStructureOK(const MatrixStructure &s) const
Definition: MatrixCharacteristics.h:921
bool isNumRowsLocked() const
Definition: MatrixCharacteristics.h:764
MatrixCharacter::Mask masks
These are the bitmasks of acceptable characteristics which would satisfy the above-specified commitme...
Definition: MatrixCharacteristics.h:981
MatrixCharacter & setToNone()
Restore this MatrixCharacter to its default-constructed state of "none".
Definition: MatrixCharacteristics.h:615
MatrixCharacter & setActualSize(int m, int n)
Set the actual size and update the outline to match.
Definition: MatrixCharacteristics.h:651
RowVector()
Commit to a resizeable row vector.
Definition: MatrixCharacteristics.h:1013
Mask & setToUncommitted()
Definition: MatrixCharacteristics.h:534
MatrixStorage & setMissingAttributes()
Assuming this is an actual matrix description, set any unspecified attributes to appropriate defaults...
Definition: MatrixCharacteristics.h:366
bool isNumRowsLocked() const
Definition: MatrixCharacteristics.h:932
Mask mask() const
Calculate the commitment mask associated with specifying "this" set of storage attributes as a commit...
Definition: MatrixCharacteristics.h:340
int getDefaultNumRows() const
Definition: MatrixCharacteristics.h:910
Position
For triangular matrices, we have to know which triangle we're talking about.
Definition: MatrixCharacteristics.h:140
unsigned int getNumRowsMask() const
Definition: MatrixCharacteristics.h:767
int getDefaultUpperBandwidth() const
Definition: MatrixCharacteristics.h:778
MatrixCommitment & commitOutline(const MatrixOutline &o)
Definition: MatrixCharacteristics.h:876
MatrixCommitment & commitLowerBandwidth(int lb)
Definition: MatrixCharacteristics.h:865
MatrixStorage & setOrder(Order o)
Definition: MatrixCharacteristics.h:385
std::ostream & operator<<(std::ostream &o, const ContactForce &f)
Definition: CompliantContactSubsystem.h:387
bool isUncommitted() const
Definition: MatrixCharacteristics.h:536
MatrixCommitment & commitCondition(const MatrixCondition &c)
Definition: MatrixCharacteristics.h:878
Diagonal
Definition: MatrixCharacteristics.h:287
MatrixCommitment & commitStorage(const MatrixStorage &s)
Definition: MatrixCharacteristics.h:874
std::pair< int, int > getBandwidth() const
Definition: MatrixCharacteristics.h:631
MatrixStorage()
Default constructor leaves all fields unspecified.
Definition: MatrixCharacteristics.h:350
bool isSizeOK(const std::pair< int, int > &mn) const
Definition: MatrixCharacteristics.h:914
Mask()
Definition: MatrixCharacteristics.h:442
DiagonalMask diagonal
Definition: MatrixCharacteristics.h:543
MatrixCharacter & setStructure(const MatrixStructure &sa)
Definition: MatrixCharacteristics.h:644
const MatrixCondition::Mask & getConditionMask() const
Definition: MatrixCharacteristics.h:903
Generic Row.
Definition: Row.h:118
bool isConditionOK(const MatrixCondition &c) const
Definition: MatrixCharacteristics.h:927
MatrixCondition & setCondition(Condition c)
Definition: MatrixCharacteristics.h:582
Definition: MatrixCharacteristics.h:428
bool isFullyResizeable() const
Definition: MatrixCharacteristics.h:931
unsigned short PlacementMask
Definition: MatrixCharacteristics.h:273
MatrixOutline::Mask outline
Definition: MatrixCharacteristics.h:823
MatrixCommitment(const MatrixStructure &str)
This is an implicit conversion from a MatrixStructure specification to a MatrixCommitment with storag...
Definition: MatrixCharacteristics.h:843
bool isStorageCommitted() const
Definition: MatrixCharacteristics.h:937
int getDefaultNumRows() const
Definition: MatrixCharacteristics.h:772
#define SimTK_SIZECHECK_NONNEG(sz, where)
Definition: ExceptionMacros.h:147
MatrixCondition condition
Definition: MatrixCharacteristics.h:977
Diagonal
Definition: MatrixCharacteristics.h:517
MatrixStorage & setDiagonal(Diagonal d)
Definition: MatrixCharacteristics.h:386
Mask()
Definition: MatrixCharacteristics.h:300
MatrixStructure & setToNone()
Definition: MatrixCharacteristics.h:233
int getDefaultLowerBandwidth() const
Definition: MatrixCharacteristics.h:777
DiagonalMask diagonal
Definition: MatrixCharacteristics.h:323
Mask & setToUncommitted()
Definition: MatrixCharacteristics.h:190
bool isUpperBandwidthLocked() const
Definition: MatrixCharacteristics.h:776
bool isUncommitted() const
Return if all fields are set to "Uncommitted" (all bits are one).
Definition: MatrixCharacteristics.h:789
This is the default commitment for skew symmetric (*not* skew Hermitian) matrix.
Definition: MatrixCharacteristics.h:1072
Mask(StructureMask sm, PositionMask pm, DiagValueMask dm)
Definition: MatrixCharacteristics.h:188
MatrixStorage(Packing pk, Order o)
This constructor is for the common case of just packing and order, with no particular placement and a...
Definition: MatrixCharacteristics.h:361
RowVectors are much less common than Vectors.
Definition: BigMatrix.h:191
bool isSatisfiedBy(Packing pack, Placement place, Order ord, Diagonal diag) const
Definition: MatrixCharacteristics.h:311
bool isConditionCommitted() const
Definition: MatrixCharacteristics.h:941
MatrixCharacter::Mask::SizeMask getUpperBandwidthMask() const
Definition: MatrixCharacteristics.h:908
bool isLowerBandwidthLocked() const
Definition: MatrixCharacteristics.h:775
SizeMask nc
number of columns
Definition: MatrixCharacteristics.h:817
SkewHermitian()
Definition: MatrixCharacteristics.h:1089
bool isStorageOK(const MatrixStorage &s) const
Definition: MatrixCharacteristics.h:923
const MatrixStructure & getStructureCommitment() const
These report the commitment as it was specified.
Definition: MatrixCharacteristics.h:894
A MatrixCommitment provides a set of acceptable matrix characteristics.
Definition: MatrixCharacteristics.h:837
Position getPosition() const
Definition: MatrixCharacteristics.h:223
unsigned short DiagonalMask
Definition: MatrixCharacteristics.h:526
PositionMask position
Definition: MatrixCharacteristics.h:205
std::pair< int, int > getSize() const
Definition: MatrixCharacteristics.h:626
ConditionMask condition
Definition: MatrixCharacteristics.h:542
bool isResizeable() const
Definition: MatrixCharacteristics.h:762
This is the default commitment for a Hermitian (*not* symmetric) matrix.
Definition: MatrixCharacteristics.h:1057
bool isSatisfiedBy(const MatrixStructure &actual) const
Definition: MatrixCharacteristics.h:200
bool isResizeable() const
Definition: MatrixCharacteristics.h:930
Condition
Definition: MatrixCharacteristics.h:503
MatrixCharacter::Mask::SizeMask getNumColsMask() const
Definition: MatrixCharacteristics.h:906
MatrixCommitment()
Definition: MatrixCharacteristics.h:839
const MatrixOutline::Mask & getOutlineMask() const
Definition: MatrixCharacteristics.h:902
This is the default commitment for a symmetric (*not* Hermitian) matrix.
Definition: MatrixCharacteristics.h:1045
const MatrixOutline & getOutlineCommitment() const
Definition: MatrixCharacteristics.h:896
bool isSatisfiedBy(const MatrixCharacter &actual) const
Definition: MatrixCharacteristics.h:919
MatrixCharacter::Mask::SizeMask getLowerBandwidthMask() const
Definition: MatrixCharacteristics.h:907
Condition getCondition() const
Definition: MatrixCharacteristics.h:579
bool isSizeOK(int m, int n) const
Definition: MatrixCharacteristics.h:913
MatrixCondition condition
Definition: MatrixCharacteristics.h:695
int nr
actual number of rows
Definition: MatrixCharacteristics.h:688
MatrixStorage & setPlacement(Placement p)
Definition: MatrixCharacteristics.h:384
MatrixStorage::Mask storage
Definition: MatrixCharacteristics.h:822
MatrixCharacter::Mask::SizeMask getNumRowsMask() const
Definition: MatrixCharacteristics.h:905
MatrixStructure & setStructure(Structure s)
Definition: MatrixCharacteristics.h:226
unsigned short DiagonalMask
Definition: MatrixCharacteristics.h:293
MatrixOutline outline
Definition: MatrixCharacteristics.h:694
bool isNumColsLocked() const
Definition: MatrixCharacteristics.h:765
MatrixStructure::Mask structure
Definition: MatrixCharacteristics.h:821
Triangular()
Definition: MatrixCharacteristics.h:1036
bool isSatisfiedBy(const MatrixCharacter &actual) const
Check whether an actual matrix character satisfies this matrix commitment.
Definition: MatrixCharacteristics.h:797
MatrixCharacter & setBandwidth(int lb, int ub)
Definition: MatrixCharacteristics.h:658
Mask mask() const
Return the commitment mask corresponding to use of "this" condition as a commitment.
Definition: MatrixCharacteristics.h:576
SizeMask lband
lower bandwidth, if banded
Definition: MatrixCharacteristics.h:819
MatrixOutline()
Default constructor produces an object containing no outline specification.
Definition: MatrixCharacteristics.h:456
bool isSatisfiedBy(const MatrixCondition &actual) const
Definition: MatrixCharacteristics.h:538
const MatrixOutline & getOutline() const
Definition: MatrixCharacteristics.h:636
int getUpperBandwidth() const
Definition: MatrixCharacteristics.h:630
MatrixStructure structure
Definition: MatrixCharacteristics.h:692
Symmetric()
Definition: MatrixCharacteristics.h:1047
Outline getOutline() const
Return the outline value stored in this MatrixOutline object.
Definition: MatrixCharacteristics.h:483
MatrixCommitment(const MatrixStructure &structure, const MatrixStorage &storage, const MatrixOutline &outline, const MatrixCondition &condition)
Definition: MatrixCharacteristics.h:954
This is the default commitment for a column vector.
Definition: MatrixCharacteristics.h:986
MatrixCharacter & setLowerBandwidth(int lb)
Definition: MatrixCharacteristics.h:663
Definition: MatrixCharacteristics.h:427
Mask & setToUncommitted()
Set all bits to one ("Uncommitted").
Definition: MatrixCharacteristics.h:781
unsigned short OutlineMask
Definition: MatrixCharacteristics.h:437
int getDefaultNumCols() const
Definition: MatrixCharacteristics.h:773
Order getOrder() const
Definition: MatrixCharacteristics.h:390
const MatrixStructure::Mask & getStructureMask() const
These report the masks of acceptable values generated from the commitment.
Definition: MatrixCharacteristics.h:900
bool isUncommitted() const
Definition: MatrixCharacteristics.h:193
unsigned int StructureMask
Definition: MatrixCharacteristics.h:131