SCM

SCM Repository

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

Diff of /pkg/Matrix/src/dtCMatrix.c

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

revision 582, Mon Feb 28 18:15:21 2005 UTC revision 677, Mon Mar 28 14:03:32 2005 UTC
# Line 3  Line 3 
3    
4  SEXP tsc_validate(SEXP x)  SEXP tsc_validate(SEXP x)
5  {  {
6        SEXP val;
7    
8        if (isString(val = check_scalar_string(GET_SLOT(x, Matrix_uploSym),
9                                               "LU", "uplo"))) return val;
10        if (isString(val = check_scalar_string(GET_SLOT(x, Matrix_diagSym),
11                                               "NU", "diag"))) return val;
12      return ScalarLogical(1);      return ScalarLogical(1);
13  }  }
14    
# Line 14  Line 20 
20      int nnz = length(islot),      int nnz = length(islot),
21          *adims, *xdims = INTEGER(GET_SLOT(x, Matrix_DimSym));          *adims, *xdims = INTEGER(GET_SLOT(x, Matrix_DimSym));
22    
23        adims = INTEGER(ALLOC_SLOT(ans, Matrix_DimSym, INTSXP, 2));
     SET_SLOT(ans, Matrix_DimSym, allocVector(INTSXP, 2));  
     adims = INTEGER(GET_SLOT(ans, Matrix_DimSym));  
24      adims[0] = xdims[1]; adims[1] = xdims[0];      adims[0] = xdims[1]; adims[1] = xdims[0];
25      if (CHAR(asChar(GET_SLOT(x, Matrix_uploSym)))[0] == 'U')      if (CHAR(asChar(GET_SLOT(x, Matrix_uploSym)))[0] == 'U')
26          SET_SLOT(ans, Matrix_uploSym, mkString("L"));          SET_SLOT(ans, Matrix_uploSym, mkString("L"));
27      SET_SLOT(ans, Matrix_pSym, allocVector(INTSXP, xdims[0] + 1));      csc_compTr(xdims[0], xdims[1], nnz,
28      SET_SLOT(ans, Matrix_iSym, allocVector(INTSXP, nnz));                 INTEGER(GET_SLOT(x, Matrix_pSym)), INTEGER(islot),
     SET_SLOT(ans, Matrix_xSym, allocVector(REALSXP, nnz));  
     csc_components_transpose(xdims[0], xdims[1], nnz,  
                              INTEGER(GET_SLOT(x, Matrix_pSym)),  
                              INTEGER(islot),  
29                               REAL(GET_SLOT(x, Matrix_xSym)),                               REAL(GET_SLOT(x, Matrix_xSym)),
30                               INTEGER(GET_SLOT(ans, Matrix_pSym)),                 INTEGER(ALLOC_SLOT(ans, Matrix_pSym, INTSXP, xdims[0] + 1)),
31                               INTEGER(GET_SLOT(ans, Matrix_iSym)),                 INTEGER(ALLOC_SLOT(ans, Matrix_iSym, INTSXP, nnz)),
32                               REAL(GET_SLOT(ans, Matrix_xSym)));                 REAL(ALLOC_SLOT(ans, Matrix_xSym, REALSXP, nnz)));
33      UNPROTECT(1);      UNPROTECT(1);
34      return ans;      return ans;
35  }  }
# Line 38  Line 38 
38  {  {
39      SEXP ans;      SEXP ans;
40      if (CHAR(STRING_ELT(GET_SLOT(x, Matrix_diagSym), 0))[0] != 'U')      if (CHAR(STRING_ELT(GET_SLOT(x, Matrix_diagSym), 0))[0] != 'U')
41          ans = csc_to_dgTMatrix(x);          ans = compressed_to_dgTMatrix(x, ScalarLogical(1));
42      else {                      /* unit triangular matrix */      else {                      /* unit triangular matrix */
43          SEXP islot = GET_SLOT(x, Matrix_iSym),          SEXP islot = GET_SLOT(x, Matrix_iSym),
44              pslot = GET_SLOT(x, Matrix_pSym);              pslot = GET_SLOT(x, Matrix_pSym);

Legend:
Removed from v.582  
changed lines
  Added in v.677

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