47 const Real snorm,
const int iter ) {
48 const Real one(1), tol(std::sqrt(ROL_EPSILON<Real>()));
73 Real dotF(ROL_INF<Real>()), tolF(0), dotI(ROL_INF<Real>()), tolI(0);
81 tolF = tol*snorm*
Bs_->norm();
89 dotI =
y_->apply(*
Hy_);
90 tolI = tol*
y_->norm()*
Hy_->norm();
92 if (std::abs(dotF) > tolF && std::abs(dotI) > tolI) {
116 state_->product2.push_back(dotI);
120 state_->product.push_back(dotF);
162 if (
state_->current > -1) {
180 if (
state_->current > -1) {
183 for (
int i = 0; i <=
state_->current; ++i) {
228 if (
state_->current > -1) {
246 if (
state_->current > -1) {
249 for (
int i = 0; i <=
state_->current; ++i) {
virtual const Vector & dual() const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis...
virtual void scale(const Real alpha)=0
Compute where .
virtual ROL::Ptr< Vector > clone() const =0
Clone to make a new (uninitialized) vector.
virtual Real apply(const Vector< Real > &x) const
Apply to a dual vector. This is equivalent to the call .
virtual void applyB0(Vector< Real > &Bv, const Vector< Real > &v) const
virtual void axpy(const Real alpha, const Vector &x)
Compute where .
void applyB(Vector< Real > &Bv, const Vector< Real > &v) const
void applyH(Vector< Real > &Hv, const Vector< Real > &v) const
Contains definitions of custom data types in ROL.
Provides definitions for limited-memory SR1 operators.
virtual void applyH0(Vector< Real > &Hv, const Vector< Real > &v) const
Defines the linear algebra or vector space interface.
Provides interface for and implements limited-memory secant operators.
Ptr< Vector< Real > > dual_
Ptr< Vector< Real > > Bs_
Ptr< Vector< Real > > Hy_
const Ptr< SecantState< Real > > state_
Ptr< Vector< Real > > prim_
virtual void set(const Vector &x)
Set where .
void updateStorage(const Vector< Real > &x, const Vector< Real > &grad, const Vector< Real > &gp, const Vector< Real > &s, const Real snorm, const int iter)