You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2009/06/11 10:05:25 UTC

svn commit: r783678 [1/2] - in /commons/proper/math/trunk: ./ src/java/org/apache/commons/math/ src/java/org/apache/commons/math/linear/ src/java/org/apache/commons/math/optimization/general/ src/java/org/apache/commons/math/stat/correlation/ src/site/...

Author: luc
Date: Thu Jun 11 08:05:24 2009
New Revision: 783678

URL: http://svn.apache.org/viewvc?rev=783678&view=rev
Log:
renamed Dense{Real/Field}Matrix into Block{Real/Field}Matrix
as suggested by Phil in http://markmail.org/message/iibgiz4bsv6hjjvh

Added:
    commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BlockFieldMatrix.java
      - copied, changed from r783662, commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseFieldMatrix.java
    commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BlockRealMatrix.java
      - copied, changed from r783662, commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseRealMatrix.java
Removed:
    commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseFieldMatrix.java
    commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseRealMatrix.java
Modified:
    commons/proper/math/trunk/findbugs-exclude-filter.xml
    commons/proper/math/trunk/src/java/org/apache/commons/math/MessagesResources_fr.java
    commons/proper/math/trunk/src/java/org/apache/commons/math/linear/OpenMapRealMatrix.java
    commons/proper/math/trunk/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java
    commons/proper/math/trunk/src/java/org/apache/commons/math/optimization/general/GaussNewtonOptimizer.java
    commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/Covariance.java
    commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/PearsonsCorrelation.java
    commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/SpearmansCorrelation.java
    commons/proper/math/trunk/src/site/xdoc/changes.xml
    commons/proper/math/trunk/src/site/xdoc/userguide/linear.xml
    commons/proper/math/trunk/src/test/org/apache/commons/math/linear/DenseFieldMatrixTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/linear/DenseRealMatrixTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/linear/MatrixUtilsTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/linear/QRDecompositionImplTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/linear/QRSolverTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/linear/SparseRealMatrixTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/GaussNewtonOptimizerTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/NonLinearConjugateGradientOptimizerTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/stat/correlation/PearsonsCorrelationTest.java
    commons/proper/math/trunk/src/test/org/apache/commons/math/stat/correlation/SpearmansRankCorrelationTest.java

Modified: commons/proper/math/trunk/findbugs-exclude-filter.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/findbugs-exclude-filter.xml?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/findbugs-exclude-filter.xml (original)
+++ commons/proper/math/trunk/findbugs-exclude-filter.xml Thu Jun 11 08:05:24 2009
@@ -110,7 +110,7 @@
     <Bug pattern="EI_EXPOSE_REP" />
   </Match>
   <Match>
-    <Class name="org.apache.commons.math.linear.DenseFieldMatrix"/>
+    <Class name="org.apache.commons.math.linear.BlockFieldMatrix"/>
     <Method name="&lt;init>" params="int,int,org.apache.commons.math.FieldElement[][],boolean" returns="void" />
     <Bug pattern="EI_EXPOSE_REP2" />
   </Match>
@@ -125,7 +125,7 @@
     <Bug pattern="EI_EXPOSE_REP" />
   </Match>
   <Match>
-    <Class name="org.apache.commons.math.linear.DenseRealMatrix"/>
+    <Class name="org.apache.commons.math.linear.BlockRealMatrix"/>
     <Method name="&lt;init>" params="int,int,double[][],boolean" returns="void" />
     <Bug pattern="EI_EXPOSE_REP2" />
   </Match>

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/MessagesResources_fr.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/MessagesResources_fr.java?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/MessagesResources_fr.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/MessagesResources_fr.java Thu Jun 11 08:05:24 2009
@@ -421,7 +421,7 @@
     { "{0}x{1} and {2}x{3} matrices are not multiplication compatible",
       "les dimensions {0}x{1} et {2}x{3} sont incompatibles pour la multiplication matricielle" },
 
-    // org.apache.commons.math.linear.DenseRealMatrix
+    // org.apache.commons.math.linear.BlockRealMatrix
     { "wrong array shape (block length = {0}, expected {1})",
       "forme de tableau erron\u00e9e (bloc de longueur {0} au lieu des {1} attendus)" },
 

Copied: commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BlockFieldMatrix.java (from r783662, commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseFieldMatrix.java)
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BlockFieldMatrix.java?p2=commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BlockFieldMatrix.java&p1=commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseFieldMatrix.java&r1=783662&r2=783678&rev=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseFieldMatrix.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BlockFieldMatrix.java Thu Jun 11 08:05:24 2009
@@ -63,7 +63,7 @@
  * @version $Revision$ $Date$
  * @since 2.0
  */
