SCM

SCM Repository

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

Annotation of /pkg/src/lgCMatrix.c

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : bates 692 #include "lgCMatrix.h"
2 :    
3 :     SEXP lgCMatrix_validate(SEXP x)
4 :     {
5 :     SEXP pslot = GET_SLOT(x, Matrix_pSym),
6 :     islot = GET_SLOT(x, Matrix_iSym);
7 :     int j,
8 :     ncol = length(pslot) - 1,
9 :     *dims = INTEGER(GET_SLOT(x, Matrix_DimSym)),
10 :     nrow,
11 :     *xp = INTEGER(pslot),
12 :     *xi = INTEGER(islot);
13 :    
14 :     nrow = dims[0];
15 :     if (length(pslot) <= 0)
16 :     return mkString(_("slot p must have length > 0"));
17 :     if (xp[0] != 0)
18 :     return mkString(_("first element of slot p must be zero"));
19 :     if (length(islot) != xp[ncol])
20 :     return mkString(_("last element of slot p must match length of slot i"));
21 :     for (j = 0; j < ncol; j++) {
22 :     if (xp[j] > xp[j+1])
23 :     return mkString(_("slot p must be non-decreasing"));
24 :     }
25 :     for (j = 0; j < length(islot); j++) {
26 :     if (xi[j] < 0 || xi[j] >= nrow)
27 :     return mkString(_("all row indices must be between 0 and nrow-1"));
28 :     }
29 :     if (csc_unsorted_columns(ncol, xp, xi)) {
30 :     csc_sort_columns(ncol, xp, xi, (double *) NULL);
31 :     }
32 :     return ScalarLogical(1);
33 :     }
34 :    
35 :     /**
36 :     * C := op(A) %*% op(B) + beta ^ C for logical sparse column-oriented matrices
37 :     *
38 :     * @param tra nonzero if A is to be transposed
39 :     * @param trb nonzero if B is to be transposed
40 :     * @param m number of rows in C
41 :     * @param n number of columns in C
42 :     * @param k number of columns in A if tra == 0, otherwise number of
43 :     * rows in A
44 :     * @param ai vector of row indices of TRUE elements in A
45 :     * @param ap column pointers for A
46 :     * @param bi vector of row indices of TRUE elements in B
47 :     * @param bp column pointers for B
48 :     * @param beta if non-zero existing TRUE elements in C are retained
49 :     * @param ciP pointer to the column indices of TRUE elements in C.
50 :     * This may be reallocated if the number of TRUE elements in C changes
51 :     * @param cp column pointers for C
52 :     */
53 :     void Matrix_lgClgCmm(int tra, int trb, int m, int n, int k,
54 :     const int ai[], const int ap[],
55 :     const int bi[], const int bp[],
56 :     int beta, SEXP *CIP, int cp[])
57 :     {
58 :     int annz = ap[tra ? m : k], bnnz = bp[trb ? k : n], cnnz = cp[n], extra = 0;
59 :     int *ci = INTEGER(*CIP);
60 :    
61 :     if (beta) {
62 :     if (tra) {
63 :     if (trb) { /* t(A) %*% t(B) */
64 :     } else { /* t(A) %*% B */
65 :    
66 :     }
67 :     } else {
68 :     if (trb) { /* A %*% t(B) */
69 :     } else { /* A %*% B */
70 :    
71 :     }
72 :     }
73 :     }
74 :     }
75 :    
76 :     SEXP lgCMatrix_lgCMatrix_mm(SEXP a, SEXP b, SEXP transa, SEXP transb)
77 :     {
78 :     return R_NilValue;
79 :     }

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