25 


26 
For triangular matrices, more specifically make sure the four rules of 
For triangular matrices, more specifically make sure the four rules of 
27 
"triangular matrix algebra" (Golub+Van Loan 1996, 3.1.8, p.93) are 
"triangular matrix algebra" (Golub+Van Loan 1996, 3.1.8, p.93) are 
28 
fulfilled; currently <dtC> %*% <dtC> > <dgC> 
fulfilled; now(20080306) ok for Csparse; not yet for <dtr> %*% <dtr> 
29 


30 
 "d" <> "l" coercion for all "[TCR]" sparse matrices is really trivial: 
 "d" <> "l" coercion for all "[TCR]" sparse matrices is really trivial: 
31 
"d" > "l" : drops the 'x' slot 
"d" > "l" : drops the 'x' slot 
121 
above currently goes via "matrix" and back instead of using the 'x' slot 
above currently goes via "matrix" and back instead of using the 'x' slot 
122 
directly; in particular, the triangular* "class property" is lost! 
directly; in particular, the triangular* "class property" is lost! 
123 



 image(M, ..): Think about an optional smart option which keeps 


"0 > transparent" and allows colors to differentiate negative and 


positive entries. 




124 
 examples for solve( Cholesky(.), b, system = c("A", "LDLt"....)) 
 examples for solve( Cholesky(.), b, system = c("A", "LDLt"....)) 
125 
probably rather in man/CHMfactorclass.Rd than man/Cholesky.Rd 
probably rather in man/CHMfactorclass.Rd than man/Cholesky.Rd 
126 


127 

 LDL(<CHMsimpl>) looks relatively easy; via "tCsparse_diag()" 
128 

{diagonal entries of *triangular* Csparse} 
129 

> see comment in determinant(<dsC>) in R/dsCMatrix.R, will give 
130 

faster determinant 
131 


132 
 tr(A %*% B) {and even tr(A %*% B %*% C) ...} are also needed 
 tr(A %*% B) {and even tr(A %*% B %*% C) ...} are also needed 
133 
frequently in some computations {conditional normal distr. ...}. 
frequently in some computations {conditional normal distr. ...}. 
134 
Since this can be done faster than by 
Since this can be done faster than by 
145 


146 
This is not really acceptable and currently influences rcond() as well. 
This is not really acceptable and currently influences rcond() as well. 
147 



 chol() and qr() generic: currently have *two* arguments, and give the msg 





> New generic for "chol" does not agree with implicit generic from package 


> "base"; a new generic will be assigned with package "Matrix" 





(and ditto for "qr") 





It was mentioned by an Rcore member that he thought it did not make 


sense to also dispatch on 'tol' or 'pivot' ... > maybe change that.. 




148 
 eigen() should become generic, and get a method at least for diagonal, 
 eigen() should become generic, and get a method at least for diagonal, 
149 
but also for symmetric > dsyMatrix [LAPACK dsyev() uses UPLO !], 
but also for symmetric > dsyMatrix [LAPACK dsyev() uses UPLO !], 
150 
but also simply for dgeMatrix (without going via tradition matrices). 
but also simply for dgeMatrix (without going via tradition matrices). 
165 
replCmat() uses as_CspClass() and drop0(.) which itself call 
replCmat() uses as_CspClass() and drop0(.) which itself call 
166 
as_CspClass() quite a bit. > try to replace these by 
as_CspClass() quite a bit. > try to replace these by 
167 
as(*, "CsparseMatrix"); forceSymmetric, etc. 
as(*, "CsparseMatrix"); forceSymmetric, etc. 
168 


169 

 implement fast diag(<triangularCsparse>) via calling new 
170 

src/Csparse.c's diag_tC_ptr() 
171 


172 

 add examples (and tests!) for update(<CHMfactor>, ..) and 
173 

Cholesky(......, Imult), also tests for hidden {hence no examples} 
174 

ldetL2up() { R/CHMfactor.R } 
175 


176 

 chol(<nsCMatrix>) gives "temporarily disabled" 
177 

but should give the *symbolic* factorization; 
178 

similarly Cholesky(.) is not enabled 
179 


180 

 writeMM(obj, file=stdout()) creates file "1" since file is silently 
181 

assumed to be a string, i.e. cannot be a connection. 
182 

An R (instead of C) version should be pretty simple, and would work with 
183 

connections automatically ["lsparse" become either "real" or 
184 

"pattern", "depending if they have NAs or not]. 