https://github.com/cran/Matrix
Tip revision: 98e1bd7ed71f6441680780aacecefa8475123aba authored by Douglas Bates on 29 September 2006, 00:00:00 UTC
version 0.9975-1
version 0.9975-1
Tip revision: 98e1bd7
TODO
Check for DimNames propagation in coercion and other operations.
------
- rcond methods for sparseMatrix classes
- Report the problem in the Linux ldexp manual page. The second and
third calls in the Synopsis should be to ldexpf and ldexpl.
- [,] indexing: for sparse "works", but not yet for negative indices!
- consider moving alloc3Darray from ./src/Mutils.c to
$(RSRC)/src/base/array.c
------
- provide methods for "dspMatrix" and "dppMatrix"!
- implement (more) methods for supporting "packed" (symmetric / triangular)
matrices; particularly something like pack() and unpack() [to/from our
classes from/to "numeric"] --- have already man/unpack.Rd but no method yet!
(have some dtr* <-> dtp*)
-----
- combine the C functions for multiplication by special forms and
solution wrt special forms by using a 'right' argument and a
'classed' argument.
[done with dgeMatrix_matrix_mm(); not yet for other classes;
and for _crossprod()]
- add more comprehensive examples / tests for Schur decomposition
- arithmetic for sparse matrices:
<sparseMatrix> o <same-dim-sparseMatrix>
should return a sparse matrix for at least "+" and "*" , also %%,
and "/" and "%/%" at least when the RHS is non-zero a scalar.
Challenge: nice implementation (``common non-0''; but Tsparse* is not uniq).
-----
- "Math2" , "Math", "Arith":
keep triangular and symmetric Matrices when appropriate:
particularly desirable for "Math2": round(), signif()
- "d" <-> "l" coercion for all "[TCR]" sparse matrices is really trivial:
"d" -> "l" : drops the 'x' slot
"l" -> "d" : construct an 'x' slot of all '1'
We currently have many of these conversions explicitly, e.g.
setAs("dsTMatrix", "lsTMatrix",
function(from) new("lsTMatrix", i = from@i, j = from@j, uplo = from@uplo,
Dim = from@Dim, Dimnames = from@Dimnames))
but I would rather want to automatically construct all these coercion
methods at once by a ``method constructor'', i.e.,
for all "dsparse*" -> "lsparse*" and vice versa.
How can one do this {in a documented way} ?
- tcrossprod(x, y) : do provide methods for y != NULL
calling Lapack's DGEMM for "dense"
[2005-12-xx: done for dgeMatrix at least]
- "ltTmatrix" :
2) new("ltTMatrix", diag = "U", Dim = c(2:2, 2:2)) shows lack of ltTM*_validate
- BUGlet: Shouldn't lose factorization here:
h6 <- Hilbert(6); chol(h6) ; str(h6) # has factor
str(H6 <- as(h6, "dspMatrix")) # has lost factor
## and the same in a similar situation involving "dpo", "dpp"
- "Compare" for dgC & dgT --- want to be able to do M[M > 10] etc
- Things like M[upper.tri(M)] are not really most useful for sparse
matrices. --> provide generic functions
upperTriMatrix(), lowerTriMatrix() both with argument 'diag = TRUE'
(which can be set to FALSE of course) which are used to extract a
triangle from an arbitrary sparse matrix and return a "dtCMatrix".
- Factorizations: LU done; also Schur() for *sparse* Matrices.
- band(), triu(), tril() for *all*, not just sparse matrices
- is.na() method for all our matrices [ ==> which(*, arr.ind=TRUE) might work ]
- When we have a packed matrix, it's a waste to go through "full" to "sparse":
==> implement
setAs("dspMatrix", "sparseMatrix")
setAs("dppMatrix", "sparseMatrix")
setAs("dtpMatrix", "sparseMatrix")
and the same for "lsp" , "ltp" and "nsp" , "ntp" !