Author: luc
Date: Tue Sep 6 20:00:37 2011
New Revision: 1165809
URL: http://svn.apache.org/viewvc?rev=1165809&view=rev
Log:
removed MathUserException from analysis package
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/BivariateRealFunction.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateMatrixFunction.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateRealFunction.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateVectorialFunction.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/TrivariateRealFunction.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateMatrixFunction.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateRealFunction.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateVectorialFunction.java
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/MonitoredFunction.java
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/SumSincFunction.java
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/BivariateRealFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/BivariateRealFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/BivariateRealFunction.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/BivariateRealFunction.java
Tue Sep 6 20:00:37 2011
@@ -17,8 +17,6 @@
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
/**
* An interface representing a bivariate real function.
*
@@ -32,9 +30,7 @@ public interface BivariateRealFunction {
* @param x Abscissa for which the function value should be computed.
* @param y Ordinate for which the function value should be computed.
* @return the value.
- * @throws MathUserException if the function evaluation fails.
*/
- double value(double x, double y)
- throws MathUserException;
+ double value(double x, double y);
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateMatrixFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateMatrixFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateMatrixFunction.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateMatrixFunction.java
Tue Sep 6 20:00:37 2011
@@ -17,9 +17,6 @@
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
-
/**
* An interface representing a multivariate matrix function.
* @version $Id$
@@ -31,10 +28,9 @@ public interface MultivariateMatrixFunct
* Compute the value for the function at the given point.
* @param point point at which the function must be evaluated
* @return function value for the given point
- * @exception MathUserException if the function evaluation fails
* @exception IllegalArgumentException if points dimension is wrong
*/
double[][] value(double[] point)
- throws MathUserException, IllegalArgumentException;
+ throws IllegalArgumentException;
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateRealFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateRealFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateRealFunction.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateRealFunction.java
Tue Sep 6 20:00:37 2011
@@ -30,8 +30,6 @@ public interface MultivariateRealFunctio
*
* @param point Point at which the function must be evaluated.
* @return the function value for the given point.
- * @throws org.apache.commons.math.exception.MathUserException if
- * the function evaluation fails.
* @throws org.apache.commons.math.exception.DimensionMismatchException
* if the parameter's dimension is wrong for the function being evaluated.
* @throws org.apache.commons.math.exception.MathIllegalArgumentException
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateVectorialFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateVectorialFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateVectorialFunction.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/MultivariateVectorialFunction.java
Tue Sep 6 20:00:37 2011
@@ -17,8 +17,6 @@
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
/**
* An interface representing a multivariate vectorial function.
* @version $Id$
@@ -30,10 +28,9 @@ public interface MultivariateVectorialFu
* Compute the value for the function at the given point.
* @param point point at which the function must be evaluated
* @return function value for the given point
- * @exception MathUserException if the function evaluation fails
* @exception IllegalArgumentException if points dimension is wrong
*/
double[] value(double[] point)
- throws MathUserException, IllegalArgumentException;
+ throws IllegalArgumentException;
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/TrivariateRealFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/TrivariateRealFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/TrivariateRealFunction.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/TrivariateRealFunction.java
Tue Sep 6 20:00:37 2011
@@ -17,8 +17,6 @@
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
/**
* An interface representing a trivariate real function.
*
@@ -33,8 +31,6 @@ public interface TrivariateRealFunction
* @param y y-coordinate for which the function value should be computed.
* @param z z-coordinate for which the function value should be computed.
* @return the value.
- * @throws MathUserException if the function evaluation fails.
*/
- double value(double x, double y, double z)
- throws MathUserException;
+ double value(double x, double y, double z);
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateMatrixFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateMatrixFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateMatrixFunction.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateMatrixFunction.java
Tue Sep 6 20:00:37 2011
@@ -16,8 +16,6 @@
*/
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
/**
* An interface representing a univariate matrix function.
*
@@ -30,8 +28,7 @@ public interface UnivariateMatrixFunctio
* Compute the value for the function.
* @param x the point for which the function value should be computed
* @return the value
- * @throws MathUserException if the function evaluation fails
*/
- double[][] value(double x) throws MathUserException;
+ double[][] value(double x);
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateRealFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateRealFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateRealFunction.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateRealFunction.java
Tue Sep 6 20:00:37 2011
@@ -16,8 +16,6 @@
*/
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
/**
* An interface representing a univariate real function.
*
@@ -27,6 +25,52 @@ public interface UnivariateRealFunction
/**
* Compute the value of the function.
*
+ * <p>
+ * For user-defined functions, when the method encounters an error
+ * during evaluation, users must use their <em>own</em> unchecked exceptions.
+ * The following example shows the recommended way to do that, using root
+ * solving as the example (the same construct should be used for ODE
+ * integrators or for optimizations).
+ * </p>
+ * <pre>
+ * private static class LocalException extends RuntimeException {
+ *
+ * // the x value that caused the problem
+ * private final double x;
+ *
+ * public LocalException(double x) {
+ * this.x = x;
+ * }
+ *
+ * public double getX() {
+ * return x;
+ * }
+ *
+ * }
+ *
+ * private static class MyFunction implements UnivariateRealFunction {
+ * public double value(double x) {
+ * double y = hugeFormula(x);
+ * if (somethingBadHappens) {
+ * throw new LocalException(x);
+ * }
+ * return y;
+ * }
+ * }
+ *
+ * public void compute() {
+ * try {
+ * solver.solve(maxEval, new MyFunction(a, b, c), min, max);
+ * } catch (LocalException le) {
+ * // retrieve the x value
+ * }
+ * }
+ * </pre>
+ *
+ * <p>
+ * As shown in this example the exception is really something local to user code
+ * and there is a guarantee Apache Commons Math will not mess with it. The user is safe.
+ * </p>
* @param x Point at which the function value should be computed.
* @return the value.
* @throws IllegalArgumentException when the activated method itself can
@@ -35,15 +79,6 @@ public interface UnivariateRealFunction
* majority of cases where Commons-Math throws IllegalArgumentException,
* it is the result of argument checking of actual parameters immediately
* passed to a method.
- * @throws MathUserException when the method may encounter errors during evaluation.
- * This should be thrown only in circumstances where, at the level of the
- * activated function, IllegalArgumentException is not appropriate and it
- * should indicate that while formal preconditions of the method have not
- * been violated, an irrecoverable error has occurred evaluating a
- * function at some (usually lower) level of the call stack.
- * Convergence failures, runtime exceptions (even IllegalArgumentException)
- * in user code or lower level methods can cause (and should be wrapped in)
- * a MathUserException.
*/
- double value(double x) throws MathUserException;
+ double value(double x);
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateVectorialFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateVectorialFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateVectorialFunction.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateVectorialFunction.java
Tue Sep 6 20:00:37 2011
@@ -16,8 +16,6 @@
*/
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
/**
* An interface representing a univariate vectorial function.
*
@@ -30,8 +28,7 @@ public interface UnivariateVectorialFunc
* Compute the value for the function.
* @param x the point for which the function value should be computed
* @return the value
- * @throws MathUserException if the function evaluation fails
*/
- double[] value(double x) throws MathUserException;
+ double[] value(double x);
}
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/MonitoredFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/MonitoredFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/MonitoredFunction.java
(original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/MonitoredFunction.java
Tue Sep 6 20:00:37 2011
@@ -16,8 +16,6 @@
*/
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
/**
* Wrapper class for counting functions calls.
*
@@ -38,7 +36,7 @@ public class MonitoredFunction implement
return callsCount;
}
- public double value(double x) throws MathUserException {
+ public double value(double x) {
++callsCount;
return f.value(x);
}
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/SumSincFunction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/SumSincFunction.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/SumSincFunction.java
(original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/SumSincFunction.java
Tue Sep 6 20:00:37 2011
@@ -16,8 +16,6 @@
*/
package org.apache.commons.math.analysis;
-import org.apache.commons.math.exception.MathUserException;
-
/**
* Auxiliary class for testing optimizers.
*
@@ -43,7 +41,7 @@ public class SumSincFunction implements
* @param point Argument.
* @return the value of this function at point {@code x}.
*/
- public double value(double[] point) throws MathUserException {
+ public double value(double[] point) {
double sum = 0;
for (int i = 0, max = point.length; i < max; i++) {
final double x = point[i];
@@ -58,7 +56,7 @@ public class SumSincFunction implements
*/
public MultivariateRealFunction partialDerivative(final int k) {
return new MultivariateRealFunction() {
- public double value(double[] point) throws MathUserException {
+ public double value(double[] point) {
return sincDeriv.value(point[k]);
}
};
@@ -69,8 +67,7 @@ public class SumSincFunction implements
*/
public MultivariateVectorialFunction gradient() {
return new MultivariateVectorialFunction() {
- public double[] value(double[] point)
- throws MathUserException {
+ public double[] value(double[] point) {
final int n = point.length;
final double[] r = new double[n];
for (int i = 0; i < n; i++) {
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java?rev=1165809&r1=1165808&r2=1165809&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java
(original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java
Tue Sep 6 20:00:37 2011
@@ -24,7 +24,6 @@ import org.apache.commons.math.analysis.
import org.apache.commons.math.analysis.SinFunction;
import org.apache.commons.math.analysis.UnivariateRealFunction;
import org.apache.commons.math.analysis.polynomials.PolynomialFunction;
-import org.apache.commons.math.exception.MathUserException;
import org.apache.commons.math.exception.TooManyEvaluationsException;
import org.apache.commons.math.util.FastMath;
import org.junit.Assert;
@@ -78,7 +77,7 @@ public class LegendreGaussIntegratorTest
@Test
public void testExactIntegration()
- throws ConvergenceException, MathUserException {
+ throws ConvergenceException {
Random random = new Random(86343623467878363l);
for (int n = 2; n < 6; ++n) {
LegendreGaussIntegrator integrator =
|