public double findMinimum(MultivariateFunction f,double[] xvec,int fxFracDigits,int xFracDigits,MinimiserMonitor monitor){
  double tolfx=Math.pow(10,-1 - fxFracDigits);
  double tolx=Math.pow(10,-1 - xFracDigits);
  optimize(f,xvec,tolfx,tolx,monitor);
  double m=Math.pow(10,xFracDigits);
  for (int i=0; i < xvec.length; i++) {
    xvec[i]=Math.round(xvec[i] * m) / m;
  }
  return Math.round(f.evaluate(xvec) * m) / m;
}

public double findMinimum ( MultivariateFunction f , double [ ] xvec , int fxFracDigits , int xFracDigits , MinimiserMonitor monitor ) { double tolfx = Math . pow ( 10 , - 1 - fxFracDigits ) ; double tolx = Math . pow ( 10 , - 1 - xFracDigits ) ; optimize ( f , xvec , tolfx , tolx , monitor ) ; double m = Math . pow ( 10 , xFracDigits ) ; for ( int i = 0 ; i < xvec . length ; i ++ ) { xvec [ i ] = Math . round ( xvec [ i ] * m ) / m ; } return Math . round ( f . evaluate ( xvec ) * m ) / m ; }
find minimum close to vector x ( desired fractional digits for each parameter is specified )
