Legend:
- Unmodified
- Added
- Removed
-
bdm/stat/emix.h
r107 r115 48 48 return mu; 49 49 } 50 double evalpdflog ( const vec &val ) const {int i; double sum=0.0; for ( i=0;i<w.length();i++ ) {sum+=w ( i ) *Coms ( i )->evalpdflog ( val );} return log ( sum );}; 50 double evalpdflog ( const vec &val ) const { 51 int i; 52 double sum=0.0; 53 for ( i=0;i<w.length();i++ ) {sum+=w ( i ) *Coms ( i )->evalpdflog ( val );} 54 return log ( sum ); 55 }; 51 56 52 57 //Access methods … … 55 60 }; 56 61 57 class mmix_triv : public mpdf { 62 /*! \brief Chain rule decomposition of epdf 63 64 65 */ 66 class eprod: public epdf { 67 protected: 68 Array<epdf*> epdfs; 69 Array<mpdf*> mpdfs; 58 70 public: 59 //!Default constructor60 mmix_triv ( const RV &rv, const RV &rvc, emix* em ) :mpdf ( rv,rvc ) {ep=em;};71 72 61 73 }; 62 74 -
bdm/stat/libBM.h
r102 r115 171 171 virtual mat samplecond ( vec &cond, vec &ll, int N ) { 172 172 this->condition ( cond ); 173 mat temp ( rv.count(),N ); vec smp ( rv.count() ); for ( int i=0;i<N;i++ ) {smp=ep->sample() ;temp.set_col ( i, smp );ll ( i ) =ep->evalpdflog ( smp );} 173 mat temp ( rv.count(),N ); vec smp ( rv.count() ); 174 for ( int i=0;i<N;i++ ) {smp=ep->sample() ;temp.set_col ( i, smp );ll ( i ) =ep->evalpdflog ( smp );} 174 175 return temp; 175 176 }; … … 189 190 //!access function 190 191 epdf& _epdf() {return *ep;} 192 }; 193 194 /*! \brief Unconditional mpdf, allows using epdf in the role of mpdf. 195 196 WARNING: the class does not check validity of the \c ep pointer nor its existence. 197 */ 198 class mepdf : public mpdf { 199 public: 200 //!Default constructor 201 mepdf ( const RV &rv, const RV &rvc, epdf* em ) :mpdf ( rv,rvc ) {ep=em;}; 191 202 }; 192 203