| Line 24... |
Line 24... |
| 24 |
dims = INTEGER(dimP);
|
24 |
dims = INTEGER(dimP);
|
| 25 |
val = PROTECT(NEW_OBJECT(MAKE_CLASS("pCholesky")));
|
25 |
val = PROTECT(NEW_OBJECT(MAKE_CLASS("pCholesky")));
|
| 26 |
SET_SLOT(val, Matrix_uploSym, duplicate(uploP));
|
26 |
SET_SLOT(val, Matrix_uploSym, duplicate(uploP));
|
| 27 |
SET_SLOT(val, Matrix_diagSym, mkString("N"));
|
27 |
SET_SLOT(val, Matrix_diagSym, mkString("N"));
|
| 28 |
SET_SLOT(val, Matrix_DimSym, duplicate(dimP));
|
28 |
SET_SLOT(val, Matrix_DimSym, duplicate(dimP));
|
| 29 |
SET_SLOT(val, Matrix_xSym, duplicate(GET_SLOT(x, Matrix_xSym)));
|
29 |
slot_dup(val, x, Matrix_xSym);
|
| 30 |
F77_CALL(dpptrf)(uplo, dims, REAL(GET_SLOT(val, Matrix_xSym)), &info);
|
30 |
F77_CALL(dpptrf)(uplo, dims, REAL(GET_SLOT(val, Matrix_xSym)), &info);
|
| 31 |
if (info) {
|
31 |
if (info) {
|
| 32 |
if(info > 0) /* e.g. x singular */
|
32 |
if(info > 0) /* e.g. x singular */
|
| 33 |
error(_("the leading minor of order %d is not positive definite"),
|
33 |
error(_("the leading minor of order %d is not positive definite"),
|
| 34 |
info);
|
34 |
info);
|
| Line 57... |
Line 57... |
| 57 |
{
|
57 |
{
|
| 58 |
SEXP Chol = dppMatrix_chol(x);
|
58 |
SEXP Chol = dppMatrix_chol(x);
|
| 59 |
SEXP val = PROTECT(NEW_OBJECT(MAKE_CLASS("dppMatrix")));
|
59 |
SEXP val = PROTECT(NEW_OBJECT(MAKE_CLASS("dppMatrix")));
|
| 60 |
int *dims = INTEGER(GET_SLOT(x, Matrix_DimSym)), info;
|
60 |
int *dims = INTEGER(GET_SLOT(x, Matrix_DimSym)), info;
|
| 61 |
|
61 |
|
| 62 |
SET_SLOT(val, Matrix_uploSym, duplicate(GET_SLOT(Chol, Matrix_uploSym)));
|
62 |
slot_dup(val, Chol, Matrix_uploSym);
|
| 63 |
SET_SLOT(val, Matrix_xSym, duplicate(GET_SLOT(Chol, Matrix_xSym)));
|
63 |
slot_dup(val, Chol, Matrix_xSym);
|
| 64 |
SET_SLOT(val, Matrix_DimSym, duplicate(GET_SLOT(Chol, Matrix_DimSym)));
|
64 |
slot_dup(val, Chol, Matrix_DimSym);
|
| 65 |
F77_CALL(dpptri)(uplo_P(val), dims,
|
65 |
F77_CALL(dpptri)(uplo_P(val), dims,
|
| 66 |
REAL(GET_SLOT(val, Matrix_xSym)), &info);
|
66 |
REAL(GET_SLOT(val, Matrix_xSym)), &info);
|
| 67 |
UNPROTECT(1);
|
67 |
UNPROTECT(1);
|
| 68 |
return val;
|
68 |
return val;
|
| 69 |
}
|
69 |
}
|