Mark,
 
I now see (more fully) what you mean about the extra copy operations and agree that 
there is a little more to do than what I responded below.  Using getElement and 
getDataRef for the current instance should suffice, however, in most cases.  I need to 
understand better what you are proposing.
 
Phil

        -----Original Message----- 
        From: Phil Steitz 
        Sent: Mon 10/11/2004 10:16 AM 
        To: Jakarta Commons Developers List 
        Cc: 
        Subject: Re: cvs commit: 
jakarta-commons/math/src/test/org/apache/commons/math/linear RealMatrixImplTest.java
        
        

        Mark R. Diggory wrote:
        > Hey Phil,
        >
        > Thanks for working on the RealMatrixImpl, it really gets things rolling.
        > I was working on some things offline to support it further. One point of
        > concern I have is that I thought we were going to make RealMatrixImpl
        > "immutable" and allow the submatrix accessors return implementations
        > that reference the internal matrix structure.
        
        Yes, I was planning to remove the setters next.
        >
        > So, currently I would recommend our using an implementation of
        > RealMatrix that maintains a reference to the original data[][] array and
        > the submatix dimensions it is working within on that matrix. I have been
        > working on such an implementation upto this point. Your adding the
        > methods to the interface is good and I'll start working on
        > implementations that use this strategy.
        
        What do you mean here? I agree with J that getDataRef should be supported
        only in the RealMatrixImpl (where I would leave it in)
        
        >
        > I also notice in the implementations there a great degree of "copying"
        > by using the "getData() method" going on during the processing of
        > methods such as add,subtract etc.
        >
        > getData()
        > 
http://jakarta.apache.org/commons/math/xref/org/apache/commons/math/linear/RealMatrixImpl.html#256
        >
        getData() is supposed to return a copy of the underlying data.  That is
        its contract.
        >
        > which calls copyOut(), copying the internal array just to access its
        > contents
        > 
http://jakarta.apache.org/commons/math/xref/org/apache/commons/math/linear/RealMatrixImpl.html#821
        >
        >
        > add()
        > 
http://jakarta.apache.org/commons/math/xref/org/apache/commons/math/linear/RealMatrixImpl.html#141
        >
        Yes, that should be fixed. getDataRef should be used in place of getData
        to get the data for the instance.
        >
        
        > This seems unnecessary, I think using methods to access the array
        > contents of the operand matrix would alleviate this unneeded copying.
        > For instance:
        >
        >> for (int row = 0; row < rowCount; row++) {
        >>    for (int col = 0; col < columnCount; col++) {
        >>       outData[row][col] = data[row][col] + m.getEntry(row,col);
        >>    }
        >> }
        >
        That would work in the current impl, actually even better than using
        getDataRef.
        >
        > The modifications I am working on include these fixes and produce a
        > separate abstract class "AbstractRealMatrix" which supports "storage
        > independent" versions of these methods. I'm working to use this Abstract
        > implementation to form the basis for RealMatrixImpl and any
        > "internalized" versions used to support the column, Row and Submatrices.
        
        Do we really need this?  Do we need it for 1.0?  Please provide more details.
        >
        
        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