You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ps...@apache.org on 2005/05/29 22:26:12 UTC

svn commit: r178982 - in /jakarta/commons/proper/math/trunk: ./ src/java/org/apache/commons/math/linear/ src/test/org/apache/commons/math/linear/ xdocs/

Author: psteitz
Date: Sun May 29 13:26:11 2005
New Revision: 178982

URL: http://svn.apache.org/viewcvs?rev=178982&view=rev
Log:
Added setSubMatrix methods to RealMatrix, BigMatrix.
Modified copyIn methods to use setSubMatrix and moved array argument checking
from constructors and copyIn to setSubMatrix.
PR # 35007
Base implementation contributed by Rodrigo di Lorenzo Lopes

Modified:
    jakarta/commons/proper/math/trunk/project.xml
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrix.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrixImpl.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrix.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java
    jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/BigMatrixImplTest.java
    jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/RealMatrixImplTest.java
    jakarta/commons/proper/math/trunk/xdocs/changes.xml

Modified: jakarta/commons/proper/math/trunk/project.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/project.xml?rev=178982&r1=178981&r2=178982&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/project.xml (original)
+++ jakarta/commons/proper/math/trunk/project.xml Sun May 29 13:26:11 2005
@@ -121,6 +121,9 @@
       <name>C. Scott Ananian</name>
     </contributor>
     <contributor>
+      <name>Rodrigo di Lorenzo Lopes</name>
+    </contributor>
+    <contributor>
       <name>Ken Geis</name>
     </contributor>
     <contributor>

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrix.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrix.java?rev=178982&r1=178981&r2=178982&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrix.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrix.java Sun May 29 13:26:11 2005
@@ -146,6 +146,34 @@
     throws MatrixIndexException;
     
     /**
+     * Replace the submatrix starting at <code>row, column</code> using data in
+     * the input <code>subMatrix</code> array. Indexes are 0-based.
+     * <p> 
+     * Example:<br>
+     * Starting with <pre>
+     * 1  2  3  4
+     * 5  6  7  8
+     * 9  0  1  2
+     * </pre>
+     * and <code>subMatrix = {{3, 4} {5,6}}</code>, invoking 
+     * <code>setSubMatrix(subMatrix,1,1))</code> will result in <pre>
+     * 1  2  3  4
+     * 5  3  4  8
+     * 9  5  6  2
+     * </pre>
+     * 
+     * @param subMatrix  array containing the submatrix replacement data
+     * @param row  row coordinate of the top, left element to be replaced
+     * @param column  column coordinate of the top, left element to be replaced
+     * @throws MatrixIndexException  if subMatrix does not fit into this 
+     *    matrix from element in (row, column) 
+     * @throws IllegalArgumentException if <code>subMatrix</code> is not rectangular
+     *  (not all rows have the same length) or empty
+     * @throws NullPointerException if <code>subMatrix</code> is null
+     */
+    public void setSubMatrix(BigDecimal subMatrix[][], int row, int column) throws MatrixIndexException;
+    
+    /**
      * Returns the entries in row number <code>row</code>
      * as a row matrix.  Row indices start at 0.
      *

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrixImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrixImpl.java?rev=178982&r1=178981&r2=178982&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrixImpl.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/BigMatrixImpl.java Sun May 29 13:26:11 2005
@@ -113,22 +113,6 @@
      * @throws NullPointerException if <code>d</code> is null
      */
     public BigMatrixImpl(BigDecimal[][] d) {
-        int nRows = d.length;
-        if (nRows == 0) {
-            throw new IllegalArgumentException(
-            "Matrix must have at least one row."); 
-        }
-        int nCols = d[0].length;
-        if (nCols == 0) {
-            throw new IllegalArgumentException(
-            "Matrix must have at least one column."); 
-        }
-        for (int row = 1; row < nRows; row++) {
-            if (d[row].length != nCols) {
-                throw new IllegalArgumentException(
-                "All input rows must have the same length.");
-            }
-        }
         this.copyIn(d);
         lu = null;
     }
