Populated throws clause of OpenMapRealMatrix (MATH-854).

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1390842 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Sebastien Brisard 2012-09-27 05:04:10 +00:00
parent 8708ef28f2
commit 2a32964f25
2 changed files with 51 additions and 24 deletions

View File

@ -976,5 +976,6 @@ public abstract class AbstractRealMatrix
throws OutOfRangeException;
/** {@inheritDoc} */
public abstract void setEntry(int row, int column, double value);
public abstract void setEntry(int row, int column, double value)
throws OutOfRangeException;
}

View File

@ -19,7 +19,10 @@ package org.apache.commons.math3.linear;
import java.io.Serializable;
import org.apache.commons.math3.exception.DimensionMismatchException;
import org.apache.commons.math3.exception.NotStrictlyPositiveException;
import org.apache.commons.math3.exception.NumberIsTooLargeException;
import org.apache.commons.math3.exception.OutOfRangeException;
import org.apache.commons.math3.util.OpenIntToDoubleHashMap;
/**
@ -50,8 +53,13 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
*
* @param rowDimension Number of rows of the matrix.
* @param columnDimension Number of columns of the matrix.
* @throws NotStrictlyPositiveException if row or column dimension is not
* positive.
* @throws NumberIsTooLargeException if the total number of entries of the
* matrix is larger than {@code Integer.MAX_VALUE}.
*/
public OpenMapRealMatrix(int rowDimension, int columnDimension) {
public OpenMapRealMatrix(int rowDimension, int columnDimension)
throws NotStrictlyPositiveException, NumberIsTooLargeException {
super(rowDimension, columnDimension);
long lRow = rowDimension;
long lCol = columnDimension;
@ -80,9 +88,15 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
return new OpenMapRealMatrix(this);
}
/** {@inheritDoc} */
/**
* {@inheritDoc}
*
* @throws NumberIsTooLargeException if the total number of entries of the
* matrix is larger than {@code Integer.MAX_VALUE}.
*/
@Override
public OpenMapRealMatrix createMatrix(int rowDimension, int columnDimension) {
public OpenMapRealMatrix createMatrix(int rowDimension, int columnDimension)
throws NotStrictlyPositiveException, NumberIsTooLargeException {
return new OpenMapRealMatrix(rowDimension, columnDimension);
}
@ -97,12 +111,12 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
*
* @param m Matrix to be added.
* @return {@code this} + {@code m}.
* @throws org.apache.commons.math3.exception.DimensionMismatchException
* if {@code m} is not the same size as this matrix.
* @throws MatrixDimensionMismatchException if {@code m} is not the same
* size as {@code this}.
*/
public OpenMapRealMatrix add(OpenMapRealMatrix m) {
public OpenMapRealMatrix add(OpenMapRealMatrix m)
throws MatrixDimensionMismatchException {
// safety check
MatrixUtils.checkAdditionCompatible(this, m);
final OpenMapRealMatrix out = new OpenMapRealMatrix(this);
@ -119,7 +133,8 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
/** {@inheritDoc} */
@Override
public OpenMapRealMatrix subtract(final RealMatrix m) {
public OpenMapRealMatrix subtract(final RealMatrix m)
throws MatrixDimensionMismatchException {
try {
return subtract((OpenMapRealMatrix) m);
} catch (ClassCastException cce) {
@ -132,11 +147,11 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
*
* @param m Matrix to be subtracted.
* @return {@code this} - {@code m}.
* @throws org.apache.commons.math3.exception.DimensionMismatchException
* if {@code m} is not the same size as this matrix.
* @throws MatrixDimensionMismatchException if {@code m} is not the same
* size as {@code this}.
*/
public OpenMapRealMatrix subtract(OpenMapRealMatrix m) {
// Safety check.
public OpenMapRealMatrix subtract(OpenMapRealMatrix m)
throws MatrixDimensionMismatchException {
MatrixUtils.checkAdditionCompatible(this, m);
final OpenMapRealMatrix out = new OpenMapRealMatrix(this);
@ -150,14 +165,20 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
return out;
}
/** {@inheritDoc} */
/**
* {@inheritDoc}
*
* @throws NumberIsTooLargeException if {@code m} is an
* {@code OpenMapRealMatrix}, and the total number of entries of the product
* is larger than {@code Integer.MAX_VALUE}.
*/
@Override
public RealMatrix multiply(final RealMatrix m) {
public RealMatrix multiply(final RealMatrix m)
throws DimensionMismatchException, NumberIsTooLargeException {
try {
return multiply((OpenMapRealMatrix) m);
} catch (ClassCastException cce) {
// safety check
MatrixUtils.checkMultiplicationCompatible(this, m);
final int outCols = m.getColumnDimension();
@ -182,11 +203,13 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
*
* @param m Matrix to postmultiply by.
* @return {@code this} * {@code m}.
* @throws MatrixDimensionMismatchException
* if the number of rows of {@code m} differ from the number of columns
* of this matrix.
* @throws DimensionMismatchException if the number of rows of {@code m}
* differ from the number of columns of {@code this} matrix.
* @throws NumberIsTooLargeException if the total number of entries of the
* product is larger than {@code Integer.MAX_VALUE}.
*/
public OpenMapRealMatrix multiply(OpenMapRealMatrix m) {
public OpenMapRealMatrix multiply(OpenMapRealMatrix m)
throws DimensionMismatchException, NumberIsTooLargeException {
// Safety check.
MatrixUtils.checkMultiplicationCompatible(this, m);
@ -218,7 +241,7 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
/** {@inheritDoc} */
@Override
public double getEntry(int row, int column) {
public double getEntry(int row, int column) throws OutOfRangeException {
MatrixUtils.checkRowIndex(this, row);
MatrixUtils.checkColumnIndex(this, column);
return entries.get(computeKey(row, column));
@ -232,7 +255,8 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
/** {@inheritDoc} */
@Override
public void setEntry(int row, int column, double value) {
public void setEntry(int row, int column, double value)
throws OutOfRangeException {
MatrixUtils.checkRowIndex(this, row);
MatrixUtils.checkColumnIndex(this, column);
if (value == 0.0) {
@ -244,7 +268,8 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
/** {@inheritDoc} */
@Override
public void addToEntry(int row, int column, double increment) {
public void addToEntry(int row, int column, double increment)
throws OutOfRangeException {
MatrixUtils.checkRowIndex(this, row);
MatrixUtils.checkColumnIndex(this, column);
final int key = computeKey(row, column);
@ -258,7 +283,8 @@ public class OpenMapRealMatrix extends AbstractRealMatrix
/** {@inheritDoc} */
@Override
public void multiplyEntry(int row, int column, double factor) {
public void multiplyEntry(int row, int column, double factor)
throws OutOfRangeException {
MatrixUtils.checkRowIndex(this, row);
MatrixUtils.checkColumnIndex(this, column);
final int key = computeKey(row, column);