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 2004/10/25 07:33:24 UTC

cvs commit: jakarta-commons/math/src/java/org/apache/commons/math/linear BigMatrixImpl.java

psteitz     2004/10/24 22:33:24

  Modified:    math/src/java/org/apache/commons/math/linear
                        BigMatrixImpl.java
  Log:
  Added checks for validity of arrays supplied to constructors.
  
  Revision  Changes    Path
  1.9       +58 -1     jakarta-commons/math/src/java/org/apache/commons/math/linear/BigMatrixImpl.java
  
  Index: BigMatrixImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/linear/BigMatrixImpl.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- BigMatrixImpl.java	25 Oct 2004 03:12:28 -0000	1.8
  +++ BigMatrixImpl.java	25 Oct 2004 05:33:24 -0000	1.9
  @@ -103,8 +103,27 @@
        * The input array is copied, not referenced.
        *
        * @param d data for new matrix
  +     * @throws IllegalArgumentException if <code>d</code> is not rectangular
  +     *  (not all rows have the same length) or empty
  +     * @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;
       }
  @@ -116,8 +135,27 @@
        * The input array is copied, not referenced.
        *
        * @param d data for new matrix
  +     * @throws IllegalArgumentException if <code>d</code> is not rectangular
  +     *  (not all rows have the same length) or empty
  +     * @throws NullPointerException if <code>d</code> is null
        */
       public BigMatrixImpl(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;
       }
  @@ -127,8 +165,27 @@
        * <code>data</code> as the underlying data array.
        *
        * @param d data for new matrix
  +     * @throws IllegalArgumentException if <code>d</code> is not rectangular
  +     *  (not all rows have the same length) or empty
  +     * @throws NullPointerException if <code>d</code> is null
        */
       public BigMatrixImpl(String[][] 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;
       }
  
  
  

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