The R Project SVN R-packages

Rev

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

Rev 3466 Rev 3502
Line 78... Line 78...
78
    }
78
    }
79
    return chm_triplet_to_SEXP(chxt, 1, uploT, diag,
79
    return chm_triplet_to_SEXP(chxt, 1, uploT, diag,
80
			       GET_SLOT(x, Matrix_DimNamesSym));
80
			       GET_SLOT(x, Matrix_DimNamesSym));
81
}
81
}
82
 
82
 
83
/* this use to be called  sCMatrix_to_gCMatrix(..)   [in ./dsCMatrix.c ]: */
83
/* this used to be called  sCMatrix_to_gCMatrix(..)   [in ./dsCMatrix.c ]: */
84
SEXP Csparse_symmetric_to_general(SEXP x)
84
SEXP Csparse_symmetric_to_general(SEXP x)
85
{
85
{
86
    cholmod_sparse *chx = as_cholmod_sparse(x), *chgx;
86
    cholmod_sparse *chx = as_cholmod_sparse(x), *chgx;
87
 
87
 
88
    if (!(chx->stype))
88
    if (!(chx->stype))
Line 130... Line 130...
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(b);
135
    cholmod_dense *chc = cholmod_allocate_dense(cha->nrow, chb->ncol,
135
    cholmod_dense *chc = 
136
						cha->nrow, chb->xtype, &c);
136
	cholmod_allocate_dense(cha->nrow, chb->ncol, cha->nrow, chb->xtype, &c);
137
    double alpha = 1, beta = 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
    return chm_dense_to_SEXP(chc, 1);
141
    return chm_dense_to_SEXP(chc, 1);
142
}
142
}
143
 
143
 
144
SEXP Csparse_dense_crossprod(SEXP a, SEXP b)
144
SEXP Csparse_dense_crossprod(SEXP a, SEXP b)
145
{
145
{
146
    cholmod_sparse *cha = as_cholmod_sparse(a);
146
    cholmod_sparse *cha = as_cholmod_sparse(a);
147
    cholmod_dense *chb = as_cholmod_dense(b);
147
    cholmod_dense *chb = as_cholmod_dense(b);
148
    cholmod_dense *chc = cholmod_allocate_dense(cha->ncol, chb->ncol,
148
    cholmod_dense *chc =
149
						cha->ncol, chb->xtype, &c);
149
	cholmod_allocate_dense(cha->ncol, chb->ncol, cha->ncol, chb->xtype, &c);
150
    double alpha = 1, beta = 0;
150
    double alpha[] = {1,0}, beta[] = {0,0};
151
 
151
 
152
    cholmod_sdmult(cha, 1, &alpha, &beta, chb, chc, &c);
152
    cholmod_sdmult(cha, 1, alpha, beta, chb, chc, &c);
153
    Free(cha); Free(chb);
153
    Free(cha); Free(chb);
154
    return chm_dense_to_SEXP(chc, 1);
154
    return chm_dense_to_SEXP(chc, 1);
155
}
155
}
156
 
156
 
157
SEXP Csparse_crossprod(SEXP x, SEXP trans, SEXP triplet)
157
SEXP Csparse_crossprod(SEXP x, SEXP trans, SEXP triplet)