Phil Steitz a écrit :
> Phil Steitz wrote:
>> Luc Maisonobe wrote:
>>> One of the task scheduled for 2.0 is the implementation of the Singular
>>> Value Decomposition.
>>>
>>> I think this addition should be done together with several other
>>> decompositions in a consistent scheme. What we have currently is:
>>>
>>>  - LU decomposition embedded directly into [Real/Big]MatrixImpl
>>>    without any reference to it in the [Real/Big]Matrix interfaces
>>>
>>>  - one QR decomposition as
>>>     1) an interface which is really only a way to retrieve results
>>>     2) an implementation which performs the decomposition on RealMatrix
>>>
>>>  - another QR decomposition hidden in the Levenberg-Marquardt estimator
>>>
>>> An API for these tasks was proposed by MathWorks and NIST with the JAMA
>>> package (http://math.nist.gov/javanumerics/jama/). This package provides
>>> specific classes for the decomposition (LUDecomposition, QRDecomposition
>>> ...). These classes provide accessors for the elements of the
>>> decomposition (say L and U) but more importantly they provide methods to
>>> use the decomposition: a solve method for LU, QR and Cholesky for
>>> example. Jama has been widely used but is dead now (see for example
>>> http://cio.nist.gov/esd/emaildir/lists/jama/msg01384.html). The code is
>>> in the public domain.
>>>
>>> I would propose to roughly follow Jama API, probably adding interfaces
>>> on top of the decomposition classes to be consistent with our other
>>> algorithms, and using the public domain Jama code as a basis. We could
>>> also address simply the issue about SVD in the original message.
>>>
>>> The changes in our code would be to extract LU from the XxxMatrixImpl
>>> classes, to add new methods to the QR interface and to see how the
>>> Levenberg-Marquardt algorithm can use this (I think this last step is
>>> the most difficult, as the QR decomposition used there is slightly
>>> distorted).
>>>
>>> What do you think about it ?
>>>   
>> I like this idea, with the following considerations.
>>
>> 1) The LU decomp embedded in RealMatrixImpl was not made public or
>> included in the RealMatrix API precisely because I thought it would
>> eventually be externalized.  So far so good.  The thing I want to make
>> sure of is that the efficiency gain from caching it is still available
>> to RealMatrixImpl.
>>
>> 2) I have always liked (well, mostly liked) the JAMA API and at one
>> point we talked about just incorporating a whole lot of JAMA code
>> directly into [math].  There are two reasons to be careful with this. 
>> The first is public domain does not necessarily mean unencumbered
>> (somewhat bizarely, but IANAL).  The second is support.  We need to
>> really understand how the code works to be able to support it.  For
>> these two reasons, I am +1 on borrowing from the API, but would prefer
>> clean room implementations of the *algorithms* that are implemented. 
>> It is OK to get ideas from the code, but I would prefer to develop the
>> implementations here or get them from authors who contribute directly
>> under ASF CLAs.  I guess if we really, really want to take some of the
>> code directly, we could go to legal-discuss, talk to the authors,
>> etc.,...
>>
> I went back and found the previous discussion of JAMA.   Here is the
> legal-discuss thread, which is sort of inconclusive.
> http://apache.markmail.org/message/7c7rikhjjv5xb33a

Thanks for the link.

I will try to develop clean room implementations for theses algorithms.

Luc

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



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

Reply via email to