@@ -504,6 +488,70 @@
     } 
     
     /**
+     * Replace the submatrix starting at <code>row, column</code> using data in
+     * the input <code>subMatrix</code> array. Indexes are 0-based.
+     * <p> 
+     * Example:<br>
+     * Starting with <pre>
+     * 1  2  3  4
+     * 5  6  7  8
+     * 9  0  1  2
+     * </pre>
+     * and <code>subMatrix = {{3, 4} {5,6}}</code>, invoking 
+     * <code>setSubMatrix(subMatrix,1,1))</code> will result in <pre>
+     * 1  2  3  4
+     * 5  3  4  8
+     * 9  5  6  2
+     * </pre>
+     * 
+     * @param subMatrix  array containing the submatrix replacement data
+     * @param row  row coordinate of the top, left element to be replaced
+     * @param column  column coordinate of the top, left element to be replaced
+     * @throws MatrixIndexException  if subMatrix does not fit into this 
+     *    matrix from element in (row, column) 
+     * @throws IllegalArgumentException if <code>subMatrix</code> is not rectangular
+     *  (not all rows have the same length) or empty
+     * @throws NullPointerException if <code>subMatrix</code> is null
+     */
+    public void setSubMatrix(BigDecimal[][] subMatrix, int row, int column) 
+    throws MatrixIndexException {
+        if ((row < 0) || (column < 0)){
+            throw new MatrixIndexException
+            ("invalid row or column index selection");          
+        }
+        int nRows = subMatrix.length;
+        if (nRows == 0) {
+            throw new IllegalArgumentException(
+            "Matrix must have at least one row."); 
+        }
+        int nCols = subMatrix[0].length;
+        if (nCols == 0) {
+            throw new IllegalArgumentException(
+            "Matrix must have at least one column."); 
+        }
+        for (int r = 1; r < nRows; r++) {
+            if (subMatrix[r].length != nCols) {
+                throw new IllegalArgumentException(
+                "All input rows must have the same length.");
+            }
+        }       
+        if (data == null) {
+            if ((row > 0)||(column > 0)) throw new MatrixIndexException
+            ("matrix must be initialized to perfom this method");
+            data = new BigDecimal[nRows][nCols];
+            System.arraycopy(subMatrix, 0, data, 0, subMatrix.length);          
+        }   
+        if (((nRows + row) > this.getRowDimension())
+        || (nCols + column > this.getColumnDimension()))
+            throw new MatrixIndexException(
+            "invalid row or column index selection");                   
+        for (int i = 0; i < nRows; i++) {
+            System.arraycopy(subMatrix[i], 0, data[row + i], column, nCols);
+        } 
+        lu = null;
+    }
+    
+    /**
      * Returns the entries in row number <code>row</code>
      * as a row matrix.  Row indices start at 0.
      *
@@ -1205,18 +1253,16 @@
     
     /**
      * Replaces data with a fresh copy of the input array.
+     * <p>
+     * Verifies that the input array is rectangular and non-empty.
      *
      * @param in data to copy in
+     * @throws IllegalArgumentException if input array is emtpy or not
+     *    rectangular
+     * @throws NullPointerException if input array is null
      */
     private void copyIn(BigDecimal[][] in) {
-        int nRows = in.length;
-        int nCols = in[0].length;
-        data = new BigDecimal[nRows][nCols];
-        System.arraycopy(in, 0, data, 0, in.length);
-        for (int i = 0; i < nRows; i++) {
-            System.arraycopy(in[i], 0, data[i], 0, nCols);
-        }
-        lu = null;
+        setSubMatrix(in,0,0);
     }
     
     /**

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrix.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrix.java?rev=178982&r1=178981&r2=178982&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrix.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrix.java Sun May 29 13:26:11 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2004 The Apache Software Foundation.
+ * Copyright 2003-2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +25,6 @@
  * @version $Revision$ $Date$
  */
 public interface RealMatrix {
-
     /**
      * Returns a (deep) copy of this.
      *
@@ -128,6 +127,35 @@
     */
    RealMatrix getSubMatrix(int[] selectedRows, int[] selectedColumns)
    throws MatrixIndexException;
+   
+    /**
+     * Replace the submatrix starting at <code>row, column</code> using data in
+     * the input <code>subMatrix</code> array. Indexes are 0-based.
+     * <p> 
+     * Example:<br>
+     * Starting with <pre>
+     * 1  2  3  4
+     * 5  6  7  8
+     * 9  0  1  2
+     * </pre>
+     * and <code>subMatrix = {{3, 4} {5,6}}</code>, invoking 
+     * <code>setSubMatrix(subMatrix,1,1))</code> will result in <pre>
+     * 1  2  3  4
+     * 5  3  4  8
+     * 9  5  6  2
+     * </pre>
+     * 
+     * @param subMatrix  array containing the submatrix replacement data
+     * @param row  row coordinate of the top, left element to be replaced
+     * @param column  column coordinate of the top, left element to be replaced
+     * @throws MatrixIndexException  if subMatrix does not fit into this 
+     *    matrix from element in (row, column) 
+     * @throws IllegalArgumentException if <code>subMatrix</code> is not rectangular
+     *  (not all rows have the same length) or empty
+     * @throws NullPointerException if <code>subMatrix</code> is null
+     */
+    public void setSubMatrix(double subMatrix[][], int row, int column) throws MatrixIndexException;
+   
    
    /**
     * Returns the entries in row number <code>row</code>

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java?rev=178982&r1=178981&r2=178982&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java Sun May 29 13:26:11 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2004 The Apache Software Foundation.
+ * Copyright 2003-2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -104,22 +104,6 @@
      * @throws NullPointerException if <code>data</code> is null
      */
     public RealMatrixImpl(double[][] d) {
-        int nRows = d.length;
-        if (nRows == 0) {
-            throw new IllegalArgumentException(
-                    "Matrix must have at least one row."); 
-        }
-        int nCols = d[0].length;
-        if (nCols == 0) {
-            throw new IllegalArgumentException(
-            "Matrix must have at least one column."); 
-        }
-        for (int row = 1; row < nRows; row++) {
-            if (d[row].length != nCols) {
-                throw new IllegalArgumentException(
-                    "All input rows must have the same length.");
-            }
-        }
         this.copyIn(d);
         lu = null;
     }
@@ -371,12 +355,76 @@
         }
         return subMatrix;
     } 
