1 #ifndef _TRON_H 2 #define _TRON_H 3 4 #include "_cython_blas_helpers.h" 5 6 class function 7 { 8 public: 9 virtual double fun(double *w) = 0 ; 10 virtual void grad(double *w, double *g) = 0 ; 11 virtual void Hv(double *s, double *Hs) = 0 ; 12 13 virtual int get_nr_variable(void) = 0 ; 14 virtual ~function(void){} 15 }; 16 17 class TRON 18 { 19 public: 20 TRON(const function *fun_obj, double eps = 0.1, int max_iter = 1000, BlasFunctions *blas = 0); 21 ~TRON(); 22 23 int tron(double *w); 24 void set_print_string(void (*i_print) (const char *buf)); 25 26 private: 27 int trcg(double delta, double *g, double *s, double *r); 28 double norm_inf(int n, double *x); 29 30 double eps; 31 int max_iter; 32 function *fun_obj; 33 BlasFunctions *blas; 34 void info(const char *fmt,...); 35 void (*tron_print_string)(const char *buf); 36 }; 37 #endif 38