Author: erans
Date: Sun Sep 25 21:44:13 2011
New Revision: 1175588
URL: http://svn.apache.org/viewvc?rev=1175588&view=rev
Log:
MATH-674
Moved part of the Javadoc for the "value" method over to the interface
section.
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/UnivariateRealFunction.java
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=1175588&r1=1175587&r2=1175588&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
Sun Sep 25 21:44:13 2011
@@ -18,6 +18,50 @@ package org.apache.commons.math.analysis
/**
* An interface representing a univariate real function.
+ * <br/>
+ * When a <em>user-defined</em> function encounters an error during
+ * evaluation, the {@link #value(double) value} method should throw a
+ * <em>user-defined</em> unchecked exception.
+ * <br/>
+ * The following code excerpt shows the recommended way to do that using
+ * a root solver as an example, but the same construct is applicable to
+ * ODE integrators or optimizers.
+ *
+ * <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>
+ *
+ * As shown, the exception is local to the user's code and it is guaranteed
+ * that Apache Commons Math will not catch it.
*
* @version $Id$
*/
@@ -25,60 +69,14 @@ 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.
+ * @return the value of the function.
* @throws IllegalArgumentException when the activated method itself can
- * ascertain that preconditions, specified in the API expressed at the
- * level of the activated method, have been violated. In the vast
- * majority of cases where Commons-Math throws IllegalArgumentException,
- * it is the result of argument checking of actual parameters immediately
- * passed to a method.
+ * ascertain that a precondition, specified in the API expressed at the
+ * level of the activated method, has been violated.
+ * When Commons Math throws an {@code IllegalArgumentException}, it is
+ * usually the consequence of checking the actual parameters passed to
+ * the method.
*/
double value(double x);
}