20 #define REPORT { static ExeCounter ExeCount(__LINE__,1); ++ExeCount; } 40 int a = attribute & mt.
attribute & ~(Symmetric | Skew);
41 a |= (a & Diagonal) * 63;
53 int a = ((attribute | mt.attribute) & ~(Symmetric + Skew + Valid + Ones))
54 | (attribute & mt.attribute);
55 if ((a & Lower) != 0 && (a & Upper) != 0) a |= Diagonal;
56 if ((attribute & Skew) != 0)
58 if ((mt.attribute & Symmetric) != 0) a |= Skew;
59 if ((mt.attribute & Skew) != 0) { a &= ~Skew; a |= Symmetric; }
61 else if ((mt.attribute & Skew) != 0 && (attribute & Symmetric) != 0)
63 a |= (a & Diagonal) * 63;
74 int a = (attribute & mt.attribute) & ~Ones;
75 if ((attribute & Band) != 0 && (mt.attribute & Square) != 0)
85 int a = attribute & ~(Band+LUDeco);
86 a |= (a & Diagonal) * 63;
96 a ^= (((a >> 1) ^ a) & Lower) * 3;
104 return (attribute >= Dg) ? attribute : (attribute & ~Symmetric);
121 case Valid:
REPORT return "Rect ";
122 case Valid+Square:
REPORT return "Squ ";
123 case Valid+Symmetric+Square:
REPORT return "Sym ";
124 case Valid+Skew+Square:
REPORT return "Skew ";
125 case Valid+Band+Square:
REPORT return "Band ";
126 case Valid+Symmetric+Band+Square:
REPORT return "SmBnd";
127 case Valid+Skew+Band+Square:
REPORT return "SkBnd";
128 case Valid+Upper+Square:
REPORT return "UT ";
129 case Valid+Diagonal+Symmetric+Band+Upper+Lower+Square:
131 case Valid+Diagonal+Symmetric+Band+Upper+Lower+Ones+Square:
133 case Valid+Band+Upper+Square:
REPORT return "UpBnd";
134 case Valid+Lower+Square:
REPORT return "LT ";
135 case Valid+Band+Lower+Square:
REPORT return "LwBnd";
138 if (!(attribute & Valid))
return "UnSp ";
139 if (attribute & LUDeco)
140 return (attribute & Band) ?
"BndLU" :
"Crout";
156 if (nr==1) { gm =
new RowVector(nc);
break; }
157 gm =
new Matrix(nr, nc);
break;
164 case Valid+Symmetric+Square:
167 case Valid+Band+Square:
171 gm =
new BandMatrix(nr,bw.lower_val,bw.upper_val);
break;
174 case Valid+Symmetric+Band+Square:
177 case Valid+Upper+Square:
180 case Valid+Diagonal+Symmetric+Band+Upper+Lower+Square:
183 case Valid+Band+Upper+Square:
186 case Valid+Lower+Square:
189 case Valid+Band+Lower+Square:
192 case Valid+Diagonal+Symmetric+Band+Upper+Lower+Ones+Square:
GeneralMatrix * New() const
new matrix of given type
Miscellaneous exception (details in character string).
MatrixType i() const
type of inverse
MatrixType KP(const MatrixType &) const
virtual MatrixBandWidth bandwidth() const
MatrixType t() const
type of transpose
Upper triangular band matrix.
A matrix is not square exception.
const char * value() const
type as char string
MatrixType SP(const MatrixType &) const
Base of the matrix classes.
The usual rectangular matrix.
FloatVector FloatVector * a
MatrixType MultRHS() const
type for rhs of multiply
bool Rectangular(MatrixType a, MatrixType b, MatrixType c)
void MatrixErrorNoSpace(const void *)
test for allocation fails
Lower triangular band matrix.
The classes for matrices that can contain data are derived from this.
MatrixType operator*(const MatrixType &) const