Changeset 214 for bdm/stat/libEF.h

Show
Ignore:
Timestamp:
11/27/08 23:31:48 (15 years ago)
Author:
smidl
Message:

debug asserts for infinite likelihoods

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • bdm/stat/libEF.h

    r211 r214  
    4848        virtual double evallog_nn ( const vec &val ) const{it_error ( "Not implemented" );return 0.0;}; 
    4949        //!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;} 
    5151        //!Evaluate normalized log-probability for many samples 
    5252        virtual vec evallog ( const mat &Val ) const { 
     
    128128        //! TODO is it used? 
    129129        mat sample ( int N ) const; 
    130         double eval ( const vec &val ) const ; 
     130//      double eval ( const vec &val ) const ; 
    131131        double evallog_nn ( const vec &val ) const; 
    132132        double lognc () const; 
     
    227227        vec mean() const {return beta/sum ( beta );}; 
    228228        //! 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;}; 
    230231        double lognc () const { 
     232                double tmp; 
    231233                double gam=sum ( beta ); 
    232234                double lgb=0.0; 
    233235                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; 
    235239        }; 
    236240        //!access function 
     
    255259public: 
    256260        //!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;}} 
    258262        //!Copy constructor 
    259263        multiBM ( const multiBM &B ) : BMEF ( B ),est ( rv,B.beta ),beta ( est._beta() ) {} 
     
    596600}; 
    597601 
    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// }; 
    605609 
    606610template<class sq_T>