MPQC 2.3.1

- Main Page
- Related Pages
- Classes
- Files

- File List

mcsearch.h
1 //
2 // mcsearch.h
3 //
4 // Based on line search routines found in lbfgs.f on the WWW.
5 //
6
7 #ifndef _math_optimize_mcsearch_h
8 #define _math_optimize_mcsearch_h
9
10 #ifdef __GNUC__
11 #pragma interface
12 #endif
13
14 #include <math/optimize/opt.h>
15 #include <util/misc/autovec.h>
16
17 namespace sc {
18
24 class MCSearch: public LineOpt {
25 protected:
26
27 // These are originally from the lb3 common block.
28 double gtol_, stpmin_, stpmax_;
29
30 // Local variables in mcsrch
31 double dg, fm, fx, fy, dgm, dgx, dgy, fxm, fym, stx, sty, dgxm,
32 dgym;
33 int infoc;
34 double finit, width, stmin, stmax;
35 bool stage1;
36 double width1, ftest1;
37 bool brackt;
38 double dginit, dgtest;
39
40 // Local variables in mcstep
41 double p, q, r__, s, sgnd, stpc, stpf, stpq, gamma, theta;
42 bool bound;
43
44 // these are saved from call to call
45 int info_;
46 auto_vec<double> wa_;
47
48 void
49 mcstep(double *stx, double *fx, double *dx,
50 double *sty, double *fy, double *dy, double *stp,
51 double *fp, double *dp, bool *brackt, double *stpmin,
52 double *stpmax, int *info);
53
54 void
55 mcsrch(int *n, double *x, double *f,
56 double *g, double *s, double *stp, double *ftol,
57 double *xtol, int *maxfev, int *info, int *nfev,
58 double *wa);
59
60
61 void mcinit();
62 public:
63
67 MCSearch(const Ref<KeyVal>&);
68 ~MCSearch();
69 int update();
70
71 void init(RefSCVector& direction);
72 void init(RefSCVector& direction, Ref<Function> function);
73
74 };
75
76 }
77
78 #endif
79
80 // Local Variables:
81 // mode: c++
82 // c-file-style: "CLJ"
83 // End: