#ifndef CSTAT_HPP #define CSTAT_HPP #include #include using std::cout;using std::endl; namespace opt_utilities { template class cstat_poisson :public statistic { private: bool verb; int n; Ty lnfrac(Ty y)const { return y*log(y)-y; } public: void verbose(bool v) { verb=v; } public: statistic* do_clone()const { // return const_cast*>(this); return new cstat_poisson(*this); } Ts do_eval(const Tp& p) { Ts result(0); for(int i=(this->datas()).size()-1;i>=0;--i) { Ty model_y=eval_model(this->datas().get_data(i).get_x(),p); result+=model_y-this->datas().get_data(i).get_y()*log(model_y)+lnfrac(this->datas().get_data(i).get_y()); } if(verb) { n++; if(n%10==0) { cout<p_fitter->get_dof()<<"\t"; for(int i=0;i