Validate.notNull(f, "function");
Validate.notNull(initialPoint, "initial point");
final MultivariateRealOptimizer optimizer = new MultiDirectional();
final MultivariateRealFunction commons = CommonsMathWrapper.wrapMultivariate(f);
try {
return new DoubleMatrix1D(CommonsMathWrapper.unwrap(optimizer.optimize(commons, MINIMIZER, initialPoint.getData())));
} catch (final ConvergenceException e) {
throw new MathException(e);
} catch (final FunctionEvaluationException e) {
throw new MathException(e);
}