SCM

SCM Repository

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

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

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

revision 2984, Sat Apr 12 21:37:37 2014 UTC revision 3011, Mon Oct 6 17:00:48 2014 UTC
# Line 569  Line 569 
569      if (csize >= 0 && !isInteger(j))      if (csize >= 0 && !isInteger(j))
570          error(_("Index j must be NULL or integer"));          error(_("Index j must be NULL or integer"));
571    
572    #define CHM_SUB(_M_, _i_, _j_)                                  \
573        cholmod_submatrix(_M_,                                      \
574                          (rsize < 0) ? NULL : INTEGER(_i_), rsize, \
575                          (csize < 0) ? NULL : INTEGER(_j_), csize, \
576                          TRUE, TRUE, &c)
577        CHM_SP ans;
578      if (!chx->stype) {/* non-symmetric Matrix */      if (!chx->stype) {/* non-symmetric Matrix */
579          return chm_sparse_to_SEXP(cholmod_submatrix(chx,          ans = CHM_SUB(chx, i, j);
                                                     (rsize < 0) ? NULL : INTEGER(i), rsize,  
                                                     (csize < 0) ? NULL : INTEGER(j), csize,  
                                                     TRUE, TRUE, &c),  
                                   1, 0, Rkind, "",  
                                   /* FIXME: drops dimnames */ R_NilValue);  
580      }      }
581        else {
582                                  /* for now, cholmod_submatrix() only accepts "generalMatrix" */                                  /* for now, cholmod_submatrix() only accepts "generalMatrix" */
583      CHM_SP tmp = cholmod_copy(chx, /* stype: */ 0, chx->xtype, &c);      CHM_SP tmp = cholmod_copy(chx, /* stype: */ 0, chx->xtype, &c);
584      CHM_SP ans = cholmod_submatrix(tmp,          ans = CHM_SUB(tmp, i, j);
                                    (rsize < 0) ? NULL : INTEGER(i), rsize,  
                                    (csize < 0) ? NULL : INTEGER(j), csize,  
                                    TRUE, TRUE, &c);  
585      cholmod_free_sparse(&tmp, &c);      cholmod_free_sparse(&tmp, &c);
586      return chm_sparse_to_SEXP(ans, 1, 0, Rkind, "", R_NilValue);      }
587        // "FIXME": currently dropping dimnames, and adding them afterwards in R :
588        return chm_sparse_to_SEXP(ans, 1, 0, Rkind, "", /* dimnames: */ R_NilValue);
589  }  }
590    
591  #define _d_Csp_  #define _d_Csp_

Legend:
Removed from v.2984  
changed lines
  Added in v.3011

R-Forge@R-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business University of Wisconsin - Madison Powered By FusionForge