The R Project SVN R-packages

Rev

Rev 3502 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3502 Rev 3518
Line 129... Line 129...
129
}
129
}
130
 
130
 
131
SEXP Csparse_dense_prod(SEXP a, SEXP b)
131
SEXP Csparse_dense_prod(SEXP a, SEXP b)
132
{
132
{
133
    cholmod_sparse *cha = as_cholmod_sparse(a);
133
    cholmod_sparse *cha = as_cholmod_sparse(a);
134
    cholmod_dense *chb = as_cholmod_dense(b);
134
    cholmod_dense *chb = as_cholmod_dense(PROTECT(mMatrix_as_dgeMatrix(b)));
135
    cholmod_dense *chc = 
135
    cholmod_dense *chc = 
136
	cholmod_allocate_dense(cha->nrow, chb->ncol, cha->nrow, chb->xtype, &c);
136
	cholmod_allocate_dense(cha->nrow, chb->ncol, cha->nrow, chb->xtype, &c);
137
    double alpha[] = {1,0}, beta[] = {0,0};
137
    double alpha[] = {1,0}, beta[] = {0,0};
138
 
138
 
139
    cholmod_sdmult(cha, 0, alpha, beta, chb, chc, &c);
139
    cholmod_sdmult(cha, 0, alpha, beta, chb, chc, &c);
140
    Free(cha); Free(chb);
140
    Free(cha); Free(chb);
-
 
141
    UNPROTECT(1);
141
    return chm_dense_to_SEXP(chc, 1);
142
    return chm_dense_to_SEXP(chc, 1);
142
}
143
}
143
 
144
 
144
SEXP Csparse_dense_crossprod(SEXP a, SEXP b)
145
SEXP Csparse_dense_crossprod(SEXP a, SEXP b)
145
{
146
{
146
    cholmod_sparse *cha = as_cholmod_sparse(a);
147
    cholmod_sparse *cha = as_cholmod_sparse(a);
147
    cholmod_dense *chb = as_cholmod_dense(b);
148
    cholmod_dense *chb = as_cholmod_dense(PROTECT(mMatrix_as_dgeMatrix(b)));
148
    cholmod_dense *chc =
149
    cholmod_dense *chc =
149
	cholmod_allocate_dense(cha->ncol, chb->ncol, cha->ncol, chb->xtype, &c);
150
	cholmod_allocate_dense(cha->ncol, chb->ncol, cha->ncol, chb->xtype, &c);
150
    double alpha[] = {1,0}, beta[] = {0,0};
151
    double alpha[] = {1,0}, beta[] = {0,0};
151
 
152
 
152
    cholmod_sdmult(cha, 1, alpha, beta, chb, chc, &c);
153
    cholmod_sdmult(cha, 1, alpha, beta, chb, chc, &c);
153
    Free(cha); Free(chb);
154
    Free(cha); Free(chb);
-
 
155
    UNPROTECT(1);
154
    return chm_dense_to_SEXP(chc, 1);
156
    return chm_dense_to_SEXP(chc, 1);
155
}
157
}
156
 
158
 
157
SEXP Csparse_crossprod(SEXP x, SEXP trans, SEXP triplet)
159
SEXP Csparse_crossprod(SEXP x, SEXP trans, SEXP triplet)
158
{
160
{