+
+    /**
+     * Replace the submatrix starting at <code>row, column</code> using data in
+     * the input <code>subMatrix</code> array. Indexes are 0-based.
+     * <p> 
+     * Example:<br>
+     * Starting with <pre>
+     * 1  2  3  4
+     * 5  6  7  8
+     * 9  0  1  2
+     * </pre>
+     * and <code>subMatrix = {{3, 4} {5,6}}</code>, invoking 
+     * <code>setSubMatrix(subMatrix,1,1))</code> will result in <pre>
+     * 1  2  3  4
+     * 5  3  4  8
+     * 9  5  6  2
+     * </pre>
+     * 
+     * @param subMatrix  array containing the submatrix replacement data
+     * @param row  row coordinate of the top, left element to be replaced
+     * @param column  column coordinate of the top, left element to be replaced
+     * @throws MatrixIndexException  if subMatrix does not fit into this 
+     *    matrix from element in (row, column) 
+     * @throws IllegalArgumentException if <code>subMatrix</code> is not rectangular
+     *  (not all rows have the same length) or empty
+     * @throws NullPointerException if <code>subMatrix</code> is null
+     */
+    public void setSubMatrix(double[][] subMatrix, int row, int column) 
+        throws MatrixIndexException {
+        if ((row < 0) || (column < 0)){
+            throw new MatrixIndexException
+                ("invalid row or column index selection");          
+        }
+        int nRows = subMatrix.length;
+        if (nRows == 0) {
+            throw new IllegalArgumentException(
+            "Matrix must have at least one row."); 
+        }
+        int nCols = subMatrix[0].length;
+        if (nCols == 0) {
+            throw new IllegalArgumentException(
+            "Matrix must have at least one column."); 
+        }
+        for (int r = 1; r < nRows; r++) {
+            if (subMatrix[r].length != nCols) {
+                throw new IllegalArgumentException(
+                "All input rows must have the same length.");
+            }
+        }       
+        if (data == null) {
+            if ((row > 0)||(column > 0)) throw new MatrixIndexException
+                ("matrix must be initialized to perfom this method");
+            data = new double[nRows][nCols];
+            System.arraycopy(subMatrix, 0, data, 0, subMatrix.length);          
+        }   
+        if (((nRows + row) > this.getRowDimension())
+                || (nCols + column > this.getColumnDimension()))
+            throw new MatrixIndexException(
+                    "invalid row or column index selection");                   
+        for (int i = 0; i < nRows; i++) {
+            System.arraycopy(subMatrix[i], 0, data[row + i], column, nCols);
+        } 
+        lu = null;
+    }
     
     /**
-     * Returns the entries in row number <code>row</code>
-     * as a row matrix.  Row indices start at 0.
-     *
-     * @param row the row to be fetched
+     * Returns the entries in row number <code>row</code> as a row matrix.
+     * Row indices start at 0.
+     * 
+     * @param row  the row to be fetched
      * @return row matrix
      * @throws MatrixIndexException if the specified row index is invalid
      */
