org.apache.commons.math3.analysis

## Interface UnivariateFunction

All Known Subinterfaces:
  DifferentiableUnivariateFunction, UnivariateDifferentiableFunction

All Known Implementing Classes:
  Abs, Acos, Acosh, Asin, Asinh, Atan, Atanh, Cbrt, Ceil, Constant, Cos, Cosh, Exp, Expm1, Floor, Gaussian, HarmonicOscillator, Identity, Inverse, Log, Log10, Log1p, Logistic, Logit, Minus, NonLinearConjugateGradientOptimizer.LineSearchFunction, NonLinearConjugateGradientOptimizer.LineSearchFunction, PolynomialFunction, PolynomialFunctionLagrangeForm, PolynomialFunctionNewtonForm, PolynomialSplineFunction, Power, Rint, Sigmoid, Signum, Sin, Sinc, Sinh, Sqrt, StepFunction, Tan, Tanh, Ulp

    public interface UnivariateFunction

An interface representing a univariate real function.
When a user-defined function encounters an error during evaluation, the `value` method should throw a user-defined unchecked exception.
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.

     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 UnivariateFunction {
         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.
         }
     }

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: UnivariateFunction.java 1364387 2012-07-22 18:14:11Z tn $

### Method Summary

Methods
`double` `value(double x)` Compute the value of the function.

### Method Detail

#### value

    double value(double x)

Compute the value of the function.

Parameters:
  `x` - Point at which the function value should be computed.
Returns:
  the value of the function.
Throws:
  `IllegalArgumentException` - when the activated method itself can ascertain that a precondition, specified in the API expressed at the level of the activated method, has been violated. When Commons Math throws an `IllegalArgumentException`, it is usually the consequence of checking the actual parameters passed to the method.