-public class DenseFieldMatrix<T extends FieldElement<T>> extends AbstractFieldMatrix<T> implements Serializable {
+public class BlockFieldMatrix<T extends FieldElement<T>> extends AbstractFieldMatrix<T> implements Serializable {
     
     /** Serializable version identifier */
     private static final long serialVersionUID = -4602336630143123183L;
@@ -95,7 +95,7 @@
      * @throws IllegalArgumentException if row or column dimension is not
      *  positive
      */
-    public DenseFieldMatrix(final Field<T> field, final int rows, final int columns)
+    public BlockFieldMatrix(final Field<T> field, final int rows, final int columns)
         throws IllegalArgumentException {
 
         super(field, rows, columns);
@@ -115,16 +115,16 @@
      * Create a new dense matrix copying entries from raw layout data.
      * <p>The input array <em>must</em> already be in raw layout.</p>
      * <p>Calling this constructor is equivalent to call:
-     * <pre>matrix = new DenseFieldMatrix<T>(getField(), rawData.length, rawData[0].length,
+     * <pre>matrix = new BlockFieldMatrix<T>(getField(), rawData.length, rawData[0].length,
      *                                   toBlocksLayout(rawData), false);</pre>
      * </p>
      * @param rawData data for new matrix, in raw layout
      *
      * @exception IllegalArgumentException if <code>blockData</code> shape is
      * inconsistent with block layout
-     * @see #DenseFieldMatrix(int, int, FieldElement[][], boolean)
+     * @see #BlockFieldMatrix(int, int, FieldElement[][], boolean)
      */
-    public DenseFieldMatrix(final T[][] rawData)
+    public BlockFieldMatrix(final T[][] rawData)
         throws IllegalArgumentException {
         this(rawData.length, rawData[0].length, toBlocksLayout(rawData), false);
     }
@@ -142,9 +142,9 @@
      * inconsistent with block layout
      * @see #createBlocksLayout(Field, int, int)
      * @see #toBlocksLayout(FieldElement[][])
-     * @see #DenseFieldMatrix(FieldElement[][])
+     * @see #BlockFieldMatrix(FieldElement[][])
      */
-    public DenseFieldMatrix(final int rows, final int columns,
+    public BlockFieldMatrix(final int rows, final int columns,
                             final T[][] blockData, final boolean copyArray)
         throws IllegalArgumentException {
 
@@ -186,7 +186,7 @@
      * <p>
      * Raw layout is the straightforward layout where element at row i and
      * column j is in array element <code>rawData[i][j]</code>. Blocks layout
-     * is the layout used in {@link DenseFieldMatrix} instances, where the matrix
+     * is the layout used in {@link BlockFieldMatrix} instances, where the matrix
      * is split in square blocks (except at right and bottom side where blocks may
      * be rectangular to fit matrix size) and each block is stored in a flattened
      * one-dimensional array.
@@ -194,7 +194,7 @@
      * <p>
      * This method creates an array in blocks layout from an input array in raw layout.
      * It can be used to provide the array argument of the {@link
-     * DenseFieldMatrix#DenseFieldMatrix(int, int, FieldElement[][], boolean)}
+     * BlockFieldMatrix#DenseFieldMatrix(int, int, FieldElement[][], boolean)}
      * constructor.
      * </p>
      * @param <T> the type of the field elements
@@ -203,7 +203,7 @@
      * @exception IllegalArgumentException if <code>rawData</code> is not rectangular
      *  (not all rows have the same length)
      * @see #createBlocksLayout(Field, int, int)
-     * @see #DenseFieldMatrix(int, int, FieldElement[][], boolean)
+     * @see #BlockFieldMatrix(int, int, FieldElement[][], boolean)
      */
     public static <T extends FieldElement<T>> T[][] toBlocksLayout(final T[][] rawData)
         throws IllegalArgumentException {
@@ -255,7 +255,7 @@
      * Create a data array in blocks layout.
      * <p>
      * This method can be used to create the array argument of the {@link
-     * DenseFieldMatrix#DenseFieldMatrix(int, int, FieldElement[][], boolean)}
+     * BlockFieldMatrix#DenseFieldMatrix(int, int, FieldElement[][], boolean)}
      * constructor.
      * </p>
      * @param <T> the type of the field elements
@@ -264,7 +264,7 @@
      * @param columns  the number of columns in the new matrix
      * @return a new data array in blocks layout
      * @see #toBlocksLayout(FieldElement[][])
-     * @see #DenseFieldMatrix(int, int, FieldElement[][], boolean)
+     * @see #BlockFieldMatrix(int, int, FieldElement[][], boolean)
      */
     public static <T extends FieldElement<T>> T[][] createBlocksLayout(final Field<T> field,
                                                                        final int rows, final int columns) {
@@ -293,7 +293,7 @@
     @Override
     public FieldMatrix<T> createMatrix(final int rowDimension, final int columnDimension)
         throws IllegalArgumentException {
-        return new DenseFieldMatrix<T>(getField(), rowDimension, columnDimension);
+        return new BlockFieldMatrix<T>(getField(), rowDimension, columnDimension);
     }
 
     /** {@inheritDoc} */
@@ -301,7 +301,7 @@
     public FieldMatrix<T> copy() {
 
         // create an empty matrix
-        DenseFieldMatrix<T> copied = new DenseFieldMatrix<T>(getField(), rows, columns);
+        BlockFieldMatrix<T> copied = new BlockFieldMatrix<T>(getField(), rows, columns);
 
         // copy the blocks
         for (int i = 0; i < blocks.length; ++i) {
@@ -317,13 +317,13 @@
     public FieldMatrix<T> add(final FieldMatrix<T> m)
         throws IllegalArgumentException {
         try {
-            return add((DenseFieldMatrix<T>) m);
+            return add((BlockFieldMatrix<T>) m);
         } catch (ClassCastException cce) {
 
             // safety check
             checkAdditionCompatible(m);
 
-            final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, columns);
+            final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, columns);
 
             // perform addition block-wise, to ensure good cache behavior
             int blockIndex = 0;
@@ -361,13 +361,13 @@
      * @return     this + m
      * @throws  IllegalArgumentException if m is not the same size as this
      */
-    public DenseFieldMatrix<T> add(final DenseFieldMatrix<T> m)
+    public BlockFieldMatrix<T> add(final BlockFieldMatrix<T> m)
         throws IllegalArgumentException {
 
         // safety check
         checkAdditionCompatible(m);
 
-        final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, columns);
+        final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, columns);
 
         // perform addition block-wise, to ensure good cache behavior
         for (int blockIndex = 0; blockIndex < out.blocks.length; ++blockIndex) {
@@ -388,13 +388,13 @@
     public FieldMatrix<T> subtract(final FieldMatrix<T> m)
         throws IllegalArgumentException {
         try {
-            return subtract((DenseFieldMatrix<T>) m);
+            return subtract((BlockFieldMatrix<T>) m);
         } catch (ClassCastException cce) {
 
             // safety check
             checkSubtractionCompatible(m);
 
-            final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, columns);
+            final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, columns);
 
             // perform subtraction block-wise, to ensure good cache behavior
             int blockIndex = 0;
@@ -432,13 +432,13 @@
      * @return     this - m
      * @throws  IllegalArgumentException if m is not the same size as this
      */
-    public DenseFieldMatrix<T> subtract(final DenseFieldMatrix<T> m)
+    public BlockFieldMatrix<T> subtract(final BlockFieldMatrix<T> m)
         throws IllegalArgumentException {
 
         // safety check
         checkSubtractionCompatible(m);
 
-        final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, columns);
+        final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, columns);
 
         // perform subtraction block-wise, to ensure good cache behavior
         for (int blockIndex = 0; blockIndex < out.blocks.length; ++blockIndex) {
@@ -459,7 +459,7 @@
     public FieldMatrix<T> scalarAdd(final T d)
         throws IllegalArgumentException {
 
-        final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, columns);
+        final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, columns);
 
         // perform subtraction block-wise, to ensure good cache behavior
         for (int blockIndex = 0; blockIndex < out.blocks.length; ++blockIndex) {
@@ -479,7 +479,7 @@
     public FieldMatrix<T> scalarMultiply(final T d)
         throws IllegalArgumentException {
 
-        final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, columns);
+        final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, columns);
 
         // perform subtraction block-wise, to ensure good cache behavior
         for (int blockIndex = 0; blockIndex < out.blocks.length; ++blockIndex) {
@@ -499,13 +499,13 @@
     public FieldMatrix<T> multiply(final FieldMatrix<T> m)
         throws IllegalArgumentException {
         try {
-            return multiply((DenseFieldMatrix<T>) m);
+            return multiply((BlockFieldMatrix<T>) m);
         } catch (ClassCastException cce) {
 
             // safety check
             checkMultiplicationCompatible(m);
 
-            final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, m.getColumnDimension());
+            final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, m.getColumnDimension());
             final T zero = getField().getZero();
 
             // perform multiplication block-wise, to ensure good cache behavior
@@ -561,12 +561,12 @@
      * @throws     IllegalArgumentException
      *             if columnDimension(this) != rowDimension(m)
      */
-    public DenseFieldMatrix<T> multiply(DenseFieldMatrix<T> m) throws IllegalArgumentException {
+    public BlockFieldMatrix<T> multiply(BlockFieldMatrix<T> m) throws IllegalArgumentException {
 
         // safety check
         checkMultiplicationCompatible(m);
 
-        final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, m.columns);
+        final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, m.columns);
         final T zero = getField().getZero();
 
         // perform multiplication block-wise, to ensure good cache behavior
@@ -666,8 +666,8 @@
         checkSubMatrixIndex(startRow, endRow, startColumn, endColumn);
 
         // create the output matrix
-        final DenseFieldMatrix<T> out =
-            new DenseFieldMatrix<T>(getField(), endRow - startRow + 1, endColumn - startColumn + 1);
+        final BlockFieldMatrix<T> out =
+            new BlockFieldMatrix<T>(getField(), endRow - startRow + 1, endColumn - startColumn + 1);
 
         // compute blocks shifts
         final int blockStartRow    = startRow    / BLOCK_SIZE;
@@ -839,7 +839,7 @@
         throws MatrixIndexException {
 
         checkRowIndex(row);
-        final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), 1, columns);
+        final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), 1, columns);
 
         // perform copy block-wise, to ensure good cache behavior
         final int iBlock  = row / BLOCK_SIZE;
@@ -871,7 +871,7 @@
     public void setRowMatrix(final int row, final FieldMatrix<T> matrix)
         throws MatrixIndexException, InvalidMatrixException {
         try {
-            setRowMatrix(row, (DenseFieldMatrix<T>) matrix);
+            setRowMatrix(row, (BlockFieldMatrix<T>) matrix);
         } catch (ClassCastException cce) {
             super.setRowMatrix(row, matrix);
         }
@@ -888,7 +888,7 @@
      * @throws InvalidMatrixException if the matrix dimensions do not match one
      * instance row
      */
-    public void setRowMatrix(final int row, final DenseFieldMatrix<T> matrix)
+    public void setRowMatrix(final int row, final BlockFieldMatrix<T> matrix)
         throws MatrixIndexException, InvalidMatrixException {
 
         checkRowIndex(row);
@@ -930,7 +930,7 @@
         throws MatrixIndexException {
 
         checkColumnIndex(column);
-        final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), rows, 1);
+        final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), rows, 1);
 
         // perform copy block-wise, to ensure good cache behavior
         final int jBlock  = column / BLOCK_SIZE;
@@ -960,7 +960,7 @@
     public void setColumnMatrix(final int column, final FieldMatrix<T> matrix)
         throws MatrixIndexException, InvalidMatrixException {
         try {
-            setColumnMatrix(column, (DenseFieldMatrix<T>) matrix);
+            setColumnMatrix(column, (BlockFieldMatrix<T>) matrix);
         } catch (ClassCastException cce) {
             super.setColumnMatrix(column, matrix);
         }
@@ -977,7 +977,7 @@
      * @throws InvalidMatrixException if the matrix dimensions do not match one
      * instance column
      */
-    void setColumnMatrix(final int column, final DenseFieldMatrix<T> matrix)
+    void setColumnMatrix(final int column, final BlockFieldMatrix<T> matrix)
         throws MatrixIndexException, InvalidMatrixException {
 
         checkColumnIndex(column);
@@ -1259,7 +1259,7 @@
 
         final int nRows = getRowDimension();
         final int nCols = getColumnDimension();
-        final DenseFieldMatrix<T> out = new DenseFieldMatrix<T>(getField(), nCols, nRows);
+        final BlockFieldMatrix<T> out = new BlockFieldMatrix<T>(getField(), nCols, nRows);
 
         // perform transpose block-wise, to ensure good cache behavior
         int blockIndex = 0;

Copied: commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BlockRealMatrix.java (from r783662, 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/BlockRealMatrix.java?p2=commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BlockRealMatrix.java&p1=commons/proper/math/trunk/src/java/org/apache/commons/math/linear/DenseRealMatrix.java&r1=783662&r2=783678&rev=783678&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/BlockRealMatrix.java Thu Jun 11 08:05:24 2009
@@ -61,7 +61,7 @@
  * @version $Revision$ $Date$
  * @since 2.0
  */
-public class DenseRealMatrix extends AbstractRealMatrix implements Serializable {
+public class BlockRealMatrix extends AbstractRealMatrix implements Serializable {
     
     /** Serializable version identifier */
     private static final long serialVersionUID = 4991895511313664478L;
@@ -92,7 +92,7 @@
      * @throws IllegalArgumentException if row or column dimension is not
      *  positive
      */
-    public DenseRealMatrix(final int rows, final int columns)
+    public BlockRealMatrix(final int rows, final int columns)
         throws IllegalArgumentException {
 
         super(rows, columns);
@@ -112,16 +112,16 @@
      * Create a new dense matrix copying entries from raw layout data.
      * <p>The input array <em>must</em> already be in raw layout.</p>
      * <p>Calling this constructor is equivalent to call:
-     * <pre>matrix = new DenseRealMatrix(rawData.length, rawData[0].length,
+     * <pre>matrix = new BlockRealMatrix(rawData.length, rawData[0].length,
      *                                   toBlocksLayout(rawData), false);</pre>
      * </p>
      * @param rawData data for new matrix, in raw layout
      *
      * @exception IllegalArgumentException if <code>blockData</code> shape is
      * inconsistent with block layout
-     * @see #DenseRealMatrix(int, int, double[][], boolean)
+     * @see #BlockRealMatrix(int, int, double[][], boolean)
      */
-    public DenseRealMatrix(final double[][] rawData)
+    public BlockRealMatrix(final double[][] rawData)
         throws IllegalArgumentException {
         this(rawData.length, rawData[0].length, toBlocksLayout(rawData), false);
     }
@@ -139,9 +139,9 @@
      * inconsistent with block layout
      * @see #createBlocksLayout(int, int)
      * @see #toBlocksLayout(double[][])
-     * @see #DenseRealMatrix(double[][])
+     * @see #BlockRealMatrix(double[][])
      */
-    public DenseRealMatrix(final int rows, final int columns,
+    public BlockRealMatrix(final int rows, final int columns,
                            final double[][] blockData, final boolean copyArray)
         throws IllegalArgumentException {
 
@@ -183,7 +183,7 @@
      * <p>
      * Raw layout is the straightforward layout where element at row i and
      * column j is in array element <code>rawData[i][j]</code>. Blocks layout
-     * is the layout used in {@link DenseRealMatrix} instances, where the matrix
+     * is the layout used in {@link BlockRealMatrix} instances, where the matrix
      * is split in square blocks (except at right and bottom side where blocks may
      * be rectangular to fit matrix size) and each block is stored in a flattened
      * one-dimensional array.
@@ -191,14 +191,14 @@
      * <p>
      * This method creates an array in blocks layout from an input array in raw layout.
      * It can be used to provide the array argument of the {@link
-     * DenseRealMatrix#DenseRealMatrix(int, int, double[][], boolean)} constructor.
+     * BlockRealMatrix#DenseRealMatrix(int, int, double[][], boolean)} constructor.
      * </p>
      * @param rawData data array in raw layout
      * @return a new data array containing the same entries but in blocks layout
      * @exception IllegalArgumentException if <code>rawData</code> is not rectangular
      *  (not all rows have the same length)
      * @see #createBlocksLayout(int, int)
-     * @see #DenseRealMatrix(int, int, double[][], boolean)
+     * @see #BlockRealMatrix(int, int, double[][], boolean)
      */
     public static double[][] toBlocksLayout(final double[][] rawData)
         throws IllegalArgumentException {
@@ -249,13 +249,13 @@
      * Create a data array in blocks layout.
      * <p>
      * This method can be used to create the array argument of the {@link
-     * DenseRealMatrix#DenseRealMatrix(int, int, double[][], boolean)} constructor.
+     * BlockRealMatrix#DenseRealMatrix(int, int, double[][], boolean)} constructor.
      * </p>
      * @param rows  the number of rows in the new matrix
      * @param columns  the number of columns in the new matrix
      * @return a new data array in blocks layout
      * @see #toBlocksLayout(double[][])
-     * @see #DenseRealMatrix(int, int, double[][], boolean)
+     * @see #BlockRealMatrix(int, int, double[][], boolean)
      */
     public static double[][] createBlocksLayout(final int rows, final int columns) {
 
@@ -281,17 +281,17 @@
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix createMatrix(final int rowDimension, final int columnDimension)
+    public BlockRealMatrix createMatrix(final int rowDimension, final int columnDimension)
         throws IllegalArgumentException {
-        return new DenseRealMatrix(rowDimension, columnDimension);
+        return new BlockRealMatrix(rowDimension, columnDimension);
     }
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix copy() {
+    public BlockRealMatrix copy() {
 
         // create an empty matrix
-        DenseRealMatrix copied = new DenseRealMatrix(rows, columns);
+        BlockRealMatrix copied = new BlockRealMatrix(rows, columns);
 
         // copy the blocks
         for (int i = 0; i < blocks.length; ++i) {
@@ -304,16 +304,16 @@
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix add(final RealMatrix m)
+    public BlockRealMatrix add(final RealMatrix m)
         throws IllegalArgumentException {
         try {
-            return add((DenseRealMatrix) m);
+            return add((BlockRealMatrix) m);
         } catch (ClassCastException cce) {
 
             // safety check
             MatrixUtils.checkAdditionCompatible(this, m);
 
-            final DenseRealMatrix out = new DenseRealMatrix(rows, columns);
+            final BlockRealMatrix out = new BlockRealMatrix(rows, columns);
 
             // perform addition block-wise, to ensure good cache behavior
             int blockIndex = 0;
@@ -351,13 +351,13 @@
      * @return     this + m
      * @throws  IllegalArgumentException if m is not the same size as this
      */
-    public DenseRealMatrix add(final DenseRealMatrix m)
+    public BlockRealMatrix add(final BlockRealMatrix m)
         throws IllegalArgumentException {
 
         // safety check
         MatrixUtils.checkAdditionCompatible(this, m);
 
-        final DenseRealMatrix out = new DenseRealMatrix(rows, columns);
+        final BlockRealMatrix out = new BlockRealMatrix(rows, columns);
 
         // perform addition block-wise, to ensure good cache behavior
         for (int blockIndex = 0; blockIndex < out.blocks.length; ++blockIndex) {
@@ -375,16 +375,16 @@
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix subtract(final RealMatrix m)
+    public BlockRealMatrix subtract(final RealMatrix m)
         throws IllegalArgumentException {
         try {
-            return subtract((DenseRealMatrix) m);
+            return subtract((BlockRealMatrix) m);
         } catch (ClassCastException cce) {
 
             // safety check
             MatrixUtils.checkSubtractionCompatible(this, m);
 
-            final DenseRealMatrix out = new DenseRealMatrix(rows, columns);
+            final BlockRealMatrix out = new BlockRealMatrix(rows, columns);
 
             // perform subtraction block-wise, to ensure good cache behavior
             int blockIndex = 0;
@@ -422,13 +422,13 @@
      * @return     this - m
      * @throws  IllegalArgumentException if m is not the same size as this
      */
-    public DenseRealMatrix subtract(final DenseRealMatrix m)
+    public BlockRealMatrix subtract(final BlockRealMatrix m)
         throws IllegalArgumentException {
 
         // safety check
         MatrixUtils.checkSubtractionCompatible(this, m);
 
-        final DenseRealMatrix out = new DenseRealMatrix(rows, columns);
+        final BlockRealMatrix out = new BlockRealMatrix(rows, columns);
 
         // perform subtraction block-wise, to ensure good cache behavior
         for (int blockIndex = 0; blockIndex < out.blocks.length; ++blockIndex) {
@@ -446,10 +446,10 @@
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix scalarAdd(final double d)
+    public BlockRealMatrix scalarAdd(final double d)
         throws IllegalArgumentException {
 
-        final DenseRealMatrix out = new DenseRealMatrix(rows, columns);
+        final BlockRealMatrix out = new BlockRealMatrix(rows, columns);
 
         // perform subtraction block-wise, to ensure good cache behavior
         for (int blockIndex = 0; blockIndex < out.blocks.length; ++blockIndex) {
@@ -469,7 +469,7 @@
     public RealMatrix scalarMultiply(final double d)
         throws IllegalArgumentException {
 
-        final DenseRealMatrix out = new DenseRealMatrix(rows, columns);
+        final BlockRealMatrix out = new BlockRealMatrix(rows, columns);
 
         // perform subtraction block-wise, to ensure good cache behavior
         for (int blockIndex = 0; blockIndex < out.blocks.length; ++blockIndex) {
@@ -486,16 +486,16 @@
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix multiply(final RealMatrix m)
+    public BlockRealMatrix multiply(final RealMatrix m)
         throws IllegalArgumentException {
         try {
-            return multiply((DenseRealMatrix) m);
+            return multiply((BlockRealMatrix) m);
         } catch (ClassCastException cce) {
 
             // safety check
             MatrixUtils.checkMultiplicationCompatible(this, m);
 
-            final DenseRealMatrix out = new DenseRealMatrix(rows, m.getColumnDimension());
+            final BlockRealMatrix out = new BlockRealMatrix(rows, m.getColumnDimension());
 
             // perform multiplication block-wise, to ensure good cache behavior
             int blockIndex = 0;
@@ -549,12 +549,12 @@
      * @throws     IllegalArgumentException
      *             if columnDimension(this) != rowDimension(m)
      */
-    public DenseRealMatrix multiply(DenseRealMatrix m) throws IllegalArgumentException {
+    public BlockRealMatrix multiply(BlockRealMatrix m) throws IllegalArgumentException {
 
         // safety check
         MatrixUtils.checkMultiplicationCompatible(this, m);
 
-        final DenseRealMatrix out = new DenseRealMatrix(rows, m.columns);
+        final BlockRealMatrix out = new BlockRealMatrix(rows, m.columns);
 
         // perform multiplication block-wise, to ensure good cache behavior
         int blockIndex = 0;
@@ -681,7 +681,7 @@
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix getSubMatrix(final int startRow, final int endRow,
+    public BlockRealMatrix getSubMatrix(final int startRow, final int endRow,
                                    final int startColumn, final int endColumn)
         throws MatrixIndexException {
 
@@ -689,8 +689,8 @@
         MatrixUtils.checkSubMatrixIndex(this, startRow, endRow, startColumn, endColumn);
 
         // create the output matrix
-        final DenseRealMatrix out =
-            new DenseRealMatrix(endRow - startRow + 1, endColumn - startColumn + 1);
+        final BlockRealMatrix out =
+            new BlockRealMatrix(endRow - startRow + 1, endColumn - startColumn + 1);
 
         // compute blocks shifts
         final int blockStartRow    = startRow    / BLOCK_SIZE;
@@ -858,11 +858,11 @@
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix getRowMatrix(final int row)
+    public BlockRealMatrix getRowMatrix(final int row)
         throws MatrixIndexException {
 
         MatrixUtils.checkRowIndex(this, row);
-        final DenseRealMatrix out = new DenseRealMatrix(1, columns);
+        final BlockRealMatrix out = new BlockRealMatrix(1, columns);
 
         // perform copy block-wise, to ensure good cache behavior
         final int iBlock  = row / BLOCK_SIZE;
@@ -894,7 +894,7 @@
     public void setRowMatrix(final int row, final RealMatrix matrix)
         throws MatrixIndexException, InvalidMatrixException {
         try {
-            setRowMatrix(row, (DenseRealMatrix) matrix);
+            setRowMatrix(row, (BlockRealMatrix) matrix);
         } catch (ClassCastException cce) {
             super.setRowMatrix(row, matrix);
         }
@@ -911,7 +911,7 @@
      * @throws InvalidMatrixException if the matrix dimensions do not match one
      * instance row
      */
-    public void setRowMatrix(final int row, final DenseRealMatrix matrix)
+    public void setRowMatrix(final int row, final BlockRealMatrix matrix)
         throws MatrixIndexException, InvalidMatrixException {
 
         MatrixUtils.checkRowIndex(this, row);
@@ -949,11 +949,11 @@
     
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix getColumnMatrix(final int column)
+    public BlockRealMatrix getColumnMatrix(final int column)
         throws MatrixIndexException {
 
         MatrixUtils.checkColumnIndex(this, column);
-        final DenseRealMatrix out = new DenseRealMatrix(rows, 1);
+        final BlockRealMatrix out = new BlockRealMatrix(rows, 1);
 
         // perform copy block-wise, to ensure good cache behavior
         final int jBlock  = column / BLOCK_SIZE;
@@ -983,7 +983,7 @@
     public void setColumnMatrix(final int column, final RealMatrix matrix)
         throws MatrixIndexException, InvalidMatrixException {
         try {
-            setColumnMatrix(column, (DenseRealMatrix) matrix);
+            setColumnMatrix(column, (BlockRealMatrix) matrix);
         } catch (ClassCastException cce) {
             super.setColumnMatrix(column, matrix);
         }
@@ -1000,7 +1000,7 @@
      * @throws InvalidMatrixException if the matrix dimensions do not match one
      * instance column
      */
-    void setColumnMatrix(final int column, final DenseRealMatrix matrix)
+    void setColumnMatrix(final int column, final BlockRealMatrix matrix)
         throws MatrixIndexException, InvalidMatrixException {
 
         MatrixUtils.checkColumnIndex(this, column);
@@ -1276,11 +1276,11 @@
 
     /** {@inheritDoc} */
     @Override
-    public DenseRealMatrix transpose() {
+    public BlockRealMatrix transpose() {
 
         final int nRows = getRowDimension();
         final int nCols = getColumnDimension();
-        final DenseRealMatrix out = new DenseRealMatrix(nCols, nRows);
+        final BlockRealMatrix out = new BlockRealMatrix(nCols, nRows);
 
         // perform transpose block-wise, to ensure good cache behavior
         int blockIndex = 0;

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/linear/OpenMapRealMatrix.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/OpenMapRealMatrix.java?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/linear/OpenMapRealMatrix.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/linear/OpenMapRealMatrix.java Thu Jun 11 08:05:24 2009
@@ -164,7 +164,7 @@
             MatrixUtils.checkMultiplicationCompatible(this, m);
 
             final int outCols = m.getColumnDimension();
-            final DenseRealMatrix out = new DenseRealMatrix(rowDimension, outCols);
+            final BlockRealMatrix out = new BlockRealMatrix(rowDimension, outCols);
             for (OpenIntToDoubleHashMap.Iterator iterator = entries.iterator(); iterator.hasNext();) {
                 iterator.advance();
                 final double value = iterator.value();

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/linear/QRDecompositionImpl.java Thu Jun 11 08:05:24 2009
@@ -369,9 +369,9 @@
             }
 
             final int columns        = b.getColumnDimension();
-            final int blockSize      = DenseRealMatrix.BLOCK_SIZE;
+            final int blockSize      = BlockRealMatrix.BLOCK_SIZE;
             final int cBlocks        = (columns + blockSize - 1) / blockSize;
-            final double[][] xBlocks = DenseRealMatrix.createBlocksLayout(n, columns);
+            final double[][] xBlocks = BlockRealMatrix.createBlocksLayout(n, columns);
             final double[][] y       = new double[b.getRowDimension()][blockSize];
             final double[]   alpha   = new double[blockSize];
 
@@ -435,7 +435,7 @@
 
             }
 
-            return new DenseRealMatrix(n, columns, xBlocks, false);
+            return new BlockRealMatrix(n, columns, xBlocks, false);
 
         }
 

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/optimization/general/GaussNewtonOptimizer.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/optimization/general/GaussNewtonOptimizer.java?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/optimization/general/GaussNewtonOptimizer.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/optimization/general/GaussNewtonOptimizer.java Thu Jun 11 08:05:24 2009
@@ -21,7 +21,7 @@
 
 import org.apache.commons.math.FunctionEvaluationException;
 import org.apache.commons.math.linear.DecompositionSolver;
-import org.apache.commons.math.linear.DenseRealMatrix;
+import org.apache.commons.math.linear.BlockRealMatrix;
 import org.apache.commons.math.linear.InvalidMatrixException;
 import org.apache.commons.math.linear.LUDecompositionImpl;
 import org.apache.commons.math.linear.QRDecompositionImpl;
@@ -109,7 +109,7 @@
             try {
 
                 // solve the linearized least squares problem
-                RealMatrix mA = new DenseRealMatrix(a);
+                RealMatrix mA = new BlockRealMatrix(a);
                 DecompositionSolver solver = useLU ?
                         new LUDecompositionImpl(mA).getSolver() :
                         new QRDecompositionImpl(mA).getSolver();

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/Covariance.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/Covariance.java?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/Covariance.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/Covariance.java Thu Jun 11 08:05:24 2009
@@ -18,7 +18,7 @@
 
 import org.apache.commons.math.MathRuntimeException;
 import org.apache.commons.math.linear.RealMatrix;
-import org.apache.commons.math.linear.DenseRealMatrix;
+import org.apache.commons.math.linear.BlockRealMatrix;
 import org.apache.commons.math.stat.descriptive.moment.Mean;
 import org.apache.commons.math.stat.descriptive.moment.Variance;
 
@@ -78,7 +78,7 @@
      * rectangular with at least two rows and two columns.
      */
     public Covariance(double[][] data, boolean biasCorrected) {
-        this(new DenseRealMatrix(data), biasCorrected);
+        this(new BlockRealMatrix(data), biasCorrected);
     }
     
     /**
@@ -159,7 +159,7 @@
     protected RealMatrix computeCovarianceMatrix(RealMatrix matrix, boolean biasCorrected) {
         int dimension = matrix.getColumnDimension();
         Variance variance = new Variance(biasCorrected);
-        RealMatrix outMatrix = new DenseRealMatrix(dimension, dimension);
+        RealMatrix outMatrix = new BlockRealMatrix(dimension, dimension);
         for (int i = 0; i < dimension; i++) {
             for (int j = 0; j < i; j++) {
               double cov = covariance(matrix.getColumn(i), matrix.getColumn(j), biasCorrected);
@@ -190,7 +190,7 @@
      * @return covariance matrix
      */
     protected RealMatrix computeCovarianceMatrix(double[][] data, boolean biasCorrected) {
-        return computeCovarianceMatrix(new DenseRealMatrix(data), biasCorrected);
+        return computeCovarianceMatrix(new BlockRealMatrix(data), biasCorrected);
     }
     
     /**

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/PearsonsCorrelation.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/PearsonsCorrelation.java?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/PearsonsCorrelation.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/PearsonsCorrelation.java Thu Jun 11 08:05:24 2009
@@ -21,7 +21,7 @@
 import org.apache.commons.math.distribution.TDistribution;
 import org.apache.commons.math.distribution.TDistributionImpl;
 import org.apache.commons.math.linear.RealMatrix;
-import org.apache.commons.math.linear.DenseRealMatrix;
+import org.apache.commons.math.linear.BlockRealMatrix;
 import org.apache.commons.math.stat.regression.SimpleRegression;
 
 /**
@@ -65,7 +65,7 @@
      * rectangular with at least two rows and two columns.
      */
     public PearsonsCorrelation(double[][] data) {
-        this(new DenseRealMatrix(data));
+        this(new BlockRealMatrix(data));
     }
     
     /**
@@ -141,7 +141,7 @@
                 out[i][j] = Math.sqrt((1 - r * r) /(nObs - 2));
             }
         }
-        return new DenseRealMatrix(out);
+        return new BlockRealMatrix(out);
     }
 
     /**
@@ -172,7 +172,7 @@
                 }
             }
         }
-        return new DenseRealMatrix(out);
+        return new BlockRealMatrix(out);
     }
     
     
@@ -185,7 +185,7 @@
      */
     public RealMatrix computeCorrelationMatrix(RealMatrix matrix) {
         int nVars = matrix.getColumnDimension();
-        RealMatrix outMatrix = new DenseRealMatrix(nVars, nVars);
+        RealMatrix outMatrix = new BlockRealMatrix(nVars, nVars);
         for (int i = 0; i < nVars; i++) {
             for (int j = 0; j < i; j++) {
               double corr = correlation(matrix.getColumn(i), matrix.getColumn(j));
@@ -206,7 +206,7 @@
      * @return correlation matrix
      */
     public RealMatrix computeCorrelationMatrix(double[][] data) {
-       return computeCorrelationMatrix(new DenseRealMatrix(data));
+       return computeCorrelationMatrix(new BlockRealMatrix(data));
     }
     
     /**
@@ -249,7 +249,7 @@
      */
     public RealMatrix covarianceToCorrelation(RealMatrix covarianceMatrix) {
         int nVars = covarianceMatrix.getColumnDimension();
-        RealMatrix outMatrix = new DenseRealMatrix(nVars, nVars);
+        RealMatrix outMatrix = new BlockRealMatrix(nVars, nVars);
         for (int i = 0; i < nVars; i++) {
             double sigma = Math.sqrt(covarianceMatrix.getEntry(i, i));
             outMatrix.setEntry(i, i, 1d);

Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/SpearmansCorrelation.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/SpearmansCorrelation.java?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/SpearmansCorrelation.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/stat/correlation/SpearmansCorrelation.java Thu Jun 11 08:05:24 2009
@@ -18,7 +18,7 @@
 package org.apache.commons.math.stat.correlation;
 
 import org.apache.commons.math.MathRuntimeException;
-import org.apache.commons.math.linear.DenseRealMatrix;
+import org.apache.commons.math.linear.BlockRealMatrix;
 import org.apache.commons.math.linear.RealMatrix;
 import org.apache.commons.math.stat.ranking.NaturalRanking;
 import org.apache.commons.math.stat.ranking.RankingAlgorithm;
@@ -128,7 +128,7 @@
      * @return correlation matrix
      */
     public RealMatrix computeCorrelationMatrix(double[][] data) {
-       return computeCorrelationMatrix(new DenseRealMatrix(data));
+       return computeCorrelationMatrix(new BlockRealMatrix(data));
     }
     
     /**

Modified: commons/proper/math/trunk/src/site/xdoc/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/changes.xml?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/changes.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/changes.xml Thu Jun 11 08:05:24 2009
@@ -83,6 +83,9 @@
         Added support for any type of field in linear algebra (FielxMatrix, FieldVector,
         FieldLUDecomposition)
       </action>
+      <action dev="luc" type="add" >
+        Added a block-based storage type for dense matrices improving speed for large dimensions
+      </action>
       <action dev="psteitz" type="add" due-to="John Bollinger">
         Added AggregateSummaryStatistics class to support aggregation of SummaryStatistics.
       </action>

Modified: commons/proper/math/trunk/src/site/xdoc/userguide/linear.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/userguide/linear.xml?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/userguide/linear.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/userguide/linear.xml Thu Jun 11 08:05:24 2009
@@ -71,9 +71,12 @@
          </source>
         </p>
         <p>
-        The two main implementations of the interface are <a
+        The three main implementations of the interface are <a
         href="../apidocs/org/apache/commons/math/linear/RealMatrixImpl.html">
-        RealMatrixImpl</a> for dense matrices and <a
+        RealMatrixImpl</a> and <a
+        href="../apidocs/org/apache/commons/math/linear/BlockRealMatrix.html">
+        BlockRealMatrix</a> for dense matrices (the second one being more suited to
+        dimensions above 50 or 100) and <a
         href="../apidocs/org/apache/commons/math/linear/SparseRealMatrix.html">
         SparseRealMatrix</a> for sparse matrices.
         </p>

Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/linear/DenseFieldMatrixTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/DenseFieldMatrixTest.java?rev=783678&r1=783677&r2=783678&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/linear/DenseFieldMatrixTest.java (original)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/linear/DenseFieldMatrixTest.java Thu Jun 11 08:05:24 2009
@@ -28,7 +28,7 @@
 import org.apache.commons.math.fraction.FractionField;
 
 /**
- * Test cases for the {@link DenseFieldMatrix} class.
+ * Test cases for the {@link BlockFieldMatrix} class.
  *
  * @version $Revision$ $Date$
  */
@@ -158,14 +158,14 @@
     
     public static Test suite() {
         TestSuite suite = new TestSuite(DenseFieldMatrixTest.class);
-        suite.setName("DenseFieldMatrix<Fraction> Tests");
+        suite.setName("BlockFieldMatrix<Fraction> Tests");
         return suite;
     }
     
     /** test dimensions */
     public void testDimensions() {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        DenseFieldMatrix<Fraction> m2 = new DenseFieldMatrix<Fraction>(testData2);
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> m2 = new BlockFieldMatrix<Fraction>(testData2);
         assertEquals("testData row dimension",3,m.getRowDimension());
         assertEquals("testData column dimension",3,m.getColumnDimension());
         assertTrue("testData is square",m.isSquare());
@@ -177,18 +177,18 @@
     /** test copy functions */
     public void testCopyFunctions() {
         Random r = new Random(66636328996002l);
-        DenseFieldMatrix<Fraction> m1 = createRandomMatrix(r, 47, 83);
-        DenseFieldMatrix<Fraction> m2 = new DenseFieldMatrix<Fraction>(m1.getData());
+        BlockFieldMatrix<Fraction> m1 = createRandomMatrix(r, 47, 83);
+        BlockFieldMatrix<Fraction> m2 = new BlockFieldMatrix<Fraction>(m1.getData());
         assertEquals(m1, m2);
-        DenseFieldMatrix<Fraction> m3 = new DenseFieldMatrix<Fraction>(testData);
-        DenseFieldMatrix<Fraction> m4 = new DenseFieldMatrix<Fraction>(m3.getData());
+        BlockFieldMatrix<Fraction> m3 = new BlockFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> m4 = new BlockFieldMatrix<Fraction>(m3.getData());
         assertEquals(m3, m4);
     }           
     
     /** test add */
     public void testAdd() {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        DenseFieldMatrix<Fraction> mInv = new DenseFieldMatrix<Fraction>(testDataInv);
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> mInv = new BlockFieldMatrix<Fraction>(testDataInv);
         FieldMatrix<Fraction> mPlusMInv = m.add(mInv);
         Fraction[][] sumEntries = mPlusMInv.getData();
         for (int row = 0; row < m.getRowDimension(); row++) {
@@ -200,8 +200,8 @@
     
     /** test add failure */
     public void testAddFail() {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        DenseFieldMatrix<Fraction> m2 = new DenseFieldMatrix<Fraction>(testData2);
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> m2 = new BlockFieldMatrix<Fraction>(testData2);
         try {
             m.add(m2);
             fail("IllegalArgumentException expected");
@@ -212,11 +212,11 @@
     
      /** test m-n = m + -n */
     public void testPlusMinus() {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        DenseFieldMatrix<Fraction> m2 = new DenseFieldMatrix<Fraction>(testDataInv);
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> m2 = new BlockFieldMatrix<Fraction>(testDataInv);
         TestUtils.assertEquals(m.subtract(m2), m2.scalarMultiply(new Fraction(-1)).add(m));        
         try {
-            m.subtract(new DenseFieldMatrix<Fraction>(testData2));
+            m.subtract(new BlockFieldMatrix<Fraction>(testData2));
             fail("Expecting illegalArgumentException");
         } catch (IllegalArgumentException ex) {
             // ignored
@@ -225,17 +225,17 @@
    
     /** test multiply */
      public void testMultiply() {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        DenseFieldMatrix<Fraction> mInv = new DenseFieldMatrix<Fraction>(testDataInv);
-        DenseFieldMatrix<Fraction> identity = new DenseFieldMatrix<Fraction>(id);
-        DenseFieldMatrix<Fraction> m2 = new DenseFieldMatrix<Fraction>(testData2);
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> mInv = new BlockFieldMatrix<Fraction>(testDataInv);
+        BlockFieldMatrix<Fraction> identity = new BlockFieldMatrix<Fraction>(id);
+        BlockFieldMatrix<Fraction> m2 = new BlockFieldMatrix<Fraction>(testData2);
         TestUtils.assertEquals(m.multiply(mInv), identity);
         TestUtils.assertEquals(mInv.multiply(m), identity);
         TestUtils.assertEquals(m.multiply(identity), m);
         TestUtils.assertEquals(identity.multiply(mInv), mInv);
         TestUtils.assertEquals(m2.multiply(identity), m2); 
         try {
-            m.multiply(new DenseFieldMatrix<Fraction>(bigSingular));
+            m.multiply(new BlockFieldMatrix<Fraction>(bigSingular));
             fail("Expecting illegalArgumentException");
         } catch (IllegalArgumentException ex) {
             // expected
@@ -245,7 +245,7 @@
     public void testSeveralBlocks() {
 
         FieldMatrix<Fraction> m =
-            new DenseFieldMatrix<Fraction>(FractionField.getInstance(), 37, 41);
+            new BlockFieldMatrix<Fraction>(FractionField.getInstance(), 37, 41);
         for (int i = 0; i < m.getRowDimension(); ++i) {
             for (int j = 0; j < m.getColumnDimension(); ++j) {
                 m.setEntry(i, j, new Fraction(i * 11 + j, 11));
@@ -327,7 +327,7 @@
 
     }
 
-    //Additional Test for DenseFieldMatrix<Fraction>Test.testMultiply
+    //Additional Test for BlockFieldMatrix<Fraction>Test.testMultiply
 
     private Fraction[][] d3 = new Fraction[][] {
             {new Fraction(1),new Fraction(2),new Fraction(3),new Fraction(4)},
@@ -342,17 +342,17 @@
     private Fraction[][] d5 = new Fraction[][] {{new Fraction(30)},{new Fraction(70)}};
      
     public void testMultiply2() { 
-       FieldMatrix<Fraction> m3 = new DenseFieldMatrix<Fraction>(d3);   
-       FieldMatrix<Fraction> m4 = new DenseFieldMatrix<Fraction>(d4);
-       FieldMatrix<Fraction> m5 = new DenseFieldMatrix<Fraction>(d5);
+       FieldMatrix<Fraction> m3 = new BlockFieldMatrix<Fraction>(d3);   
+       FieldMatrix<Fraction> m4 = new BlockFieldMatrix<Fraction>(d4);
+       FieldMatrix<Fraction> m5 = new BlockFieldMatrix<Fraction>(d5);
        TestUtils.assertEquals(m3.multiply(m4), m5);
    }  
         
     /** test trace */
     public void testTrace() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(id);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(id);
         assertEquals(new Fraction(3),m.getTrace());
-        m = new DenseFieldMatrix<Fraction>(testData2);
+        m = new BlockFieldMatrix<Fraction>(testData2);
         try {
             m.getTrace();
             fail("Expecting NonSquareMatrixException");
@@ -363,17 +363,17 @@
     
     /** test scalarAdd */
     public void testScalarAdd() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        TestUtils.assertEquals(new DenseFieldMatrix<Fraction>(testDataPlus2),
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        TestUtils.assertEquals(new BlockFieldMatrix<Fraction>(testDataPlus2),
                                m.scalarAdd(new Fraction(2)));
     }
                     
     /** test operate */
     public void testOperate() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(id);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(id);
         TestUtils.assertEquals(testVector, m.operate(testVector));
         TestUtils.assertEquals(testVector, m.operate(new FieldVectorImpl<Fraction>(testVector)).getData());
-        m = new DenseFieldMatrix<Fraction>(bigSingular);
+        m = new BlockFieldMatrix<Fraction>(bigSingular);
         try {
             m.operate(testVector);
             fail("Expecting illegalArgumentException");
@@ -383,9 +383,9 @@
     }
 
     public void testOperateLarge() {
-        int p = (11 * DenseFieldMatrix.BLOCK_SIZE) / 10;
-        int q = (11 * DenseFieldMatrix.BLOCK_SIZE) / 10;
-        int r =  DenseFieldMatrix.BLOCK_SIZE / 2;
+        int p = (11 * BlockFieldMatrix.BLOCK_SIZE) / 10;
+        int q = (11 * BlockFieldMatrix.BLOCK_SIZE) / 10;
+        int r =  BlockFieldMatrix.BLOCK_SIZE / 2;
         Random random = new Random(111007463902334l);
         FieldMatrix<Fraction> m1 = createRandomMatrix(random, p, q);
         FieldMatrix<Fraction> m2 = createRandomMatrix(random, q, r);
@@ -396,9 +396,9 @@
     }
 
     public void testOperatePremultiplyLarge() {
-        int p = (11 * DenseFieldMatrix.BLOCK_SIZE) / 10;
-        int q = (11 * DenseFieldMatrix.BLOCK_SIZE) / 10;
-        int r =  DenseFieldMatrix.BLOCK_SIZE / 2;
+        int p = (11 * BlockFieldMatrix.BLOCK_SIZE) / 10;
+        int q = (11 * BlockFieldMatrix.BLOCK_SIZE) / 10;
+        int r =  BlockFieldMatrix.BLOCK_SIZE / 2;
         Random random = new Random(111007463902334l);
         FieldMatrix<Fraction> m1 = createRandomMatrix(random, p, q);
         FieldMatrix<Fraction> m2 = createRandomMatrix(random, q, r);
@@ -410,7 +410,7 @@
 
     /** test issue MATH-209 */
     public void testMath209() {
-        FieldMatrix<Fraction> a = new DenseFieldMatrix<Fraction>(new Fraction[][] {
+        FieldMatrix<Fraction> a = new BlockFieldMatrix<Fraction>(new Fraction[][] {
                 { new Fraction(1), new Fraction(2) },
                 { new Fraction(3), new Fraction(4) },
                 { new Fraction(5), new Fraction(6) }
@@ -424,22 +424,22 @@
     
     /** test transpose */
     public void testTranspose() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData); 
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData); 
         FieldMatrix<Fraction> mIT = new FieldLUDecompositionImpl<Fraction>(m).getSolver().getInverse().transpose();
         FieldMatrix<Fraction> mTI = new FieldLUDecompositionImpl<Fraction>(m.transpose()).getSolver().getInverse();
         TestUtils.assertEquals(mIT, mTI);
-        m = new DenseFieldMatrix<Fraction>(testData2);
-        FieldMatrix<Fraction> mt = new DenseFieldMatrix<Fraction>(testData2T);
+        m = new BlockFieldMatrix<Fraction>(testData2);
+        FieldMatrix<Fraction> mt = new BlockFieldMatrix<Fraction>(testData2T);
         TestUtils.assertEquals(mt, m.transpose());
     }
     
     /** test preMultiply by vector */
     public void testPremultiplyVector() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
         TestUtils.assertEquals(m.preMultiply(testVector), preMultTest);
         TestUtils.assertEquals(m.preMultiply(new FieldVectorImpl<Fraction>(testVector).getData()),
                                preMultTest);
-        m = new DenseFieldMatrix<Fraction>(bigSingular);
+        m = new BlockFieldMatrix<Fraction>(bigSingular);
         try {
             m.preMultiply(testVector);
             fail("expecting IllegalArgumentException");
@@ -449,20 +449,20 @@
     }
     
     public void testPremultiply() {
-        FieldMatrix<Fraction> m3 = new DenseFieldMatrix<Fraction>(d3);   
-        FieldMatrix<Fraction> m4 = new DenseFieldMatrix<Fraction>(d4);
-        FieldMatrix<Fraction> m5 = new DenseFieldMatrix<Fraction>(d5);
+        FieldMatrix<Fraction> m3 = new BlockFieldMatrix<Fraction>(d3);   
+        FieldMatrix<Fraction> m4 = new BlockFieldMatrix<Fraction>(d4);
+        FieldMatrix<Fraction> m5 = new BlockFieldMatrix<Fraction>(d5);
         TestUtils.assertEquals(m4.preMultiply(m3), m5);
         
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        DenseFieldMatrix<Fraction> mInv = new DenseFieldMatrix<Fraction>(testDataInv);
-        DenseFieldMatrix<Fraction> identity = new DenseFieldMatrix<Fraction>(id);
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> mInv = new BlockFieldMatrix<Fraction>(testDataInv);
+        BlockFieldMatrix<Fraction> identity = new BlockFieldMatrix<Fraction>(id);
         TestUtils.assertEquals(m.preMultiply(mInv), identity);
         TestUtils.assertEquals(mInv.preMultiply(m), identity);
         TestUtils.assertEquals(m.preMultiply(identity), m);
         TestUtils.assertEquals(identity.preMultiply(mInv), mInv);
         try {
-            m.preMultiply(new DenseFieldMatrix<Fraction>(bigSingular));
+            m.preMultiply(new BlockFieldMatrix<Fraction>(bigSingular));
             fail("Expecting illegalArgumentException");
         } catch (IllegalArgumentException ex) {
             // ignored
@@ -470,7 +470,7 @@
     }
     
     public void testGetVectors() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
         TestUtils.assertEquals(m.getRow(0), testDataRow1);
         TestUtils.assertEquals(m.getColumn(2), testDataCol3);
         try {
@@ -488,7 +488,7 @@
     }
     
     public void testGetEntry() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
         assertEquals(m.getEntry(0,1),new Fraction(2));
         try {
             m.getEntry(10, 4);
@@ -505,14 +505,14 @@
                 {new Fraction(1),new Fraction(2),new Fraction(3)},
                 {new Fraction(2),new Fraction(5),new Fraction(3)}
         };
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(matrixData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(matrixData);
         // One more with three rows, two columns
         Fraction[][] matrixData2 = {
                 {new Fraction(1),new Fraction(2)},
                 {new Fraction(2),new Fraction(5)},
                 {new Fraction(1), new Fraction(7)}
         };
-        FieldMatrix<Fraction> n = new DenseFieldMatrix<Fraction>(matrixData2);
+        FieldMatrix<Fraction> n = new BlockFieldMatrix<Fraction>(matrixData2);
         // Now multiply m by n
         FieldMatrix<Fraction> p = m.multiply(n);
         assertEquals(2, p.getRowDimension());
@@ -528,7 +528,7 @@
                 {new Fraction(-1), new Fraction(7), new Fraction(6)},
                 {new Fraction(4), new Fraction(-3), new Fraction(-5)}
         };
-        FieldMatrix<Fraction> coefficients = new DenseFieldMatrix<Fraction>(coefficientsData);
+        FieldMatrix<Fraction> coefficients = new BlockFieldMatrix<Fraction>(coefficientsData);
         Fraction[] constants = {new Fraction(1), new Fraction(-2), new Fraction(1)};
         Fraction[] solution = new FieldLUDecompositionImpl<Fraction>(coefficients).getSolver().solve(constants);
         assertEquals(new Fraction(2).multiply(solution[0]).
@@ -548,7 +548,7 @@
     
     // test submatrix accessors
     public void testGetSubMatrix() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         checkGetSubMatrix(m, subRows23Cols00,  2 , 3 , 0, 0, false);
         checkGetSubMatrix(m, subRows00Cols33,  0 , 0 , 3, 3, false);
         checkGetSubMatrix(m, subRows01Cols23,  0 , 1 , 2, 3, false);   
@@ -571,7 +571,7 @@
                                    boolean mustFail) {
         try {
             FieldMatrix<Fraction> sub = m.getSubMatrix(startRow, endRow, startColumn, endColumn);
-            assertEquals(new DenseFieldMatrix<Fraction>(reference), sub);
+            assertEquals(new BlockFieldMatrix<Fraction>(reference), sub);
             if (mustFail) {
                 fail("Expecting MatrixIndexException");
             }
@@ -587,7 +587,7 @@
                                    boolean mustFail) {
         try {
             FieldMatrix<Fraction> sub = m.getSubMatrix(selectedRows, selectedColumns);
-            assertEquals(new DenseFieldMatrix<Fraction>(reference), sub);
+            assertEquals(new BlockFieldMatrix<Fraction>(reference), sub);
             if (mustFail) {
                 fail("Expecting MatrixIndexException");
             }
@@ -599,11 +599,11 @@
     }
 
     public void testGetSetMatrixLarge() {
-        int n = 3 * DenseFieldMatrix.BLOCK_SIZE;
+        int n = 3 * BlockFieldMatrix.BLOCK_SIZE;
         FieldMatrix<Fraction> m =
-            new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
+            new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
         FieldMatrix<Fraction> sub =
-            new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n - 4, n - 4).scalarAdd(new Fraction(1));
+            new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n - 4, n - 4).scalarAdd(new Fraction(1));
 
         m.setSubMatrix(sub.getData(), 2, 2);
         for (int i = 0; i < n; ++i) {
@@ -620,7 +620,7 @@
     }
 
     public void testCopySubMatrix() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         checkCopy(m, subRows23Cols00,  2 , 3 , 0, 0, false);
         checkCopy(m, subRows00Cols33,  0 , 0 , 3, 3, false);
         checkCopy(m, subRows01Cols23,  0 , 1 , 2, 3, false);   
@@ -647,7 +647,7 @@
                              new Fraction[1][1] :
                              new Fraction[reference.length][reference[0].length];
             m.copySubMatrix(startRow, endRow, startColumn, endColumn, sub);
-            assertEquals(new DenseFieldMatrix<Fraction>(reference), new DenseFieldMatrix<Fraction>(sub));
+            assertEquals(new BlockFieldMatrix<Fraction>(reference), new BlockFieldMatrix<Fraction>(sub));
             if (mustFail) {
                 fail("Expecting MatrixIndexException");
             }
@@ -666,7 +666,7 @@
                     new Fraction[1][1] :
                     new Fraction[reference.length][reference[0].length];
             m.copySubMatrix(selectedRows, selectedColumns, sub);
-            assertEquals(new DenseFieldMatrix<Fraction>(reference), new DenseFieldMatrix<Fraction>(sub));
+            assertEquals(new BlockFieldMatrix<Fraction>(reference), new BlockFieldMatrix<Fraction>(sub));
             if (mustFail) {
                 fail("Expecting MatrixIndexException");
             }
@@ -678,9 +678,9 @@
     }
 
     public void testGetRowMatrix() {
-        FieldMatrix<Fraction> m     = new DenseFieldMatrix<Fraction>(subTestData);
-        FieldMatrix<Fraction> mRow0 = new DenseFieldMatrix<Fraction>(subRow0);
-        FieldMatrix<Fraction> mRow3 = new DenseFieldMatrix<Fraction>(subRow3);
+        FieldMatrix<Fraction> m     = new BlockFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> mRow0 = new BlockFieldMatrix<Fraction>(subRow0);
+        FieldMatrix<Fraction> mRow3 = new BlockFieldMatrix<Fraction>(subRow3);
         assertEquals("Row0", mRow0, m.getRowMatrix(0));
         assertEquals("Row3", mRow3, m.getRowMatrix(3));
         try {
@@ -698,8 +698,8 @@
     }
 
     public void testSetRowMatrix() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
-        FieldMatrix<Fraction> mRow3 = new DenseFieldMatrix<Fraction>(subRow3);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> mRow3 = new BlockFieldMatrix<Fraction>(subRow3);
         assertNotSame(mRow3, m.getRowMatrix(0));
         m.setRowMatrix(0, mRow3);
         assertEquals(mRow3, m.getRowMatrix(0));
@@ -718,11 +718,11 @@
     }
     
     public void testGetSetRowMatrixLarge() {
-        int n = 3 * DenseFieldMatrix.BLOCK_SIZE;
+        int n = 3 * BlockFieldMatrix.BLOCK_SIZE;
         FieldMatrix<Fraction> m =
-            new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
+            new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
         FieldMatrix<Fraction> sub =
-            new DenseFieldMatrix<Fraction>(FractionField.getInstance(), 1, n).scalarAdd(new Fraction(1));
+            new BlockFieldMatrix<Fraction>(FractionField.getInstance(), 1, n).scalarAdd(new Fraction(1));
 
         m.setRowMatrix(2, sub);
         for (int i = 0; i < n; ++i) {
@@ -739,9 +739,9 @@
     }
     
     public void testGetColumnMatrix() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
-        FieldMatrix<Fraction> mColumn1 = new DenseFieldMatrix<Fraction>(subColumn1);
-        FieldMatrix<Fraction> mColumn3 = new DenseFieldMatrix<Fraction>(subColumn3);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> mColumn1 = new BlockFieldMatrix<Fraction>(subColumn1);
+        FieldMatrix<Fraction> mColumn3 = new BlockFieldMatrix<Fraction>(subColumn3);
         assertEquals(mColumn1, m.getColumnMatrix(1));
         assertEquals(mColumn3, m.getColumnMatrix(3));
         try {
@@ -759,8 +759,8 @@
     }
 
     public void testSetColumnMatrix() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
-        FieldMatrix<Fraction> mColumn3 = new DenseFieldMatrix<Fraction>(subColumn3);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> mColumn3 = new BlockFieldMatrix<Fraction>(subColumn3);
         assertNotSame(mColumn3, m.getColumnMatrix(1));
         m.setColumnMatrix(1, mColumn3);
         assertEquals(mColumn3, m.getColumnMatrix(1));
@@ -779,11 +779,11 @@
     }
 
     public void testGetSetColumnMatrixLarge() {
-        int n = 3 * DenseFieldMatrix.BLOCK_SIZE;
+        int n = 3 * BlockFieldMatrix.BLOCK_SIZE;
         FieldMatrix<Fraction> m =
-            new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
+            new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
         FieldMatrix<Fraction> sub =
-            new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n, 1).scalarAdd(new Fraction(1));
+            new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n, 1).scalarAdd(new Fraction(1));
 
         m.setColumnMatrix(2, sub);
         for (int i = 0; i < n; ++i) {
@@ -800,7 +800,7 @@
     }
     
     public void testGetRowVector() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         FieldVector<Fraction> mRow0 = new FieldVectorImpl<Fraction>(subRow0[0]);
         FieldVector<Fraction> mRow3 = new FieldVectorImpl<Fraction>(subRow3[0]);
         assertEquals(mRow0, m.getRowVector(0));
@@ -820,7 +820,7 @@
     }
 
     public void testSetRowVector() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         FieldVector<Fraction> mRow3 = new FieldVectorImpl<Fraction>(subRow3[0]);
         assertNotSame(mRow3, m.getRowMatrix(0));
         m.setRowVector(0, mRow3);
@@ -840,8 +840,8 @@
     }
 
     public void testGetSetRowVectorLarge() {
-        int n = 3 * DenseFieldMatrix.BLOCK_SIZE;
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
+        int n = 3 * BlockFieldMatrix.BLOCK_SIZE;
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
         FieldVector<Fraction> sub = new FieldVectorImpl<Fraction>(n, new Fraction(1));
 
         m.setRowVector(2, sub);
@@ -859,7 +859,7 @@
     }
     
     public void testGetColumnVector() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         FieldVector<Fraction> mColumn1 = columnToVector(subColumn1);
         FieldVector<Fraction> mColumn3 = columnToVector(subColumn3);
         assertEquals(mColumn1, m.getColumnVector(1));
@@ -879,7 +879,7 @@
     }
 
     public void testSetColumnVector() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         FieldVector<Fraction> mColumn3 = columnToVector(subColumn3);
         assertNotSame(mColumn3, m.getColumnVector(1));
         m.setColumnVector(1, mColumn3);
@@ -899,8 +899,8 @@
     }
 
     public void testGetSetColumnVectorLarge() {
-        int n = 3 * DenseFieldMatrix.BLOCK_SIZE;
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
+        int n = 3 * BlockFieldMatrix.BLOCK_SIZE;
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
         FieldVector<Fraction> sub = new FieldVectorImpl<Fraction>(n, new Fraction(1));
 
         m.setColumnVector(2, sub);
@@ -926,7 +926,7 @@
     }
 
     public void testGetRow() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         checkArrays(subRow0[0], m.getRow(0));
         checkArrays(subRow3[0], m.getRow(3));
         try {
@@ -944,7 +944,7 @@
     }
 
     public void testSetRow() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         assertTrue(subRow3[0][0] != m.getRow(0)[0]);
         m.setRow(0, subRow3[0]);
         checkArrays(subRow3[0], m.getRow(0));
@@ -963,8 +963,8 @@
     }
 
     public void testGetSetRowLarge() {
-        int n = 3 * DenseFieldMatrix.BLOCK_SIZE;
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
+        int n = 3 * BlockFieldMatrix.BLOCK_SIZE;
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
         Fraction[] sub = new Fraction[n];
         Arrays.fill(sub, new Fraction(1));
 
@@ -983,7 +983,7 @@
     }
     
     public void testGetColumn() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         Fraction[] mColumn1 = columnToArray(subColumn1);
         Fraction[] mColumn3 = columnToArray(subColumn3);
         checkArrays(mColumn1, m.getColumn(1));
@@ -1003,7 +1003,7 @@
     }
 
     public void testSetColumn() {
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(subTestData);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(subTestData);
         Fraction[] mColumn3 = columnToArray(subColumn3);
         assertTrue(mColumn3[0] != m.getColumn(1)[0]);
         m.setColumn(1, mColumn3);
@@ -1023,8 +1023,8 @@
     }
 
     public void testGetSetColumnLarge() {
-        int n = 3 * DenseFieldMatrix.BLOCK_SIZE;
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
+        int n = 3 * BlockFieldMatrix.BLOCK_SIZE;
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), n, n);
         Fraction[] sub = new Fraction[n];
         Arrays.fill(sub, new Fraction(1));
 
@@ -1058,43 +1058,43 @@
     }
     
     public void testEqualsAndHashCode() {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        DenseFieldMatrix<Fraction> m1 = (DenseFieldMatrix<Fraction>) m.copy();
-        DenseFieldMatrix<Fraction> mt = (DenseFieldMatrix<Fraction>) m.transpose();
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> m1 = (BlockFieldMatrix<Fraction>) m.copy();
+        BlockFieldMatrix<Fraction> mt = (BlockFieldMatrix<Fraction>) m.transpose();
         assertTrue(m.hashCode() != mt.hashCode());
         assertEquals(m.hashCode(), m1.hashCode());
         assertEquals(m, m);
         assertEquals(m, m1);
         assertFalse(m.equals(null));
         assertFalse(m.equals(mt));
-        assertFalse(m.equals(new DenseFieldMatrix<Fraction>(bigSingular))); 
+        assertFalse(m.equals(new BlockFieldMatrix<Fraction>(bigSingular))); 
     }
     
     public void testToString() {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
-        assertEquals("DenseFieldMatrix{{1,2,3},{2,5,3},{1,0,8}}", m.toString());
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
+        assertEquals("BlockFieldMatrix{{1,2,3},{2,5,3},{1,0,8}}", m.toString());
     }
     
     public void testSetSubMatrix() throws Exception {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
         m.setSubMatrix(detData2,1,1);
-        FieldMatrix<Fraction> expected = new DenseFieldMatrix<Fraction>
+        FieldMatrix<Fraction> expected = new BlockFieldMatrix<Fraction>
             (new Fraction[][] {{new Fraction(1),new Fraction(2),new Fraction(3)},{new Fraction(2),new Fraction(1),new Fraction(3)},{new Fraction(1),new Fraction(2),new Fraction(4)}});
         assertEquals(expected, m);  
         
         m.setSubMatrix(detData2,0,0);
-        expected = new DenseFieldMatrix<Fraction>
+        expected = new BlockFieldMatrix<Fraction>
             (new Fraction[][] {{new Fraction(1),new Fraction(3),new Fraction(3)},{new Fraction(2),new Fraction(4),new Fraction(3)},{new Fraction(1),new Fraction(2),new Fraction(4)}});
         assertEquals(expected, m);  
         
         m.setSubMatrix(testDataPlus2,0,0);      
-        expected = new DenseFieldMatrix<Fraction>
+        expected = new BlockFieldMatrix<Fraction>
             (new Fraction[][] {{new Fraction(3),new Fraction(4),new Fraction(5)},{new Fraction(4),new Fraction(7),new Fraction(5)},{new Fraction(3),new Fraction(2),new Fraction(10)}});
         assertEquals(expected, m);   
         
         // javadoc example
-        DenseFieldMatrix<Fraction> matrix =
-            new DenseFieldMatrix<Fraction>(new Fraction[][] {
+        BlockFieldMatrix<Fraction> matrix =
+            new BlockFieldMatrix<Fraction>(new Fraction[][] {
                     {new Fraction(1), new Fraction(2), new Fraction(3), new Fraction(4)},
                     {new Fraction(5), new Fraction(6), new Fraction(7), new Fraction(8)},
                     {new Fraction(9), new Fraction(0), new Fraction(1) , new Fraction(2)}
@@ -1104,7 +1104,7 @@
                 {new Fraction(5), new Fraction(6)}
         }, 1, 1);
         expected =
-            new DenseFieldMatrix<Fraction>(new Fraction[][] {
+            new BlockFieldMatrix<Fraction>(new Fraction[][] {
                     {new Fraction(1), new Fraction(2), new Fraction(3),new Fraction(4)},
                     {new Fraction(5), new Fraction(3), new Fraction(4), new Fraction(8)},
                     {new Fraction(9), new Fraction(5) ,new Fraction(6), new Fraction(2)}
@@ -1162,13 +1162,13 @@
         int rows    = 150;
         int columns = 75;
 
-        FieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+        FieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         m.walkInRowOrder(new SetVisitor());
         GetVisitor getVisitor = new GetVisitor();
         m.walkInOptimizedOrder(getVisitor);
         assertEquals(rows * columns, getVisitor.getCount());
 
-        m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+        m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         m.walkInRowOrder(new SetVisitor(), 1, rows - 2, 1, columns - 2);
         getVisitor = new GetVisitor();
         m.walkInOptimizedOrder(getVisitor, 1, rows - 2, 1, columns - 2);
@@ -1182,13 +1182,13 @@
             assertEquals(new Fraction(0), m.getEntry(rows - 1, j));
         }
 
-        m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+        m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         m.walkInColumnOrder(new SetVisitor());
         getVisitor = new GetVisitor();
         m.walkInOptimizedOrder(getVisitor);
         assertEquals(rows * columns, getVisitor.getCount());
 
-        m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+        m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         m.walkInColumnOrder(new SetVisitor(), 1, rows - 2, 1, columns - 2);
         getVisitor = new GetVisitor();
         m.walkInOptimizedOrder(getVisitor, 1, rows - 2, 1, columns - 2);
@@ -1202,13 +1202,13 @@
             assertEquals(new Fraction(0), m.getEntry(rows - 1, j));
         }
 
-        m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+        m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         m.walkInOptimizedOrder(new SetVisitor());
         getVisitor = new GetVisitor();
         m.walkInRowOrder(getVisitor);
         assertEquals(rows * columns, getVisitor.getCount());
 
-        m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+        m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         m.walkInOptimizedOrder(new SetVisitor(), 1, rows - 2, 1, columns - 2);
         getVisitor = new GetVisitor();
         m.walkInRowOrder(getVisitor, 1, rows - 2, 1, columns - 2);
@@ -1222,13 +1222,13 @@
             assertEquals(new Fraction(0), m.getEntry(rows - 1, j));
         }
 
-        m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+        m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         m.walkInOptimizedOrder(new SetVisitor());
         getVisitor = new GetVisitor();
         m.walkInColumnOrder(getVisitor);
         assertEquals(rows * columns, getVisitor.getCount());
 
-        m = new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+        m = new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         m.walkInOptimizedOrder(new SetVisitor(), 1, rows - 2, 1, columns - 2);
         getVisitor = new GetVisitor();
         m.walkInColumnOrder(getVisitor, 1, rows - 2, 1, columns - 2);
@@ -1245,7 +1245,7 @@
     }
 
     public void testSerial()  {
-        DenseFieldMatrix<Fraction> m = new DenseFieldMatrix<Fraction>(testData);
+        BlockFieldMatrix<Fraction> m = new BlockFieldMatrix<Fraction>(testData);
         assertEquals(m,TestUtils.serializeAndRecover(m));
     }
 
@@ -1275,9 +1275,9 @@
         }
     }
 
-    private DenseFieldMatrix<Fraction> createRandomMatrix(Random r, int rows, int columns) {
-        DenseFieldMatrix<Fraction> m =
-            new DenseFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
+    private BlockFieldMatrix<Fraction> createRandomMatrix(Random r, int rows, int columns) {
+        BlockFieldMatrix<Fraction> m =
+            new BlockFieldMatrix<Fraction>(FractionField.getInstance(), rows, columns);
         for (int i = 0; i < rows; ++i) {
             for (int j = 0; j < columns; ++j) {
                 int p = r.nextInt(20) - 10;