/** \file poly1d.hpp \brief 1d polynomial \author Junhua Gu */ #ifndef POLY_MODEL_H_ #define POLY_MODEL_H_ #define OPT_HEADER #include #include #include #include namespace opt_utilities { template class poly1d :public model,optvec,optvec,std::string> { typedef optvec Tv; private: poly1d* do_clone()const { return new poly1d(*this); } const char* do_get_type_name()const { return "polynomial"; } public: poly1d() { assert(n>=0); for(int i=0;i<=n;++i) { std::ostringstream ostr; ostr<<"a"<push_param_info(param_info(ostr.str().c_str(),1)); } } public: Tv do_eval(const Tv& x,const Tv& param) { // return x*get_element(param,0)+get_element(param,1); Tv result(x.size()); for(int m=0;m