There are two significant things that remain to be resolved before we can release RealMatrix.

1. We need to decide what to do about solve(). After reviewing the code again, I am OK leaving the current setup alone. If users want to implement a different solve() method they can a) subclass RealMatrixImpl, b) implement RealMatrix directly, or c) Add their own Solver class (which we could also do later if we want to). The cached lu decomposition in RealMatrixImpl makes the basic operations straightforward, relatively efficient and generally OK numerically (absent any information about the matrix). <-- IANANA (NA = numerical analyst), so please correct me if this is wrong :-). The main point is that I don't see us painting ourselves into a corner here -- external solvers can easily be added later. Here again, pls correct me if I am missing something.

2. Rank computation. I am sorry that I missed this in the task list and Release Plan. Based on what other packages do, I think that the right way to do this is to implement singular value decomposition and return the "effective numerical rank" by counting singular values that are bounded away from zero (see, e.g. http://math.nist.gov/javanumerics/jama/doc/Jama/SingularValueDecomposition.html). Some implementations add an epsilon argument to determine the bound. Unfortunately, I do not have an SVD impl laying around and this will be a fair amount of work. Our choices would then seem to be:

(i)   Hold the realease until someone volunteers to implement SVD
(ii)  Remove the method from the RealMatrix interface (ouch!!)
(iii) Release RealMatrixImpl throwing UnsupportedOperationException
(iv)  Cobble together a "naive" implementation using row reduction

Thoughts? Other suggestions??

Phil


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to