SCM

SCM Repository

[matrix] Diff of /pkg/src/ssclme.c
ViewVC logotype

Diff of /pkg/src/ssclme.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 105, Sun Apr 18 22:12:10 2004 UTC revision 106, Mon Apr 19 00:48:02 2004 UTC
# Line 1283  Line 1283 
1283              REAL(ans)[cind++] = *tmp *              REAL(ans)[cind++] = *tmp *
1284                  (uncst ? *REAL(VECTOR_ELT(Omega, i)) : 1.);                  (uncst ? *REAL(VECTOR_ELT(Omega, i)) : 1.);
1285          } else {          } else {
1286              int odind = cind + nci;              int k, odind = cind + nci;
1287              if (uncst) {              if (uncst) {
1288                  int kk;                  int ione = 1, kk;
1289                    double *rr = Calloc(nci, double);
1290                  nlme_symmetrize(tmp, nci);                  nlme_symmetrize(tmp, nci);
1291                  for (j = 0; j < nci; j++, cind++) {                  for (j = 0; j < nci; j++, cind++) {
1292                      double *dder = REAL(ans) + cind;                      for (k = 0; k < nci; k++) rr[k] = chol[j + k*nci];
1293                      *dder = 0.;                      REAL(ans)[cind] = 0.;
1294                      for (k = j; k < nci; k++) {                      for (k = j; k < nci; k++) {
1295                          for (kk = j; kk < nci; kk++) {                          for (kk = j; kk < nci; kk++) {
1296                              *dder += chol[k*nci + j] * chol[kk*nci + j] *                              REAL(ans)[cind] += rr[k] * rr[kk] *
1297                                  tmp[kk * nci + k];                                  tmp[kk * nci + k];
1298                          }                          }
1299                      }                      }
1300                        for (k = 0; k < nci; k++) rr[k] *= rr[j];
1301                      for (k = j + 1; k < nci; k++) {                      for (k = j + 1; k < nci; k++) {
1302                          REAL(ans)[odind++] = -1.;                          REAL(ans)[odind++] =
1303                                F77_CALL(ddot)(&nci, rr, &ione, tmp + k, &nci) +
1304                                F77_CALL(ddot)(&nci, rr, &ione,
1305                                               tmp + k*nci, &ione);
1306                      }                      }
1307                  }                  }
1308                    Free(rr);
1309              } else {              } else {
1310                  for (j = 0; j < nci; j++) {                  for (j = 0; j < nci; j++) {
1311                      REAL(ans)[cind++] = tmp[j * ncip1];                      REAL(ans)[cind++] = tmp[j * ncip1];

Legend:
Removed from v.105  
changed lines
  Added in v.106

root@r-forge.r-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business Powered By FusionForge