On symmetrics, diagonal, banded and so on, I disagree-as I have made clear in the past. In the case of White standard errors or panel regressions, you typically have long strings of multiplication by diagonals and symmetrics, sandwich products and so forth. There are enough of these types of operations that a math/stat library should support these forms of matrices. isSparse() will not cut it. A symmetric matrix is typically NOT sparse, it is typically dense in these cases. More importantly, the number of operations you save by explicitly recognizing the special structure is not insignificant.
> > For banded arrays, the economies available beyond simple sparse algorithms > are even more limited. > > I am confused, Ted, since when I suggested that some of the multiplication issues could solved by method overloading, you thought it would not work. Probably a mis-communication on my part. > Symmetric and triangular matrices also have special properties but it is > hard to decide what is really important there. Many of the special > operations for these kinds of matrix are subject to solving by overloads > instead of indicators since we aren't dealing with binary operations. For > example, left and right inverse multiplication with triangular matrices is > handled by normal single dispatch and qualifying an argument for real > Cholesky decomposition is specific to the Cholesky decomposition itself. > > While on the discussion of extending RealMatrix in any direction, I would humbly offer that the objects are too complex. Pardon this foolish question, but what are the uses for the methods " double walkInRowOrder(RealMatrixChangingVisitor visitor)" When I think of having to fill in all those methods for any extension, my head spins. -Greg