44 #ifndef ROL_SMOOTHCVARQUAD_HPP
45 #define ROL_SMOOTHCVARQUAD_HPP
57 Teuchos::RCP<PlusFunction<Real> >
pf_;
63 Real
error(Real x,
int deriv = 0) {
65 + ((deriv%2) ? -1.0 : 1.0)*
pf_->evaluate(-x,deriv);
70 Real X = ((deriv==0) ? x : ((deriv==1) ? 1.0 : 0.0));
71 Real reg =
error(x,deriv) + X;
127 Real vx = 0.0, vy = 0.0;
132 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(eps) is correct? \n";
133 std::cout << std::right << std::setw(20) <<
"t"
134 << std::setw(20) <<
"v'(x)"
135 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t"
136 << std::setw(20) <<
"Error"
138 for (
int i = 0; i < 13; i++) {
141 diff = (vy-vx)/(2.0*t);
142 err = std::abs(diff-dv);
143 std::cout << std::scientific << std::setprecision(11) << std::right
144 << std::setw(20) << t
145 << std::setw(20) << dv
146 << std::setw(20) << diff
147 << std::setw(20) << err
159 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(eps) is correct? \n";
160 std::cout << std::right << std::setw(20) <<
"t"
161 << std::setw(20) <<
"v''(x)"
162 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t"
163 << std::setw(20) <<
"Error"
165 for (
int i = 0; i < 13; i++) {
168 diff = (vy-vx)/(2.0*t);
169 err = std::abs(diff-dv);
170 std::cout << std::scientific << std::setprecision(11) << std::right
171 << std::setw(20) << t
172 << std::setw(20) << dv
173 << std::setw(20) << diff
174 << std::setw(20) << err
187 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(0) is correct? \n";
188 std::cout << std::right << std::setw(20) <<
"t"
189 << std::setw(20) <<
"v'(x)"
190 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t"
191 << std::setw(20) <<
"Error"
193 for (
int i = 0; i < 13; i++) {
196 diff = (vy-vx)/(2.0*t);
197 err = std::abs(diff-dv);
198 std::cout << std::scientific << std::setprecision(11) << std::right
199 << std::setw(20) << t
200 << std::setw(20) << dv
201 << std::setw(20) << diff
202 << std::setw(20) << err
214 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(0) is correct? \n";
215 std::cout << std::right << std::setw(20) <<
"t"
216 << std::setw(20) <<
"v''(x)"
217 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t"
218 << std::setw(20) <<
"Error"
220 for (
int i = 0; i < 13; i++) {
223 diff = (vy-vx)/(2.0*t);
224 err = std::abs(diff-dv);
225 std::cout << std::scientific << std::setprecision(11) << std::right
226 << std::setw(20) << t
227 << std::setw(20) << dv
228 << std::setw(20) << diff
229 << std::setw(20) << err
242 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(-eps) is correct? \n";
243 std::cout << std::right << std::setw(20) <<
"t"
244 << std::setw(20) <<
"v'(x)"
245 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t"
246 << std::setw(20) <<
"Error"
248 for (
int i = 0; i < 13; i++) {
251 diff = (vy-vx)/(2.0*t);
252 err = std::abs(diff-dv);
253 std::cout << std::scientific << std::setprecision(11) << std::right
254 << std::setw(20) << t
255 << std::setw(20) << dv
256 << std::setw(20) << diff
257 << std::setw(20) << err
269 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(-eps) is correct? \n";
270 std::cout << std::right << std::setw(20) <<
"t"
271 << std::setw(20) <<
"v''(x)"
272 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t"
273 << std::setw(20) <<
"Error"
275 for (
int i = 0; i < 13; i++) {
278 diff = (vy-vx)/(2.0*t);
279 err = std::abs(diff-dv);
280 std::cout << std::scientific << std::setprecision(11) << std::right
281 << std::setw(20) << t
282 << std::setw(20) << dv
283 << std::setw(20) << diff
284 << std::setw(20) << err
virtual void checkRegret(void)
Real regret(Real x, int deriv=0)
Teuchos::RCP< PlusFunction< Real > > pf_
Real error(Real x, int deriv=0)
SmoothCVaRQuad(Real prob, Real eps, Teuchos::RCP< PlusFunction< Real > > &pf)