15template <
typename Scalar> 
struct history_callback : 
base_callback<Scalar> {
 
   16  history_callback(
bool store_pd_vars = 
true, 
bool store_values = 
true,
 
   17                   bool store_residuals = 
true)
 
   18      : store_primal_dual_vars_(store_pd_vars), store_values_(store_values),
 
   19        store_residuals_(store_residuals) {}
 
   24    std::vector<VectorXs> xs;
 
   25    std::vector<VectorXs> lams;
 
   26    std::vector<VectorOfRef> lams_view;
 
   27    std::vector<Scalar> values;
 
   28    std::vector<Scalar> prim_infeas;
 
   29    std::vector<Scalar> dual_infeas;
 
   30    std::vector<VectorXs> ls_alphas;
 
   31    std::vector<VectorXs> ls_values;
 
   34    std::vector<Scalar> dmerit_dir;
 
   39    if (store_primal_dual_vars_) {
 
   40      storage.xs.push_back(results.x_opt);
 
   41      storage.lams.push_back(results.data_lams_opt);
 
   42      storage.lams_view.push_back(results.lams_opt);
 
   45      storage.values.push_back(results.value);
 
   46    if (store_residuals_) {
 
   50    const std::size_t asize = workspace.ls_alphas.size();
 
   51    storage.ls_alphas.emplace_back(
 
   52        Eigen::Map<const VectorXs>(&workspace.ls_alphas[0], asize));
 
   53    storage.ls_values.emplace_back(
 
   54        Eigen::Map<const VectorXs>(&workspace.ls_values[0], asize));
 
   55    storage.alphas.push_back(workspace.
alpha_opt);
 
   56    storage.dmerit_dir.push_back(workspace.
dmerit_dir);
 
   60  const bool store_primal_dual_vars_;
 
   61  const bool store_values_;
 
   62  const bool store_residuals_;
 
 
std::vector< Scalar > alphas
Linesearch step-lengths.