private double exactIntegration(PolynomialFunction p, double a, double b) {
   final double[] coeffs = p.getCoefficients();
   double yb = coeffs[coeffs.length - 1] / coeffs.length;
   double ya = yb;
   for (int i = coeffs.length - 2; i >= 0; --i) {
     yb = yb * b + coeffs[i] / (i + 1);
     ya = ya * a + coeffs[i] / (i + 1);
   }
   return yb * b - ya * a;
 }
 /** {@inheritDoc} */
 @Override
 public double value(final double x, final double... parameters) throws NoDataException {
   return PolynomialFunction.evaluate(parameters, x);
 }