22 FunctionMinimum ScanBuilder::Minimum(
const MnFcn& mfcn, 
const GradientCalculator&, 
const MinimumSeed& seed, 
const MnStrategy&, 
unsigned int, 
double)
 const {
 
   25    MnAlgebraicVector x = seed.Parameters().Vec();
 
   26    MnUserParameterState upst(seed.State(), mfcn.Up(), seed.Trafo());
 
   27    MnParameterScan scan(mfcn.Fcn(), upst.Parameters(), seed.Fval());
 
   28    double amin = scan.Fval();
 
   29    unsigned int n = seed.Trafo().VariableParameters();
 
   30    MnAlgebraicVector dirin(n);
 
   31    for(
unsigned int i = 0; i < n; i++) {
 
   32       unsigned int ext = seed.Trafo().ExtOfInt(i);
 
   34       if(scan.Fval() < amin) {
 
   36          x(i) = seed.Trafo().Ext2int(ext, scan.Parameters().Value(ext));
 
   38       dirin(i) = sqrt(2.*mfcn.Up()*seed.Error().InvHessian()(i,i));
 
   41    MinimumParameters mp(x, dirin, amin);
 
   42    MinimumState st(mp, 0., mfcn.NumOfCalls());
 
   44    return FunctionMinimum(seed, std::vector<MinimumState>(1, st), mfcn.Up());