54 double get(sal_uInt16 nColumn)
const
59 void set(sal_uInt16 nColumn,
const double& rValue)
78 if(fDefault != fLineValue)
92 for(sal_uInt16 b(0); b <
RowSize; b++)
104 if (
this != &rToBeCopied)
117 double get(sal_uInt16 nRow, sal_uInt16 nColumn)
const
119 return maLine[nRow].get(nColumn);
122 void set(sal_uInt16 nRow, sal_uInt16 nColumn,
const double& rValue)
124 maLine[nRow].set(nColumn, rValue);
128 bool ludcmp(sal_uInt16 nIndex[], sal_Int16& nParity)
130 double fBig, fSum, fDum;
135 sal_uInt16 nAMax = 0;
147 double fTemp(fabs(
get(
a, b)));
160 fStorage[
a] = 1.0 / fBig;
166 for(
a = 0;
a < b;
a++)
170 for(c = 0; c <
a; c++)
184 for(c = 0; c < b; c++)
190 fDum = fStorage[
a] * fabs(fSum);
203 fDum =
get(nAMax, c);
209 fStorage[nAMax] = fStorage[b];
215 const double fValBB(fabs(
get(b, b)));
224 fDum = 1.0 /
get(b, b);
236 void lubksb(
const sal_uInt16 nIndex[],
double fRow[])
const
239 sal_Int16
a, a2 = -1;
250 for(b = a2; b <
a; b++)
252 fSum -=
get(
a, b) * fRow[b];
269 fSum -=
get(
a, b) * fRow[b];
272 const double fValueAA(
get(
a,
a));
276 fRow[
a] = fSum /
get(
a,
a);
285 for(sal_uInt16 b(0); b <
RowSize; b++)
288 const double fValueAB(
get(
a, b));
290 if(!::basegfx::fTools::equal(fDefault, fValueAB))
328 set(b,
a, fArray[b]);
342 fRetval =
static_cast<double>(nParity);
345 fRetval *= aWork.
get(
a,
a);
356 for(sal_uInt16 b(0); b <
RowSize; b++)
367 for(sal_uInt16 b(0); b <
RowSize; b++)
378 for(sal_uInt16 b(0); b <
RowSize; b++)
396 for(sal_uInt16 b(0); b <
RowSize; ++b)
400 for(sal_uInt16 c(0); c <
RowSize; ++c)
401 fValue += aCopy.
get(c, b) * rMat.
get(
a, c);
412 for(sal_uInt16 b(0); b <
RowSize; b++)
414 const double fValueA(
get(
a, b));
415 const double fValueB(rMat.
get(
a, b));
417 if(!::basegfx::fTools::equal(fValueA, fValueB))
bool isLastLineDefault() const
ImplHomMatrixTemplate(const ImplHomMatrixTemplate &rToBeCopied)
void doSubMatrix(const ImplHomMatrixTemplate &rMat)
ImplHomMatrixTemplate & operator=(const ImplHomMatrixTemplate &rToBeCopied)
void doAddMatrix(const ImplHomMatrixTemplate &rMat)
bool isInvertible() const
void lubksb(const sal_uInt16 nIndex[], double fRow[]) const
double get(sal_uInt16 nRow, sal_uInt16 nColumn) const
void doInvert(const ImplHomMatrixTemplate &rWork, const sal_uInt16 nIndex[])
double doDeterminant() const
static sal_uInt16 getEdgeLength()
ImplMatLine< RowSize > maLine[RowSize]
void doMulMatrix(const ImplHomMatrixTemplate &rMat)
bool isEqual(const ImplHomMatrixTemplate &rMat) const
void doMulMatrix(const double &rfValue)
void set(sal_uInt16 nRow, sal_uInt16 nColumn, const double &rValue)
bool ludcmp(sal_uInt16 nIndex[], sal_Int16 &nParity)
void set(sal_uInt16 nColumn, const double &rValue)
double get(sal_uInt16 nColumn) const
ImplMatLine(sal_uInt16 nRow)
constexpr double implGetDefaultValue(sal_uInt16 nRow, sal_uInt16 nColumn)