REAL cIEC_OptimCurDir::Optim(REAL aV0,REAL aV1) { REAL aX = aV0; REAL bX = aV1; REAL cX; REAL aY,bY,cY; mnbrack(&aX,&bX,&cX,&aY,&bY,&cY); REAL XMin; golden(aX,bX,cX,1e-5,&XMin); return XMin; }
void BenchDMR::test() { REAL ax=-1,bx=1,cx,fa,fb,fc; mnbrack(&ax,&bx,&cx,&fa,&fb,&fc); REAL xmin1; golden(ax,bx,cx,1e-15,&xmin1); if (_pol.degre() <= 4) BENCH_ASSERT(std::abs(_dpol(xmin1)) < BIG_epsilon); BENCH_ASSERT(std::abs(_dpol(xmin1)) < GIGANTESQUE_epsilon); Pt2dr aP = brent(true); if (_pol.degre() <= 4) BENCH_ASSERT(std::abs(_dpol(aP.x)) < BIG_epsilon); BENCH_ASSERT(std::abs(_dpol(aP.x)) < GIGANTESQUE_epsilon); }
void CostFunction::dlinmin(real* &p, real* &xi, real &fret) { const real TOL=2.0e-8; int j; real xx,xmin,fx,fb,fa,bx,ax; // Fill the temporary state vector for (j=0; j<nState; j++) { tempState[j] = p[j]; tempGradient[j] = xi[j]; } ax = 0.0; xx = 1.0; xmin = 0.0; mnbrack(ax,xx,bx,fa,fx,fb); fret = dbrent(ax,xx,bx,TOL,xmin); for (j=0; j<nState; j++) { xi[j] *= xmin; p[j] += xi[j]; } }