Changeset 214 for bdm/stat/libEF.h
- Timestamp:
- 11/27/08 23:31:48 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
bdm/stat/libEF.h
r211 r214 48 48 virtual double evallog_nn ( const vec &val ) const{it_error ( "Not implemented" );return 0.0;}; 49 49 //!Evaluate normalized log-probability 50 virtual double evallog ( const vec &val ) const {double tmp;tmp= evallog_nn ( val )-lognc();it_assert_debug(std::isfinite(tmp)," why?"); return tmp;}50 virtual double evallog ( const vec &val ) const {double tmp;tmp= evallog_nn ( val )-lognc();it_assert_debug(std::isfinite(tmp),"Infinite value"); return tmp;} 51 51 //!Evaluate normalized log-probability for many samples 52 52 virtual vec evallog ( const mat &Val ) const { … … 128 128 //! TODO is it used? 129 129 mat sample ( int N ) const; 130 double eval ( const vec &val ) const ;130 // double eval ( const vec &val ) const ; 131 131 double evallog_nn ( const vec &val ) const; 132 132 double lognc () const; … … 227 227 vec mean() const {return beta/sum ( beta );}; 228 228 //! In this instance, val is ... 229 double evallog_nn ( const vec &val ) const {return ( beta-1 ) *log ( val );}; 229 double evallog_nn ( const vec &val ) const {double tmp; tmp=( beta-1 ) *log ( val ); it_assert_debug(std::isfinite(tmp),"Infinite value"); 230 return tmp;}; 230 231 double lognc () const { 232 double tmp; 231 233 double gam=sum ( beta ); 232 234 double lgb=0.0; 233 235 for ( int i=0;i<beta.length();i++ ) {lgb+=lgamma ( beta ( i ) );} 234 return lgb-lgamma ( gam ); 236 tmp= lgb-lgamma ( gam ); 237 it_assert_debug(std::isfinite(tmp),"Infinite value"); 238 return tmp; 235 239 }; 236 240 //!access function … … 255 259 public: 256 260 //!Default constructor 257 multiBM ( const RV &rv, const vec beta0 ) : BMEF ( rv ),est ( rv,beta0 ),beta ( est._beta() ) { last_lognc=est.lognc();}261 multiBM ( const RV &rv, const vec beta0 ) : BMEF ( rv ),est ( rv,beta0 ),beta ( est._beta() ) {if(beta.length()>0){last_lognc=est.lognc();}else{last_lognc=0.0;}} 258 262 //!Copy constructor 259 263 multiBM ( const multiBM &B ) : BMEF ( B ),est ( rv,B.beta ),beta ( est._beta() ) {} … … 596 600 }; 597 601 598 template<class sq_T>599 double enorm<sq_T>::eval ( const vec &val ) const {600 double pdfl,e;601 pdfl = evallog ( val );602 e = exp ( pdfl );603 return e;604 };602 // template<class sq_T> 603 // double enorm<sq_T>::eval ( const vec &val ) const { 604 // double pdfl,e; 605 // pdfl = evallog ( val ); 606 // e = exp ( pdfl ); 607 // return e; 608 // }; 605 609 606 610 template<class sq_T>