29 #if defined(DEBUG) || defined(WARNINGMSG) 
   41 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNBase& fcn, 
const std::vector<double>& par, 
const std::vector<double>& err, 
unsigned int stra, 
unsigned int maxfcn, 
double toler)
 const {
 
   43    MnUserParameterState st(par, err);
 
   44    MnStrategy strategy(stra);
 
   45    return Minimize(fcn, st, strategy, maxfcn, toler);
 
   48 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNGradientBase& fcn, 
const std::vector<double>& par, 
const std::vector<double>& err, 
unsigned int stra, 
unsigned int maxfcn, 
double toler)
 const {
 
   51    MnUserParameterState st(par, err);
 
   52    MnStrategy strategy(stra);
 
   53    return Minimize(fcn, st, strategy, maxfcn, toler);
 
   57 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNBase& fcn, 
const std::vector<double>& par, 
unsigned int nrow, 
const std::vector<double>& cov, 
unsigned int stra, 
unsigned int maxfcn, 
double toler)
 const {
 
   61    MnUserParameterState st(par, cov, nrow);
 
   62    MnStrategy strategy(stra);
 
   63    return Minimize(fcn, st, strategy, maxfcn, toler);
 
   66 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNGradientBase& fcn, 
const std::vector<double>& par, 
unsigned int nrow, 
const std::vector<double>& cov, 
unsigned int stra, 
unsigned int maxfcn, 
double toler)
 const {
 
   71    MnUserParameterState st(par, cov, nrow);
 
   72    MnStrategy strategy(stra);
 
   73    return Minimize(fcn, st, strategy, maxfcn, toler);
 
   76 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNBase& fcn, 
const MnUserParameters& upar, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
   79    MnUserParameterState st(upar);
 
   80    return Minimize(fcn, st, strategy, maxfcn, toler);
 
   83 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNGradientBase& fcn, 
const MnUserParameters& upar, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
   86    MnUserParameterState st(upar);
 
   87    return Minimize(fcn, st, strategy, maxfcn, toler);
 
   90 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNBase& fcn, 
const MnUserParameters& upar, 
const MnUserCovariance& cov, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
   93    MnUserParameterState st(upar, cov);
 
   94    return Minimize(fcn, st, strategy, maxfcn, toler);
 
   97 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNGradientBase& fcn, 
const MnUserParameters& upar, 
const MnUserCovariance& cov, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
  101    MnUserParameterState st(upar, cov);
 
  102    return Minimize(fcn, st, strategy, maxfcn, toler);
 
  107 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNBase& fcn, 
const MnUserParameterState& st, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
  113    MnUserFcn mfcn(fcn, st.Trafo() );
 
  114    Numerical2PGradientCalculator gc(mfcn, st.Trafo(), strategy);
 
  116    unsigned int npar = st.VariableParameters();
 
  117    if(maxfcn == 0) maxfcn = 200 + 100*npar + 5*npar*npar;
 
  118    MinimumSeed mnseeds = SeedGenerator()(mfcn, gc, st, strategy);
 
  120    return Minimize(mfcn, gc, mnseeds, strategy, maxfcn, toler);
 
  125 FunctionMinimum ModularFunctionMinimizer::Minimize(
const FCNGradientBase& fcn, 
const MnUserParameterState& st, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
  131    MnUserFcn mfcn(fcn, st.Trafo());
 
  132    AnalyticalGradientCalculator gc(fcn, st.Trafo());
 
  134    unsigned int npar = st.VariableParameters();
 
  135    if(maxfcn == 0) maxfcn = 200 + 100*npar + 5*npar*npar;
 
  137    MinimumSeed mnseeds = SeedGenerator()(mfcn, gc, st, strategy);
 
  139    return Minimize(mfcn, gc, mnseeds, strategy, maxfcn, toler);
 
  143 FunctionMinimum ModularFunctionMinimizer::Minimize(
const MnFcn& mfcn, 
const GradientCalculator& gc, 
const MinimumSeed& seed, 
const MnStrategy& strategy, 
unsigned int maxfcn, 
double toler)
 const {
 
  147    const MinimumBuilder & mb = Builder();
 
  149    double effective_toler = toler * mfcn.Up();   
 
  151    double eps = MnMachinePrecision().Eps2();
 
  152    if (effective_toler < eps) effective_toler = eps;
 
  156    if(mfcn.NumOfCalls() >= maxfcn) {
 
  158       MN_INFO_MSG(
"ModularFunctionMinimizer: Stop before iterating - call limit already exceeded");
 
  160       return FunctionMinimum(seed, std::vector<MinimumState>(1, seed.State()), mfcn.Up(), FunctionMinimum::MnReachedCallLimit());
 
  166    return mb.Minimum(mfcn, gc, seed, strategy, maxfcn, effective_toler);