Show
Ignore:
Timestamp:
06/22/09 13:17:49 (15 years ago)
Author:
smidl
Message:

merging works for merger_mx

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/stat/exp_family.cpp

    r384 r395  
    2424        if ( dimx==1 ) { //same as the following, just quicker. 
    2525                double r = val ( vend ); //last entry! 
     26                if (r<0) return -1e+100; 
    2627                vec Psi ( nPsi+dimx ); 
    2728                Psi ( 0 ) = -1.0; 
     
    3435                mat Th= reshape ( val ( 0,nPsi*dimx-1 ),nPsi,dimx ); 
    3536                fsqmat R ( reshape ( val ( nPsi*dimx,vend ),dimx,dimx ) ); 
     37                double ldetR=R.logdet(); 
     38                if (ldetR) return -1e+100; 
    3639                mat Tmp=concat_vertical ( -eye ( dimx ),Th ); 
    3740                fsqmat iR ( dimx ); 
    3841                R.inv ( iR ); 
    3942 
    40                 return -0.5* ( nu*R.logdet() + trace ( iR.to_mat() *Tmp.T() *V.to_mat() *Tmp ) ); 
     43                return -0.5* ( nu*ldetR + trace ( iR.to_mat() *Tmp.T() *V.to_mat() *Tmp ) ); 
    4144        } 
    4245} 
     
    187190        int i; 
    188191 
     192        if (any(val<=0.)) return -1e100; 
     193        if (any(beta<=0.)) return -1e100; 
    189194        for ( i=0; i<dim; i++ ) { 
    190195                res += ( alpha ( i ) - 1 ) *std::log ( val ( i ) ) - beta ( i ) *val ( i );