SCM

SCM Repository

[matrix] Annotation of /pkg/src/factorizations.c
ViewVC logotype

Annotation of /pkg/src/factorizations.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 652 - (view) (download) (as text)

1 : bates 10 #include "factorizations.h"
2 :    
3 :     SEXP LU_validate(SEXP obj)
4 :     {
5 :     return ScalarLogical(1);
6 :     }
7 :    
8 : bates 631 SEXP BunchKaufman_validate(SEXP obj)
9 :     {
10 :     return ScalarLogical(1);
11 :     }
12 :    
13 : bates 649 SEXP pBunchKaufman_validate(SEXP obj)
14 :     {
15 :     return ScalarLogical(1);
16 :     }
17 :    
18 : bates 10 SEXP Cholesky_validate(SEXP obj)
19 :     {
20 :     return ScalarLogical(1);
21 :     }
22 :    
23 : bates 649 SEXP pCholesky_validate(SEXP obj)
24 :     {
25 :     return ScalarLogical(1);
26 :     }
27 :    
28 : bates 10 SEXP SVD_validate(SEXP obj)
29 :     {
30 :     return ScalarLogical(1);
31 :     }
32 : bates 582
33 :     SEXP LU_expand(SEXP x)
34 :     {
35 : bates 652 char *nms[] = {"L", "U", "P", ""};
36 :     SEXP L, U, P, val = PROTECT(Matrix_make_named(VECSXP, nms)),
37 : bates 582 lux = GET_SLOT(x, Matrix_xSym),
38 :     dd = GET_SLOT(x, Matrix_DimSym);
39 : bates 652 int *perm, *pivot = INTEGER(GET_SLOT(x, Matrix_permSym)),
40 :     i, n = INTEGER(dd)[0];
41 : bates 582
42 :     SET_VECTOR_ELT(val, 0, NEW_OBJECT(MAKE_CLASS("dtrMatrix")));
43 :     L = VECTOR_ELT(val, 0);
44 :     SET_VECTOR_ELT(val, 1, NEW_OBJECT(MAKE_CLASS("dtrMatrix")));
45 :     U = VECTOR_ELT(val, 1);
46 : bates 652 SET_VECTOR_ELT(val, 2, NEW_OBJECT(MAKE_CLASS("pMatrix")));
47 :     P = VECTOR_ELT(val, 2);
48 : bates 582 SET_SLOT(L, Matrix_xSym, duplicate(lux));
49 : bates 652 SET_SLOT(L, Matrix_DimSym, duplicate(dd));
50 : bates 582 SET_SLOT(L, Matrix_uploSym, mkString("L"));
51 :     SET_SLOT(L, Matrix_diagSym, mkString("U"));
52 :     make_array_triangular(REAL(GET_SLOT(L, Matrix_xSym)), L);
53 :     SET_SLOT(U, Matrix_xSym, duplicate(lux));
54 : bates 652 SET_SLOT(U, Matrix_DimSym, duplicate(dd));
55 : bates 582 SET_SLOT(U, Matrix_uploSym, mkString("U"));
56 :     SET_SLOT(U, Matrix_diagSym, mkString("N"));
57 :     make_array_triangular(REAL(GET_SLOT(U, Matrix_xSym)), U);
58 : bates 652 SET_SLOT(P, Matrix_DimSym, duplicate(dd));
59 :     perm = INTEGER(ALLOC_SLOT(P, Matrix_permSym, INTSXP, n));
60 :     for (i = 0; i < n; i++) perm[i] = i + 1;
61 :     for (i = 0; i < n; i++) {
62 :     int newpos = pivot[i] - 1;
63 :     if (newpos != i) {
64 :     int tmp = perm[i];
65 :    
66 :     perm[i] = newpos + 1;
67 :     perm[newpos] = tmp;
68 :     }
69 :     }
70 : bates 582 UNPROTECT(1);
71 :     return val;
72 :     }

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