@@ -955,18 +1003,16 @@
 
     /**
      * Replaces data with a fresh copy of the input array.
+     * <p>
+     * Verifies that the input array is rectangular and non-empty
      *
      * @param in data to copy in
+     * @throws IllegalArgumentException if input array is emtpy or not
+     *    rectangular
+     * @throws NullPointerException if input array is null
      */
     private void copyIn(double[][] in) {
-        int nRows = in.length;
-        int nCols = in[0].length;
-        data = new double[nRows][nCols];
-        System.arraycopy(in, 0, data, 0, in.length);
-        for (int i = 0; i < nRows; i++) {
-            System.arraycopy(in[i], 0, data[i], 0, nCols);
-        }
-        lu = null;
+        setSubMatrix(in,0,0);
     }
 
     /**

Modified: jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/BigMatrixImplTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/BigMatrixImplTest.java?rev=178982&r1=178981&r2=178982&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/BigMatrixImplTest.java (original)
+++ jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/BigMatrixImplTest.java Sun May 29 13:26:11 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004 The Apache Software Foundation.
+ * Copyright 2004-2005 The Apache Software Foundation.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -634,6 +634,75 @@
         m = new BigMatrixImpl();
         assertEquals("BigMatrixImpl{}",
                 m.toString());
+    }
+    
+    public void testSetSubMatrix() throws Exception {
+        BigDecimal[][] detData3 = 
+            MatrixUtils.createBigMatrix(detData2).getData();
+        BigMatrixImpl m = new BigMatrixImpl(testData);
+        m.setSubMatrix(detData3,1,1);
+        BigMatrix expected = MatrixUtils.createBigMatrix
+            (new double[][] {{1.0,2.0,3.0},{2.0,1.0,3.0},{1.0,2.0,4.0}});
+        assertEquals(expected, m);  
+        
+        m.setSubMatrix(detData3,0,0);
+        expected = MatrixUtils.createBigMatrix
+            (new double[][] {{1.0,3.0,3.0},{2.0,4.0,3.0},{1.0,2.0,4.0}});
+        assertEquals(expected, m);  
+        
+        BigDecimal[][] testDataPlus3 = 
+            MatrixUtils.createBigMatrix(testDataPlus2).getData();
+        m.setSubMatrix(testDataPlus3,0,0);      
+        expected = MatrixUtils.createBigMatrix
+        (new double[][] {{3.0,4.0,5.0},{4.0,7.0,5.0},{3.0,2.0,10.0}});
+        assertEquals(expected, m);   
+        
+        // javadoc example
+        BigMatrix matrix = MatrixUtils.createBigMatrix
+            (new double[][] {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 0, 1 , 2}});
+        matrix.setSubMatrix(new BigDecimal[][] {{new BigDecimal(3),
+            new BigDecimal(4)}, {new BigDecimal(5), new BigDecimal(6)}}, 1, 1);
+        expected = MatrixUtils.createBigMatrix
+            (new BigDecimal[][] {{new BigDecimal(1), new BigDecimal(2),
+             new BigDecimal(3), new BigDecimal(4)}, {new BigDecimal(5),
+             new BigDecimal(3), new BigDecimal(4), new BigDecimal(8)},
+             {new BigDecimal(9), new BigDecimal(5) , new BigDecimal(6),
+              new BigDecimal(2)}});
+        assertEquals(expected, matrix);   
+        
+        // dimension overflow
+        try {  
+            m.setSubMatrix(matrix.getData(),1,1);
+            fail("expecting MatrixIndexException");
+        } catch (MatrixIndexException e) {
+            // expected
+        }
+        
+        // null
+        try {
+            m.setSubMatrix(null,1,1);
+            fail("expecting NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+        
+        // ragged
+        try {
+            m.setSubMatrix(new BigDecimal[][] {{new BigDecimal(1)},
+                    {new BigDecimal(2), new BigDecimal(3)}}, 0, 0);
+            fail("expecting IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+        
+        // empty
+        try {
+            m.setSubMatrix(new BigDecimal[][] {{}}, 0, 0);
+            fail("expecting IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+        
     }
     
     //--------------- -----------------Protected methods

Modified: jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/RealMatrixImplTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/RealMatrixImplTest.java?rev=178982&r1=178981&r2=178982&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/RealMatrixImplTest.java (original)
+++ jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/linear/RealMatrixImplTest.java Sun May 29 13:26:11 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2004 The Apache Software Foundation.
+ * Copyright 2003-2005 The Apache Software Foundation.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -608,6 +608,65 @@
         m = new RealMatrixImpl();
         assertEquals("RealMatrixImpl{}",
                 m.toString());
+    }
+    
+    public void testSetSubMatrix() throws Exception {
+        RealMatrixImpl m = new RealMatrixImpl(testData);
+        m.setSubMatrix(detData2,1,1);
+        RealMatrix expected = MatrixUtils.createRealMatrix
+            (new double[][] {{1.0,2.0,3.0},{2.0,1.0,3.0},{1.0,2.0,4.0}});
+        assertEquals(expected, m);  
+        
+        m.setSubMatrix(detData2,0,0);
+        expected = MatrixUtils.createRealMatrix
+            (new double[][] {{1.0,3.0,3.0},{2.0,4.0,3.0},{1.0,2.0,4.0}});
+        assertEquals(expected, m);  
+        
+        m.setSubMatrix(testDataPlus2,0,0);      
+        expected = MatrixUtils.createRealMatrix
+            (new double[][] {{3.0,4.0,5.0},{4.0,7.0,5.0},{3.0,2.0,10.0}});
+        assertEquals(expected, m);   
+        
+        // javadoc example
+        RealMatrix matrix = MatrixUtils.createRealMatrix
+            (new double[][] {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 0, 1 , 2}});
+        matrix.setSubMatrix(new double[][] {{3, 4}, {5, 6}}, 1, 1);
+        expected = MatrixUtils.createRealMatrix
+            (new double[][] {{1, 2, 3, 4}, {5, 3, 4, 8}, {9, 5 ,6, 2}});
+        assertEquals(expected, matrix);   
+        
+        // dimension overflow
+        try {  
+            m.setSubMatrix(testData,1,1);
+            fail("expecting MatrixIndexException");
+        } catch (MatrixIndexException e) {
+            // expected
+        }
+        
+        // null
+        try {
+            m.setSubMatrix(null,1,1);
+            fail("expecting NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+        
+        // ragged
+        try {
+            m.setSubMatrix(new double[][] {{1}, {2, 3}}, 0, 0);
+            fail("expecting IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+       
+        // empty
+        try {
+            m.setSubMatrix(new double[][] {{}}, 0, 0);
+            fail("expecting IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+        
     }
     
     //--------------- -----------------Protected methods

Modified: jakarta/commons/proper/math/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/xdocs/changes.xml?rev=178982&r1=178981&r2=178982&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/math/trunk/xdocs/changes.xml Sun May 29 13:26:11 2005
@@ -39,6 +39,9 @@
   <body>
     <release version="1.1" date="In Development"  
        description="Jakarta Commons Math 1.1 - Development">
+      <action dev="psteitz" type="update" issue="35007"  due-to="Rodrigo di Lorenzo Lopes">
+        Added setSubMatrix methods to RealMatrix, BigMatrix.
+      </action>
       <action dev="psteitz" type="update">
         Added createXIdentityMatrix methods to MatrixUtils and deprecated
         getIdentity methods in RealMatrixImpl, BigMatrixImpl.



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org