18 #define REPORT { static ExeCounter ExeCount(__LINE__,16); ++ExeCount; } 34 for (
int i=0; i<s; i++)
37 Real* xi0=xi; k=
n;
while(k--) { sum +=
square(*xi++); }
42 k=
n;
while(k--) { *xi0++ = 0.0; }
43 for (
int j=i; j<s; j++) L.
element(j,i) = 0.0;
48 Real* xj0=xi0; k=
n;
while(k--) { *xj0++ /= sum; }
49 for (
int j=i+1; j<s; j++)
52 xi=xi0;
Real* xj=xj0; k=
n;
while(k--) { sum += *xi++ * *xj++; }
53 xi=xi0; k=
n;
while(k--) { *xj0++ -= sum * *xi++; }
69 for (
int i=0; i<s; i++)
72 for (
int j=0; j<t; j++)
75 xi=xi0;
Real* xj=xj0; k=
n;
while(k--) { sum += *xi++ * *xj++; }
76 xi=xi0; k=
n;
while(k--) { *xj0++ -= sum * *xi++; }
117 int j, k;
int J = s;
int i = s;
123 u = u0;
Real Xi = *xi;
Real* xj = xj0;
124 j = J;
while(j--) *u++ += Xi * *xj++;
129 Real sum = std::sqrt(*u0); *u0 = sum; u = u0+1;
133 j = J - 1;
while(j--) *u++ = 0.0;
146 int J1 = J-1; j = J1;
while(j--) *u++ /= sum;
148 xj0 = xi0; xi = xi0++; k =
n;
151 u = u0+1;
Real Xi = *xi;
Real* xj = xj0;
152 Xi /= sum; *xj++ = Xi;
153 j = J1;
while(j--) *xj++ -= *u++ * Xi;
177 m = m0;
Real Xi = *xi;
Real* xj = xj0;
178 j = t;
while(j--) *m++ += Xi * *xj++;
183 xj0 = Y.
Store(); xi = xi0++; k =
n;
186 m = m0;
Real Xi = *xi;
Real* xj = xj0;
187 j = t;
while(j--) *xj++ -= *m++ * Xi;
230 for (
int i=0; i<s; i++)
234 Real* xi0=xi; k=
n;
while(k--) { sum +=
square(*xi++); }
235 sum = std::sqrt(sum +
square(r));
239 k=
n;
while(k--) { *xi0++ = 0.0; }
240 for (
int j=i; j<s; j++) L.
element(j,i) = 0.0;
244 Real frs = std::fabs(r) + sum;
245 Real a0 = std::sqrt(frs / sum);
Real alpha = a0 / frs;
248 Real* xj0=xi0; k=
n;
while(k--) { *xj0++ *= alpha; }
249 for (
int j=i+1; j<s; j++)
252 xi=xi0;
Real* xj=xj0; k=
n;
while(k--) { sum += *xi++ * *xj++; }
254 xi=xi0; k=
n;
while(k--) { *xj0++ -= sum * *xi++; }
270 int j, k;
int J = s;
int i = s;
276 v = v0;
Real Xi = *xi;
Real* xj = xj0;
277 j = J;
while(j--) *v++ += Xi * *xj++;
289 j = J;
while(j--) { *u++ = 0.0; *v++ = 0.0; }
301 Real frs = std::fabs(r) + sum;
302 Real a0 = std::sqrt(frs / sum);
Real alpha = a0 / frs;
303 if (r <= 0) {
REPORT alpha = -alpha; *u0 = sum; }
304 else {
REPORT *u0 = -sum; }
306 j = J - 1; v = v0 + 1; u = u0 + 1;
308 { *v = a0 * *u + alpha * *v; *u -= a0 * *v; ++v; ++u; }
310 xj0 = xi0; xi = xi0++; k =
n;
313 v = v0 + 1;
Real Xi = *xi;
Real* xj = xj0;
314 Xi *= alpha; *xj++ = Xi;
315 j = J - 1;
while(j--) *xj++ -= *v++ * Xi;
321 while (j--) *v++ = 0.0;
void QRZT(Matrix &X, LowerTriangularMatrix &L)
virtual void ReSize(int, int)
os2<< "> n<< " > nendobj n
void UpdateQRZT(Matrix &X, LowerTriangularMatrix &L)
void QRZ(Matrix &X, UpperTriangularMatrix &U)
void UpdateQRZ(Matrix &X, UpperTriangularMatrix &U)