Author: luc
Date: Sun Jan  4 04:09:53 2009
New Revision: 731232

URL: http://svn.apache.org/viewvc?rev=731232&view=rev
Log:
avoid ugly call to getDataRef that relies on vector internal implementation

Modified:
    
commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseRealMatrix.java

Modified: 
commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseRealMatrix.java
URL: 
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseRealMatrix.java?rev=731232&r1=731231&r2=731232&view=diff
==============================================================================
--- 
commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseRealMatrix.java
 (original)
+++ 
commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseRealMatrix.java
 Sun Jan  4 04:09:53 2009
@@ -1032,13 +1032,12 @@
         throws MatrixIndexException {
 
         checkRowIndex(row);
-        final RealVectorImpl out = new RealVectorImpl(columns);
+        final double[] outData = new double[columns];
 
         // perform copy block-wise, to ensure good cache behavior
         final int iBlock  = row / BLOCK_SIZE;
         final int iRow    = row - iBlock * BLOCK_SIZE;
         int outIndex      = 0;
-        double[] outData  = out.getDataRef();
         for (int jBlock = 0; jBlock < blockColumns; ++jBlock) {
             final int jWidth     = blockWidth(jBlock);
             final double[] block = blocks[iBlock * blockColumns + jBlock];
@@ -1046,7 +1045,7 @@
             outIndex += jWidth;
         }
 
-        return out;
+        return new RealVectorImpl(outData, false);
 
     }
 
@@ -1065,14 +1064,13 @@
         throws MatrixIndexException {
 
         checkColumnIndex(column);
-        final RealVectorImpl out = new RealVectorImpl(rows);
+        final double[] outData = new double[rows];
 
         // perform copy block-wise, to ensure good cache behavior
         final int jBlock  = column / BLOCK_SIZE;
         final int jColumn = column - jBlock * BLOCK_SIZE;
         final int jWidth  = blockWidth(jBlock);
         int outIndex      = 0;
-        double[] outData = out.getDataRef();
         for (int iBlock = 0; iBlock < blockRows; ++iBlock) {
             final int iHeight = blockHeight(iBlock);
             final double[] block = blocks[iBlock * blockColumns + jBlock];
@@ -1081,7 +1079,7 @@
             }
         }
 
-        return out;
+        return new RealVectorImpl(outData, false);
 
     }
 


Reply via email to