| 89 | 
  | 
 | 
| 90 | 
  | 
                // conjugate gradient search direction | 
| 91 | 
  | 
                direction = getUpdatedDirection(P, gold2, prevGradient); | 
| 92 | 
– | 
 | 
| 92 | 
  | 
                sddiff = direction - lineSearch_->searchDirection(); | 
| 93 | 
  | 
                lineSearch_->searchDirection() = direction; | 
| 94 | 
  | 
                // Now compute accuracy and check end criteria | 
| 96 | 
  | 
                fnew = P.functionValue(); | 
| 97 | 
  | 
                fdiff = 2.0*std::fabs(fnew-fold) / | 
| 98 | 
  | 
                    (std::fabs(fnew) + std::fabs(fold) + NumericConstant::epsilon); | 
| 100 | 
– | 
                std::cerr << "fdiff = " << fdiff << "ftol = " << ftol << "\n"; | 
| 99 | 
  | 
                if (fdiff < ftol || | 
| 100 | 
  | 
                    endCriteria.checkMaxIterations(iterationNumber_, ecType)) { | 
| 101 | 
  | 
                    endCriteria.checkStationaryFunctionValue(0.0, 0.0, | 
| 105 | 
  | 
                } | 
| 106 | 
  | 
                P.setCurrentValue(x_);      // update problem current value | 
| 107 | 
  | 
                ++iterationNumber_;         // Increase iteration number | 
| 110 | 
– | 
                std::cerr << "in = " << iterationNumber_ << "\n"; | 
| 108 | 
  | 
                first_time = false; | 
| 109 | 
  | 
            } else { | 
| 110 | 
  | 
                done = true; |