SCM

SCM Repository

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

Diff of /pkg/src/sscCrosstab.c

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

revision 148, Mon May 3 12:49:17 2004 UTC revision 149, Tue May 4 22:30:39 2004 UTC
# Line 120  Line 120 
120          int *Ap = Calloc(n + 1, int),          int *Ap = Calloc(n + 1, int),
121              *Ai = Calloc(nnz, int),              *Ai = Calloc(nnz, int),
122              *Tj = Calloc(nnz, int),              *Tj = Calloc(nnz, int),
123              *TTi = Calloc(nnz, int);              *TTi = Calloc(nnz, int),
124          double                  /* needed for triplet_to_col */              *perm = Calloc(n, int),
125              *Ax = Calloc(nnz, double), /* FIXME: change triplet_to_col */              *iperm = Calloc(n, int);
             *Tx = Calloc(nnz, double); /* to check for null pointers */  
         idxtype *perm = Calloc(n, idxtype),  
             *iperm = Calloc(n, idxtype);  
126    
127          for (j = 0; j < n; j++) { /* diagonals */          for (j = 0; j < n; j++) { /* diagonals */
128              TTi[j] = Tj[j] = j;              TTi[j] = Tj[j] = j;
# Line 149  Line 146 
146                  }                  }
147              }              }
148          }          }
149          triplet_to_col(n, n, nnz, TTi, Tj, Tx, Ap, Ai, Ax);          triplet_to_col(n, n, nnz, TTi, Tj, (double *) 0, Ap, Ai, (double *) 0);
150          ssc_metis_order(n, Ap, Ai, perm, iperm);          ssc_metis_order(n, Ap, Ai, perm, iperm);
151          for (j = j1; j < i2; j++) ans[j] = j1 + iperm[j - j1];          for (j = j1; j < i2; j++) ans[j] = j1 + iperm[j - j1];
152          Free(Tx); Free(Ax); Free(TTi); Free(Tj); Free(Ai); Free(Ap);          Free(TTi); Free(Tj); Free(Ai); Free(Ap);
153          Free(perm); Free(iperm);          Free(perm); Free(iperm);
154      }      }
155  }  }
# Line 192  Line 189 
189      for (i = 1; i < nf; i++) {      for (i = 1; i < nf; i++) {
190          col_metis_order(Gp[i - 1], Gp[i], Gp[i+1], Ap, Ai, INTEGER(ans));          col_metis_order(Gp[i - 1], Gp[i], Gp[i+1], Ap, Ai, INTEGER(ans));
191      }      }
     if (0) {                    /* skip this part */  
         if (!ctab_isNested(n, nf, 0, Ap, Ai, Gp)) {  
             int *np = Calloc(n + 1, int), /* column pointers */  
                 *ni = Calloc(length(iSlot) - n, int); /* row indices */  
   
             np[0] = 0;  
             for (i = 1; i < nf; i++) { /* adjacent pairs of grouping factors */  
                 int j, k, p0 = 0, p1 = Gp[i-1], p2 = Gp[i], p3 = Gp[i+1];  
   
                 for (j = p1; j < p2; j++) { /* for this set of columns */  
                     int lk = Ap[j+1];  
                     for (k = Ap[j]; k < lk; k++) {  
                         int ii = Ai[k];  
                         if (p2 <= ii && ii < p3) { /* check the row */  
                             ni[p0++] = ii - p2;  
                         }  
                     }  
                     np[j + 1 - p1] = p0;  
                 }  
                 pair_perm(p3 - p2, p2 - p1, np, ni,  
                           INTEGER(ans) + p2,  
                           (i == 1) ? INTEGER(ans) + p1 : (int *) 0);  
                 for (j = p2; j < p3; j++) INTEGER(ans)[j] += p2;  
             }  
             Free(np); Free(ni);  
         }  
     }  
192      if (nf > 1 && up) {Free(Ap); Free(Ai);}      if (nf > 1 && up) {Free(Ap); Free(Ai);}
193      UNPROTECT(1);      UNPROTECT(1);
194      return ans;      return ans;

Legend:
Removed from v.148  
changed lines
  Added in v.149

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