44 #ifndef ROL_EXPUTILITY_HPP 45 #define ROL_EXPUTILITY_HPP 65 scaledGradient_ = (x0->dual()).clone();
66 dualVector1_ = (x0->dual()).clone();
67 dualVector2_ = (x0->dual()).clone();
70 scaledGradient_->zero(); dualVector1_->zero(); dualVector2_->zero();
80 void update(
const Real val,
const Real weight) {
85 Real ev = std::exp(val);
92 Real ev = std::exp(val);
97 scaledGradient_->axpy(weight*ev*gv,g);
103 sampler.
sumAll(&val,&ev,1);
110 sampler.
sumAll(&val,&ev,1);
113 dualVector1_->scale(1.0/ev);
121 sampler.
sumAll(&val,&ev,1);
125 sampler.
sumAll(&gv,&egv,1);
129 sampler.
sumAll(*scaledGradient_,*dualVector2_);
130 dualVector1_->plus(*dualVector2_);
131 dualVector1_->scale(1.0/ev);
133 dualVector2_->zero();
135 dualVector1_->axpy(egv/(ev*ev),*dualVector2_);
void reset(Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x, Teuchos::RCP< Vector< Real > > &v0, const Vector< Real > &v)
void update(const Real val, const Vector< Real > &g, const Real weight)
Teuchos::RCP< Vector< Real > > dualVector2_
Defines the linear algebra or vector space interface.
void getGradient(Vector< Real > &g, SampleGenerator< Real > &sampler)
void sumAll(Real *input, Real *output, int dim) const
void reset(Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x)
Teuchos::RCP< const Vector< Real > > getVector() const
Teuchos::RCP< Vector< Real > > scaledGradient_
Real getValue(SampleGenerator< Real > &sampler)
void update(const Real val, const Real weight)
void update(const Real val, const Vector< Real > &g, const Real gv, const Vector< Real > &hv, const Real weight)
void getHessVec(Vector< Real > &hv, SampleGenerator< Real > &sampler)
virtual void reset(Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x)
Teuchos::RCP< Vector< Real > > dualVector1_