15 #define REPORT { static ExeCounter ExeCount(__LINE__,1); ++ExeCount; } 35 int a = attribute & mt.
attribute & ~(Symmetric | Skew);
36 a |= (a & Diagonal) * 63;
48 int a = ((attribute | mt.attribute) & ~(Symmetric + Skew + Valid + Ones))
49 | (attribute & mt.attribute);
50 if ((a & Lower) != 0 && (a & Upper) != 0) a |= Diagonal;
51 if ((attribute & Skew) != 0)
53 if ((mt.attribute & Symmetric) != 0) a |= Skew;
54 if ((mt.attribute & Skew) != 0) { a &= ~Skew; a |= Symmetric; }
56 else if ((mt.attribute & Skew) != 0 && (attribute & Symmetric) != 0)
58 a |= (a & Diagonal) * 63;
69 int a = (attribute & mt.attribute) & ~Ones;
70 if ((attribute & Band) != 0 && (mt.attribute & Square) != 0)
80 int a = attribute & ~(Band+LUDeco);
81 a |= (a & Diagonal) * 63;
91 a ^= (((a >> 1) ^ a) & Lower) * 3;
99 return (attribute >= Dg) ? attribute : (attribute & ~Symmetric);
116 case Valid:
REPORT return "Rect ";
117 case Valid+Square:
REPORT return "Squ ";
118 case Valid+Symmetric+Square:
REPORT return "Sym ";
119 case Valid+Skew+Square:
REPORT return "Skew ";
120 case Valid+Band+Square:
REPORT return "Band ";
121 case Valid+Symmetric+Band+Square:
REPORT return "SmBnd";
122 case Valid+Upper+Square:
REPORT return "UT ";
123 case Valid+Diagonal+Symmetric+Band+Upper+Lower+Square:
125 case Valid+Diagonal+Symmetric+Band+Upper+Lower+Ones+Square:
127 case Valid+Band+Upper+Square:
REPORT return "UpBnd";
128 case Valid+Lower+Square:
REPORT return "LT ";
129 case Valid+Band+Lower+Square:
REPORT return "LwBnd";
132 if (!(attribute & Valid))
return "UnSp ";
133 if (attribute & LUDeco)
134 return (attribute & Band) ?
"BndLU" :
"Crout";
150 if (nr==1) { gm =
new RowVector(nc);
break; }
151 gm =
new Matrix(nr, nc);
break;
158 case Valid+Symmetric+Square:
161 case Valid+Band+Square:
165 gm =
new BandMatrix(nr,bw.lower,bw.upper);
break;
168 case Valid+Symmetric+Band+Square:
171 case Valid+Upper+Square:
174 case Valid+Diagonal+Symmetric+Band+Upper+Lower+Square:
177 case Valid+Band+Upper+Square:
180 case Valid+Lower+Square:
183 case Valid+Band+Lower+Square:
186 case Valid+Diagonal+Symmetric+Band+Upper+Lower+Ones+Square:
virtual MatrixBandWidth BandWidth() const
GeneralMatrix * New() const
void MatrixErrorNoSpace(const void *)
MatrixType MultRHS() const
bool Rectangular(MatrixType a, MatrixType b, MatrixType c)
const char * Value() const
MatrixType SP(const MatrixType &) const
MatrixType operator*(const MatrixType &) const
MatrixType KP(const MatrixType &) const