#include "Riostream.h"
#include <string.h>
#include "vt++/VtSqMatrix.hh"
#include "vt++/VtVector.hh"
|
| void | Dfact1 (int *n, double *a, int *idim, double *ir, int *ifail, double *det, int *jfail) |
| |
| void | Dfactir1 (int *n, double *a, int *idim, int *ir, int *ifail, double *det, int *jfail) |
| |
| void | Dfinv1 (int *n, double *a, int *idim, int *ir, int *ifail) |
| |
| void | Dinv1 (int *n, double *a, int *idim, double *ir, int *ifail) |
| |
◆ Dfact1()
| void Dfact1 |
( |
int * |
n, |
|
|
double * |
a, |
|
|
int * |
idim, |
|
|
double * |
ir, |
|
|
int * |
ifail, |
|
|
double * |
det, |
|
|
int * |
jfail |
|
) |
| |
227 static int nxch, i, j, k, l;
228 static double p,
q, tf;
233 if (*idim < *n || *n <= 0) {
247 for (j = 1; j <= *n; ++j) {
248 const int ji = j * (*idim);
249 const int jj = j + ji;
255 for (i = j + 1; i <= *n; ++i) {
263 for (l = 1; l <= *n; ++l) {
264 const int li = l*(*idim);
265 const int jli = j + li;
266 const int kli = k + li;
295 const int jm1 = j - 1;
296 const int jpi = (j + 1) * (*idim);
297 const int jjpi = j + jpi;
299 for (k = j + 1; k <= *n; ++k) {
300 const int ki = k * (*idim);
301 const int jki = j + ki;
302 const int kji = k + jpi;
304 for (i = 1; i <= jm1; ++i) {
305 const int ii = i * (*idim);
306 a[jki] -=
a[i + ki] *
a[j + ii];
307 a[kji] -=
a[i + jpi] *
a[k + ii];
311 a[kji] -=
a[jjpi] *
a[k + ji];
Expr< UnaryOp< Fabs< T >, Expr< A, T, D >, T >, T, D > fabs(const Expr< A, T, D > &rhs)
Definition: UnaryOperators.hh:96
void a()
Definition: check_aligned.C:59
q
Definition: testBGReduction_AllMethods.C:55
p
Definition: testBGReduction_AllMethods.C:8
◆ Dfactir1()
| void Dfactir1 |
( |
int * |
n, |
|
|
double * |
a, |
|
|
int * |
idim, |
|
|
int * |
ir, |
|
|
int * |
ifail, |
|
|
double * |
det, |
|
|
int * |
jfail |
|
) |
| |
34 static int nxch, i, j, k, l;
35 static double p,
q, tf;
40 if (*idim < *n || *n <= 0) {
55 for (j = 1; j <= *n; ++j) {
56 const int ji = j * (*idim);
57 const int jj = j + ji;
63 for (i = j + 1; i <= *n; ++i) {
72 for (l = 1; l <= *n; ++l) {
73 const int li = l*(*idim);
74 const int jli = j + li;
75 const int kli = k + li;
81 ir[nxch] = (j << 12) + k;
104 const int jm1 = j - 1;
105 const int jpi = (j + 1) * (*idim);
106 const int jjpi = j + jpi;
108 for (k = j + 1; k <= *n; ++k) {
109 const int ki = k * (*idim);
110 const int jki = j + ki;
111 const int kji = k + jpi;
113 for (i = 1; i <= jm1; ++i) {
114 const int ii = i * (*idim);
115 a[jki] -=
a[i + ki] *
a[j + ii];
116 a[kji] -=
a[i + jpi] *
a[k + ii];
120 a[kji] -=
a[jjpi] *
a[k + ji];
◆ Dfinv1()
| void Dfinv1 |
( |
int * |
n, |
|
|
double * |
a, |
|
|
int * |
idim, |
|
|
int * |
ir, |
|
|
int * |
ifail |
|
) |
| |
134 static int nxch, i, j, k, m, ij;
135 static int im2, nm1, nmi;
136 static double s31, s34,
ti;
140 if (*idim < *n || *n <= 0 || *n==1) {
154 a[*idim + 2] = -
a[(*idim << 1) + 2] * (
a[*idim + 1] *
a[*idim + 2]);
155 a[(*idim << 1) + 1] = -
a[(*idim << 1) + 1];
158 for (i = 3; i <= *n; ++i) {
159 const int ii = i * (*idim);
160 const int iii = i + ii;
161 const int imi = ii - *idim;
162 const int iimi = i + imi;
164 for (j = 1; j <= im2; ++j) {
165 const int ji = j * (*idim);
166 const int jii = j + ii;
168 for (k = j; k <= im2; ++k) {
169 s31 +=
a[k + ji] *
a[i + k * (*idim)];
170 a[jii] +=
a[j + (k + 1) * (*idim)] *
a[k + 1 + ii];
172 a[i + ji] = -
a[iii] * (
a[i - 1 + ji] *
a[iimi] + s31);
175 a[iimi] = -
a[iii] * (
a[i - 1 + imi] *
a[iimi]);
181 for (i = 1; i <= nm1; ++i) {
182 const int ii = i * (*idim);
184 for (j = 1; j <= i; ++j) {
185 const int ji = j * (*idim);
186 const int iji = i + ji;
187 for (k = 1; k <= nmi; ++k) {
188 a[iji] +=
a[i + k + ji] *
a[i + (i + k) * (*idim)];
192 for (j = 1; j <= nmi; ++j) {
193 const int ji = j * (*idim);
195 for (k = j; k <= nmi; ++k) {
196 s34 +=
a[i + k + ii + ji] *
a[i + (i + k) * (*idim)];
198 a[i + ii + ji] = s34;
207 for (m = 1; m <= nxch; ++m) {
212 const int ii = i * (*idim);
213 const int ji = j * (*idim);
214 for (k = 1; k <= *n; ++k) {
216 a[k + ii] =
a[k + ji];
EdbTrackP * ti[10]
Definition: RecDispMC_Profiles.C:54
◆ Dinv1()
| void Dinv1 |
( |
int * |
n, |
|
|
double * |
a, |
|
|
int * |
idim, |
|
|
double * |
ir, |
|
|
int * |
ifail |
|
) |
| |
323 static double det = 0;
327 if (*n < 1 || *n > *idim) {
344 det =
a[0] *
a[3] -
a[2] *
a[1];
346 if (det == 0.) { *ifail = -1;
return; }
349 double c11 =
s *
a[3];
362 static double t1, t2, t3, temp,
s;
363 static double c11, c12, c13, c21, c22, c23, c31, c32, c33;
366 c11 =
a[4] *
a[8] -
a[7] *
a[5];
367 c12 =
a[7] *
a[2] -
a[1] *
a[8];
368 c13 =
a[1] *
a[5] -
a[4] *
a[2];
369 c21 =
a[5] *
a[6] -
a[8] *
a[3];
370 c22 =
a[8] *
a[0] -
a[2] *
a[6];
371 c23 =
a[2] *
a[3] -
a[5] *
a[0];
372 c31 =
a[3] *
a[7] -
a[6] *
a[4];
373 c32 =
a[6] *
a[1] -
a[0] *
a[7];
374 c33 =
a[0] *
a[4] -
a[3] *
a[1];
385 det = c13 * c32 - c12 * c33;
389 det = c23 * c12 - c22 * c13;
395 det = c22 * c33 - c23 * c32;
399 det = c23 * c12 - c22 * c13;
424 static int work[100], jfail;
425 for(
int i=0; i<*n; ++i) work[i] = 0;
430 Dfactir1(n,
a, idim, work, ifail, &det, &jfail);
433 cerr <<
"Dfactir failed!!" << endl;
436 Dfinv1(n,
a, idim, work, ifail);
void Dfinv1(int *n, double *a, int *idim, int *ir, int *ifail)
Definition: VtSqMatrix.C:131
void Dfactir1(int *n, double *a, int *idim, int *ir, int *ifail, double *det, int *jfail)
Definition: VtSqMatrix.C:31
EdbSegP * s
Definition: tlg2pattern.C:32