Changeset 766

Show
Ignore:
Timestamp:
01/11/10 22:55:57 (14 years ago)
Author:
mido
Message:

abstract methods restored wherever they are meaningful
macros NOT_IMPLEMENTED and NOT_IMPLEMENTED_VOID defined to make sources shorter
emix::set_parameters and mmix::set_parameters removed, corresponding acces methods created and the corresponding validate methods improved appropriately
some compilator warnings were avoided
and also a few other things cleaned up

Location:
library
Files:
30 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/base/bdmbase.cpp

    r746 r766  
    2727}; 
    2828 
    29 int RV::init ( const string &name, int size ) { 
     29int RV::assign_id( const string &name, int size ) { 
    3030        //Refer 
    3131        int id; 
     
    8686        int id; 
    8787        for ( int i = 0; i < len; i++ ) { 
    88                 id = init ( in_names ( i ), in_sizes ( i ) ); 
     88                id = assign_id ( in_names ( i ), in_sizes ( i ) ); 
    8989                ids ( i ) = id; 
    9090        } 
     
    100100 
    101101bool RV::add ( const RV &rv2 ) { 
    102         // TODO 
    103102        if ( rv2.len > 0 ) { //rv2 is nonempty 
    104103                ivec ind = rv2.findself ( *this ); //should be -1 all the time 
     
    146145} 
    147146 
    148 shared_ptr<pdf> epdf::condition ( const RV &rv ) const { 
    149         bdm_warning ( "Not implemented" ); 
    150         return shared_ptr<pdf>(); 
    151 } 
    152  
    153 shared_ptr<epdf> epdf::marginal ( const RV &rv ) const { 
    154         bdm_warning ( "Not implemented" ); 
    155         return shared_ptr<epdf>(); 
    156 } 
     147shared_ptr<pdf> epdf::condition ( const RV &rv ) const NOT_IMPLEMENTED( shared_ptr<pdf>() ); 
     148 
     149 
     150shared_ptr<epdf> epdf::marginal ( const RV &rv ) const NOT_IMPLEMENTED( shared_ptr<epdf>() ); 
    157151 
    158152mat epdf::sample_mat ( int N ) const { 
  • library/bdm/base/bdmbase.h

    r760 r766  
    108108 
    109109        //! auxiliary function used in constructor 
    110         void init ( const Array<std::string> &in_names, const ivec &in_sizes, const ivec &in_times ); 
    111         int init ( const string &name, int size ); 
     110        void init( const Array<std::string> &in_names, const ivec &in_sizes, const ivec &in_times ); 
     111 
     112        //! auxiliary function assigning unique integer index related to the passed name and size of the random variable 
     113        int assign_id( const string &name, int size ); 
     114 
    112115        //! Private constructor from IDs, potentially dangerous since all ids must be valid! 
    113116        //! dummy is there to prevent confusion with RV(" string"); 
     
    319322 
    320323        //! log this vector 
    321         virtual void log_vector ( int id, const vec &v ) { 
    322                 bdm_error ( "Not implemented" ); 
    323         }; 
     324        virtual void log_vector ( int id, const vec &v ) = 0; 
    324325 
    325326        virtual Setting & log_to_setting ( int id ) { 
    326327                return settings ( id )->add ( Setting::TypeGroup ); 
    327328        } 
    328  
    329329        //! log this double 
    330         virtual void logit ( int id, const double &d ) { 
    331                 bdm_error ( "Not implemented" ); 
    332         }; 
     330        virtual void logit ( int id, const double &d ) = 0; 
    333331 
    334332        //! Shifts storage position for another time step. 
    335         virtual void step() { 
    336                 bdm_error ( "Not implemneted" ); 
    337         }; 
     333        virtual void step() = 0; 
    338334 
    339335        //! Finalize storing information 
     
    385381        //!dimension of the condition 
    386382        int dimc; 
     383 
    387384        //! random variable in condition 
    388385        RV rvc; 
     
    402399        pdf ( const pdf &m ) : dimc ( m.dimc ), rvc ( m.rvc ), dim ( m.dim ), rv ( m.rv ) { } 
    403400 
    404         //! copy of the current object - make sure to implement 
    405         virtual pdf* _copy_() const { 
    406                 return new pdf ( *this ); 
    407         } 
    408401        //!@} 
    409402 
     
    412405 
    413406        //! Returns a sample from the density conditioned on \c cond, \f$x \sim epdf(rv|cond)\f$. \param cond is numeric value of \c rv 
    414         virtual vec samplecond ( const vec &cond ) { 
    415                 bdm_error ( "Not implemented" ); 
    416                 return vec(); 
    417         } 
     407        virtual vec samplecond ( const vec &cond ) = 0; 
    418408 
    419409        //! Returns \param N samples from the density conditioned on \c cond, \f$x \sim epdf(rv|cond)\f$. \param cond is numeric value of \c rv 
     
    421411 
    422412        //! Shortcut for conditioning and evaluation of the internal epdf. In some cases,  this operation can be implemented efficiently. 
    423         virtual double evallogcond ( const vec &yt, const vec &cond ) { 
    424                 bdm_error ( "Not implemented" ); 
    425                 return 0.0; 
    426         } 
     413        virtual double evallogcond ( const vec &yt, const vec &cond ) = 0; 
    427414 
    428415        //! Matrix version of evallogcond 
     
    521508        } 
    522509         
    523         epdf* _copy_() const { 
    524                 return new epdf ( *this ); 
    525         } 
    526510        //!@} 
    527511 
     
    530514 
    531515        //! Returns a sample, \f$ x \f$ from density \f$ f_x()\f$ 
    532         virtual vec sample() const { 
    533                 bdm_error ( "not implemented" ); 
    534                 return vec(); 
    535         } 
     516        virtual vec sample() const = 0; 
    536517 
    537518        //! Returns N samples, \f$ [x_1 , x_2 , \ldots \ \f$  from density \f$ f_x(rv)\f$ 
     
    540521        //! Compute log-probability of argument \c val 
    541522        //! In case the argument is out of suport return -Infinity 
    542         virtual double evallog ( const vec &val ) const { 
    543                 bdm_error ( "not implemented" ); 
    544                 return 0.0; 
    545         } 
    546  
     523        virtual double evallog ( const vec &val ) const = 0; 
     524         
    547525        //! Compute log-probability of multiple values argument \c val 
    548526        virtual vec evallog_mat ( const mat &Val ) const; 
     
    557535        virtual shared_ptr<epdf> marginal ( const RV &rv ) const; 
    558536 
    559         //! return expected value 
    560         virtual vec mean() const { 
    561                 bdm_error ( "not implemneted" ); 
    562                 return vec(); 
    563         } 
     537        virtual vec mean() const = 0; 
    564538 
    565539        //! return expected variance (not covariance!) 
    566         virtual vec variance() const { 
    567                 bdm_error ( "not implemneted" ); 
    568                 return vec(); 
    569         } 
     540        virtual vec variance() const = 0; 
    570541 
    571542        //! Lower and upper bounds of \c percentage % quantile, returns mean-2*sigma as default 
     
    639610        //! Update \c iepdf so that it represents this pdf conditioned on \c rvc = cond 
    640611        //! This function provides convenient reimplementation in offsprings 
    641         virtual void condition ( const vec &cond ) { 
    642                 bdm_error ( "Not implemented" ); 
    643         } 
     612        virtual void condition ( const vec &cond ) = 0; 
    644613 
    645614        //!access function to iepdf 
     
    942911        } 
    943912        //! Returns full vector of observed data=[output, input] 
    944         virtual void getdata ( vec &dt ) const { 
    945                 bdm_error ( "abstract class" ); 
    946         } 
     913        virtual void getdata ( vec &dt ) const = 0; 
     914 
    947915        //! Returns data records at indeces. 
    948         virtual void getdata ( vec &dt, const ivec &indeces ) { 
    949                 bdm_error ( "abstract class" ); 
    950         } 
    951  
    952         //! Accepts action variable and schedule it for application. 
    953         virtual void write ( const vec &ut ) { 
    954                 bdm_error ( "abstract class" ); 
    955         } 
     916        virtual void getdata ( vec &dt, const ivec &indeces ) = 0; 
     917 
     918        //! Accepts action variable and schedule it for application.     
     919        virtual void write ( const vec &ut ) = 0; 
    956920 
    957921        //! Accepts action variables at specific indeces 
    958         virtual void write ( const vec &ut, const ivec &indeces ) { 
    959                 bdm_error ( "abstract class" ); 
    960         } 
     922        virtual void write ( const vec &ut, const ivec &indeces ) = 0; 
    961923 
    962924        //! Moves from \f$ t \f$ to \f$ t+1 \f$, i.e. perfroms the actions and reads response of the system. 
    963         virtual void step() { 
    964                 bdm_error ( "abstract class" ); 
    965         } 
     925        virtual void step() = 0; 
    966926 
    967927        //! Register DS for logging into logger L 
     
    1033993//      BM ( const BM &B ) :  yrv ( B.yrv ), dimy(B.dimy), rvc ( B.rvc ),dimc(B.dimc), ll ( B.ll ), evalll ( B.evalll ) {} 
    1034994        //! \brief Copy function required in vectors, Arrays of BM etc. Have to be DELETED manually! 
    1035         //! Prototype: \code BM* _copy_() const {return new BM(*this);} \endcode 
    1036         virtual BM* _copy_() const { 
    1037                 return NULL; 
    1038         }; 
     995        //! Prototype: \code BM* _copy() const {return new BM(*this);} \endcode 
     996        virtual BM* _copy() const {             return NULL;    }; // TODO NEBUDE TU TAKY LEPSI BDM_ERROR??! 
    1039997        //!@} 
    1040998 
     
    10541012        //! This function evaluates only \f$ y_t \f$, condition is assumed to be the last used in bayes(). 
    10551013        //! See bdm::BM::predictor for conditional version. 
    1056         virtual double logpred ( const vec &yt ) const { 
    1057                 bdm_error ( "Not implemented" ); 
    1058                 return 0.0; 
    1059         } 
     1014        virtual double logpred ( const vec &yt ) const = 0; 
    10601015 
    10611016        //! Matrix version of logpred 
     
    10691024 
    10701025        //!Constructs a predictive density \f$ f(d_{t+1} |d_{t}, \ldots d_{0}) \f$ 
    1071         virtual epdf* epredictor() const { 
    1072                 bdm_error ( "Not implemented" ); 
    1073                 return NULL; 
    1074         }; 
     1026        virtual epdf* epredictor() const = 0; 
     1027 
    10751028        //!Constructs conditional density of 1-step ahead predictor \f$ f(d_{t+1} |d_{t+h-1}, \ldots d_{t}) \f$ 
    1076         virtual pdf* predictor() const { 
    1077                 bdm_error ( "Not implemented" ); 
    1078                 return NULL; 
    1079         }; 
     1029        virtual pdf* predictor() const = 0; 
     1030 
    10801031        //!@} 
    10811032 
  • library/bdm/base/datasources.h

    r738 r766  
    129129        } 
    130130 
     131        //! Accepts action variable and schedule it for application.     
     132        virtual void write ( const vec &ut ) NOT_IMPLEMENTED_VOID; 
     133                 
     134        //! Accepts action variables at specific indeces 
     135        virtual void write ( const vec &ut, const ivec &indeces ) NOT_IMPLEMENTED_VOID; 
     136 
    131137        /*! 
    132138        \code 
     
    182188        } 
    183189 
     190 
     191        //! Returns data records at indeces. 
     192        virtual void getdata ( vec &dt, const ivec &indeces ) NOT_IMPLEMENTED_VOID; 
     193 
     194 
    184195        /*! 
    185196        \code 
     
    353364        } 
    354365 
     366        virtual void write ( const vec &ut, const ivec &indeces ) NOT_IMPLEMENTED_VOID; 
     367 
    355368        /*! UI for stateDS 
    356369 
  • library/bdm/base/loggers.cpp

    r737 r766  
    4848 
    4949void memlog::from_setting ( const Setting &set ) { 
    50         // TODO tady se natvrdo ocekava existence stringu, nejsou zadne defaulty.. je to tak OK? 
    5150        UI::get ( maxlen,  set, "maxlen", UI::compulsory ); 
    5251        UI::get ( filename, set, "filename" ); 
     
    174173 
    175174void dirfilelog::from_setting ( const Setting &set ) { 
    176         // TODO tady se natvrdo ocekava existence stringu, nejsou zadne defaulty.. je to tak OK? 
    177175        dirname = ( const char* ) set["dirname"]; 
    178176        maxlen = set["maxlen"]; 
  • library/bdm/base/loggers.h

    r737 r766  
    7878        /*! \brief UI for memlog 
    7979 
    80         TODO dat tam kam patri, a to celej blok 
    81  
    8280        \code 
    8381        logger = { 
     
    130128        /*! \brief UI for stdlog 
    131129 
    132         TODO dat tam kam patri, a to celej blok 
    133  
    134130        \code 
    135131        logger = { 
     
    140136        void from_setting ( const Setting &set ) { 
    141137        } 
    142  
    143138}; 
    144139UIREGISTER ( stdlog ); 
  • library/bdm/bdmerror.h

    r737 r766  
    6464        } else ((void) 0) 
    6565 
     66#define NOT_IMPLEMENTED(RESULT) { bdm_error( "Not implemented" ); return RESULT; } 
     67 
     68#define NOT_IMPLEMENTED_VOID { bdm_error( "Not implemented" ); } 
     69 
    6670#endif 
    67  
  • library/bdm/bdmroot.h

    r756 r766  
    1919#include "itpp_ext.h" 
    2020#include "base/libconfig/lib/libconfig.h++" 
     21#include "bdmerror.h" 
    2122 
    2223using namespace libconfig; 
     
    9495        virtual void validate() { 
    9596        } 
     97 
     98        //! Virtual method providing deep copy of instances 
     99        virtual root* _copy() const NOT_IMPLEMENTED(NULL); 
     100         
     101 
    96102        //! access function 
    97103        int _log_level() const { 
  • library/bdm/estim/arx.cpp

    r741 r766  
    7878} 
    7979 
    80 ARX* ARX::_copy_ ( ) const { 
     80ARX* ARX::_copy ( ) const { 
    8181        ARX* Tmp = new ARX ( *this ); 
    8282        return Tmp; 
  • library/bdm/estim/arx.h

    r746 r766  
    5656        ARX ( const double frg0 = 1.0 ) : BMEF ( frg0 ),  have_constant ( true ), dyad(), est(), alter_est() {}; 
    5757        ARX ( const ARX &A0 ) : BMEF ( A0 ),  have_constant ( A0.have_constant ), dyad ( A0.dyad ), est ( A0.est ), alter_est ( A0.alter_est ) { }; 
    58         ARX* _copy_() const; 
     58 
     59        ARX* _copy() const; 
     60 
    5961        void set_parameters ( double frg0 ) { 
    6062                frg = frg0; 
     
    174176        //! copy constructor 
    175177        ARXfrg ( const ARXfrg &A0 ) : ARX ( A0 ) {}; 
    176         ARXfrg* _copy_() const { 
     178        virtual ARXfrg* _copy() const { 
    177179                ARXfrg *A = new ARXfrg ( *this ); 
    178180                return A; 
  • library/bdm/estim/ekf_template.h

    r744 r766  
    3030class EKFCh_dQ : public EKFCh { 
    3131public: 
    32         BM* _copy_() const {return new EKFCh_dQ(*this);} 
     32        root* _copy_() const { 
     33                return new EKFCh_dQ(*this); 
     34        } 
     35 
    3336        //! new bayes, expects cond = [ut, Qt] 
    3437        void bayes( const vec &yt , const vec &cond) { 
  • library/bdm/estim/kalman.h

    r744 r766  
    154154                bdm_assert ( est.dimension(), "Statistics and model parameters mismatch" ); 
    155155        } 
     156 
     157        virtual double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0); 
     158 
     159        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL); 
     160         
     161        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL); 
    156162}; 
    157163/*! 
     
    165171        //! Here dt = [yt;ut] of appropriate dimensions 
    166172        void bayes ( const vec &yt, const vec &cond = empty_vec ); 
    167         BM* _copy_() const { 
     173 
     174        virtual KalmanFull* _copy() const { 
    168175                KalmanFull* K = new KalmanFull; 
    169176                K->set_parameters ( A, B, C, D, Q, R ); 
     
    192199public: 
    193200        //! copy constructor 
    194         BM* _copy_() const { 
     201        virtual KalmanCh* _copy() const { 
    195202                KalmanCh* K = new KalmanCh; 
    196203                K->set_parameters ( A, B, C, D, Q, R ); 
     
    335342public: 
    336343        //! copy constructor duplicated - calls different set_parameters 
    337         BM* _copy_() const { 
     344        EKFCh* _copy() const { 
    338345                return new EKFCh(*this); 
    339346        } 
     
    422429        // TODO dodelat void to_setting( Setting &set ) const; 
    423430 
     431        virtual double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0);  
     432 
     433        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL);  
     434 
     435        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL);  
    424436}; 
    425437 
  • library/bdm/estim/mixtures.cpp

    r750 r766  
    1515        int ndat = Data.cols(); 
    1616        //Estimate  Com0 from all data 
    17         Coms ( 0 ) = Com0->_copy_(); 
     17        Coms ( 0 ) = (BMEF*) Com0->_copy(); 
    1818//      Coms(0)->set_evalll(false); 
    1919        Coms ( 0 )->bayes_batch ( Data ); 
     
    2424        for ( i = 1; i < n; i++ ) { 
    2525                //copy Com0 and create new rvs for them 
    26                 Coms ( i ) =  Coms ( 0 )->_copy_ ( ); 
     26                Coms ( i ) =  (BMEF*) Coms ( 0 )->_copy ( ); 
    2727        } 
    2828        //Pick some data for each component and update it 
    2929        for ( i = 0; i < n; i++ ) { 
    3030                //pick one datum 
    31                 int ind = floor ( ndat * UniRNG.sample() ); 
     31                int ind = (int) floor ( ndat * UniRNG.sample() ); 
    3232                Coms ( i )->bayes ( Data.get_col ( ind ), empty_vec ); 
    3333                //flatten back to oringinal 
     
    4949        Array<BMEF*> Coms0 ( n ); 
    5050        for ( i = 0; i < n; i++ ) { 
    51                 Coms0 ( i ) = ( BMEF* ) Coms ( i )->_copy_(); 
     51                Coms0 ( i ) = ( BMEF* ) Coms ( i )->_copy(); 
    5252        } 
    5353 
     
    147147        emix* tmp; 
    148148        tmp = new emix( ); 
    149         tmp->set_parameters ( weights.posterior().mean(), pC ); 
     149        tmp->_w() = weights.posterior().mean(); 
     150        tmp->_Coms() = pC; 
    150151        tmp->validate(); 
    151152        return tmp; 
  • library/bdm/estim/mixtures.h

    r746 r766  
    7575                        weights (), method ( QB ) { 
    7676                for ( int i = 0; i < n; i++ ) { 
    77                         Coms ( i ) = ( BMEF* ) Coms0 ( i )->_copy_(); 
     77                        Coms ( i ) = ( BMEF* ) Coms0 ( i )->_copy(); 
    7878                } 
    7979                weights.set_parameters(alpha0); 
     
    9292                        weights ( M2.weights ), method ( M2.method ) { 
    9393                for ( int i = 0; i < n; i++ ) { 
    94                         Coms ( i ) = M2.Coms ( i )->_copy_(); 
     94                        Coms ( i ) = (BMEF*) M2.Coms ( i )->_copy(); 
    9595                } 
    9696                build_est(); 
     
    144144} 
    145145#endif // MIXTURES_H 
    146  
    147  
  • library/bdm/estim/particles.cpp

    r739 r766  
    168168                        if ( ind ( i ) != i ) {//replace the current Bm by a new one 
    169169                                delete BMs ( i ); 
    170                                 BMs ( i ) = BMs ( ind ( i ) )->_copy_(); //copy constructor 
     170                                BMs ( i ) = (BM*) BMs ( ind ( i ) )->_copy(); //copy constructor 
    171171                        } 
    172172                }; 
  • library/bdm/estim/particles.h

    r744 r766  
    203203                return _samples; 
    204204        } 
     205 
     206        virtual double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0); 
     207 
     208        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL); 
     209         
     210        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL); 
    205211}; 
    206212UIREGISTER ( PF ); 
     
    242248                void qbounds ( vec &lb, vec &ub, double perc = 0.95 ) const; 
    243249 
    244                 vec sample() const { 
    245                         bdm_error ( "Not implemented" ); 
    246                         return vec(); 
    247                 } 
    248  
    249                 double evallog ( const vec &val ) const { 
    250                         bdm_error ( "not implemented" ); 
    251                         return 0.0; 
    252                 } 
     250                vec sample() const NOT_IMPLEMENTED(0); 
     251 
     252                double evallog ( const vec &val ) const NOT_IMPLEMENTED(0);              
    253253        }; 
    254254 
     
    282282                //BMcond0 .condition ( pf->posterior()._sample ( 0 ) ); 
    283283                for ( int i = 0; i < n; i++ ) { 
    284                         BMs ( i ) = BMcond0._copy_(); 
     284                        BMs ( i ) = (BM*) BMcond0._copy(); 
    285285                } 
    286286        }; 
    287287 
    288288        void bayes ( const vec &yt, const vec &cond ); 
     289 
    289290        const epdf& posterior() const { 
    290291                return jest; 
     
    301302        } 
    302303        PF& _pf() {return *pf;} 
     304 
     305 
     306        virtual double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0);  
     307                 
     308        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL);  
     309         
     310        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL);  
     311 
    303312 
    304313        /*! configuration structure for basic PF 
     
    315324        void from_setting ( const Setting &set ) { 
    316325                shared_ptr<pdf> par = UI::build<pdf> ( set, "parameter_pdf", UI::compulsory ); 
    317                 shared_ptr<pdf> obs = new pdf(); // not used!! 
    318326 
    319327                pf = new PF; 
     
    321329                pf->prior_from_set ( set ); 
    322330                pf->resmethod_from_set ( set ); 
    323                 pf->set_model ( par, obs ); 
     331                pf->set_model ( par, par ); // too hackish! 
    324332 
    325333                shared_ptr<BM> BM0 = UI::build<BM> ( set, "BM", UI::compulsory ); 
     
    340348                validate(); 
    341349        } 
     350 
    342351        void validate() { 
    343352                try { 
    344353                        pf->validate(); 
    345                 } catch ( std::exception &e ) { 
     354                } catch ( std::exception ) { 
    346355                        throw UIException ( "Error in PF part of MPF:" ); 
    347356                } 
     
    351360                pf2bm.set_connection ( BMs ( 0 )->_rvc(), pf->posterior()._rv() ); 
    352361        } 
    353  
    354362}; 
    355363UIREGISTER ( MPF ); 
  • library/bdm/itpp_ext.cpp

    r737 r766  
    359359        } 
    360360        if ( xa == ( int ) xa ) { 
    361                 n = xa; 
     361                n = (int) xa; 
    362362                for ( k = 1; k < n; k++ ) { 
    363363                        s += 1.0 / k; 
     
    365365                ps =  s - el; 
    366366        } else if ( ( xa + 0.5 ) == ( ( int ) ( xa + 0.5 ) ) ) { 
    367                 n = xa - 0.5; 
     367                n = (int) (xa - 0.5); 
    368368                for ( k = 1; k <= n; k++ ) { 
    369369                        s += 1.0 / ( 2.0 * k - 1.0 ); 
     
    410410        //! generate randun() sample 
    411411        double get() { 
    412                 long long tmp = A * seed; 
     412                long tmp = (long) (A * seed); 
    413413                tmp = tmp % M; 
    414414                seed = tmp; 
  • library/bdm/math/chmat.h

    r738 r766  
    7777          it shouldn't actually be called. 
    7878        */ 
    79         chmat ( const chmat &M, const ivec &perm ) { 
    80                 bdm_error ( "not implemented" ); 
    81         } 
     79        chmat ( const chmat &M, const ivec &perm ) NOT_IMPLEMENTED_VOID; 
    8280 
    8381        //! Access function 
  • library/bdm/math/square_mat.h

    r737 r766  
    4242         BLAS-2b operation. 
    4343         */ 
    44         virtual void opupdt ( const vec &v, double w ) { 
    45                 bdm_error ( "not implemented" ); 
    46         }; 
     44        virtual void opupdt ( const vec &v, double w ) = 0; 
    4745 
    4846        /*! \brief Conversion to full matrix. 
    4947        */ 
    50  
    51         virtual mat to_mat() const { 
    52                 bdm_error ( "not implemented" ); 
    53                 return mat ( 0, 0 ); 
    54         } 
     48        virtual mat to_mat() const = 0; 
    5549 
    5650        /*! \brief Inplace symmetric multiplication by a SQUARE matrix \f$C\f$, i.e. \f$V = C*V*C'\f$ 
    5751        @param C multiplying matrix, 
    5852        */ 
    59         virtual void mult_sym ( const mat &C ) { 
    60                 bdm_error ( "not implemented" ); 
    61         }; 
     53        virtual void mult_sym ( const mat &C ) = 0; 
    6254 
    6355        /*! \brief Inplace symmetric multiplication by a SQUARE transpose of matrix \f$C\f$, i.e. \f$V = C'*V*C\f$ 
    6456        @param C multiplying matrix, 
    6557        */ 
    66         virtual void mult_sym_t ( const mat &C ) { 
    67                 bdm_error ( "not implemented" ); 
    68         } 
    69  
     58        virtual void mult_sym_t ( const mat &C ) = 0; 
    7059 
    7160        /*! 
     
    7362 
    7463        */ 
    75         virtual double logdet() const { 
    76                 bdm_error ( "not implemented" ); 
    77                 return 0; 
    78         }; 
     64        virtual double logdet() const = 0; 
    7965 
    8066        /*! 
     
    8369        Used e.g. in generating normal samples. 
    8470        */ 
    85         virtual vec sqrt_mult ( const vec &v )  const { 
    86                 bdm_error ( "not implemented" ); 
    87                 return vec ( 0 ); 
    88         }; 
     71        virtual vec sqrt_mult ( const vec &v )  const = 0; 
    8972 
    9073        /*! 
     
    9275 
    9376        */ 
    94         virtual double qform ( const vec &v ) const { 
    95                 bdm_error ( "not implemented" ); 
    96                 return 0; 
    97         }; 
     77        virtual double qform ( const vec &v ) const = 0; 
    9878 
    9979        /*! 
     
    10181 
    10282        */ 
    103         virtual double invqform ( const vec &v ) const { 
    104                 bdm_error ( "not implemented" ); 
    105                 return 0; 
    106         }; 
     83        virtual double invqform ( const vec &v ) const = 0; 
    10784 
    10885//      //! easy version of the 
     
    11087 
    11188        //! Clearing matrix so that it corresponds to zeros. 
    112         virtual void clear() { 
    113                 bdm_error ( "not implemented" ); 
    114         }; 
     89        virtual void clear() = 0; 
    11590 
    11691        //! Reimplementing common functions of mat: cols(). 
  • library/bdm/mex/mex_BM.h

    r756 r766  
    3838                return mxArray2vec ( tmp ); 
    3939        } 
     40 
     41        virtual vec sample() const NOT_IMPLEMENTED(0); 
     42 
     43        virtual double evallog ( const vec &val ) const NOT_IMPLEMENTED(0); 
     44         
     45        virtual vec variance() const NOT_IMPLEMENTED(0); 
    4046}; 
    4147UIREGISTER ( mexEpdf ); 
     
    9298                return est; 
    9399        } //tohle by melo zustat!! 
     100 
     101        virtual double logpred ( const vec &yt ) const  NOT_IMPLEMENTED(0); 
     102 
     103        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL); 
     104 
     105        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL); 
    94106}; 
    95107UIREGISTER ( mexBM ); 
  • library/bdm/mex/mex_datasource.h

    r737 r766  
    117117        } 
    118118 
     119        virtual void getdata ( vec &dt, const ivec &indeces ) NOT_IMPLEMENTED_VOID; 
     120 
     121        virtual void write ( const vec &ut, const ivec &indeces ) NOT_IMPLEMENTED_VOID; 
     122 
     123 
    119124        void step() { 
    120125                mxArray* tmp; 
  • library/bdm/stat/discrete.cpp

    r760 r766  
    8181                                inds ( j ) = gridsizes ( j ) - 1; 
    8282                        else { 
    83                                 inds ( j ) = ::round ( val ( j ) - ranges ( j ) ( 0 ) / steps ( j ) ); 
     83                                inds ( j ) = (int) ::round ( val ( j ) - ranges ( j ) ( 0 ) / steps ( j ) ); 
    8484                        } 
    8585                } 
  • library/bdm/stat/emix.cpp

    r760 r766  
    33namespace bdm { 
    44 
    5 void emix::set_parameters ( const vec &w0, const Array<shared_ptr<epdf> > &Coms0 ) { 
    6         w = w0 / sum ( w0 ); 
    7          
    8         bool isnamed = Coms0 ( 0 )->isnamed(); 
    9         RV tmp_rv; 
    10         if ( isnamed ) tmp_rv = Coms0 ( 0 )->_rv(); 
    11         Coms = Coms0; 
    12  
    13         if ( isnamed ) epdf::set_rv ( tmp_rv ); //coms aer already OK, no need for set_rv 
    14 } 
    15  
    165void emix::validate (){ 
    17         dim = Coms ( 0 )->dimension(); 
    18         bool isnamed = Coms ( 0 )->isnamed(); 
    19         int i; 
    20         RV tmp_rv; 
    21         if ( isnamed ) tmp_rv = Coms ( 0 )->_rv(); 
    22         for ( i = 0; i < w.length(); i++ ) { 
     6        bdm_assert ( Coms.length() > 0, "There has to be at least one component." ); 
     7 
     8        bdm_assert ( Coms.length() == w.length(), "It is obligatory to define weights of all the components." ); 
     9 
     10        double sum_w = sum ( w ); 
     11        bdm_assert ( sum_w != 0, "There has to be a component with non-zero weight." ); 
     12        w = w / sum_w; 
     13 
     14        int dim = Coms ( 0 )->dimension(); 
     15        for ( int i = 1; i < Coms.length(); i++ ) { 
    2316                bdm_assert ( dim == ( Coms ( i )->dimension() ), "Component sizes do not match!" ); 
    24                 bdm_assert ( !isnamed || tmp_rv.equal ( Coms ( i )->_rv() ), "Component RVs do not match!" ); 
    25         } 
    26  
    27 } 
    28  
    29  
     17                bdm_assert ( Coms(i)->isnamed() , "An unnamed component is forbidden here!" ); 
     18        } 
     19 
     20        set_rv ( Coms ( 0 )->_rv() );  
     21} 
     22 
     23void emix::from_setting ( const Setting &set ) { 
     24        UI::get ( Coms, set, "pdfs", UI::compulsory ); 
     25 
     26        if ( !UI::get ( w, set, "weights", UI::optional ) ) { 
     27                int len = Coms.length(); 
     28                w.set_length ( len ); 
     29                w = 1.0 / len; 
     30        } 
     31 
     32        validate(); 
     33} 
    3034 
    3135 
     
    109113        } 
    110114 
    111         target.set_parameters ( w, Cn ); 
     115        target._w() = w; 
     116        target._Coms() = Cn; 
    112117        target.validate(); 
    113118} 
     
    190195        } 
    191196 
    192         target.set_parameters ( w, Cn ); 
     197        target._w() = w; 
     198        target._Coms() = Cn; 
    193199        target.validate(); 
    194200} 
     
    313319                dls ( i ) = new datalink_m2m; 
    314320                dls ( i )->set_connection ( pdfs ( i )->_rv(), pdfs ( i )->_rvc(), _rv(), _rvc() ); 
     321        } 
     322} 
     323 
     324void mmix::validate() 
     325{        
     326        bdm_assert ( Coms.length() > 0, "There has to be at least one component." ); 
     327 
     328        bdm_assert ( Coms.length() == w.length(), "It is obligatory to define weights of all the components." ); 
     329 
     330        double sum_w = sum ( w ); 
     331        bdm_assert ( sum_w != 0, "There has to be a component with non-zero weight." ); 
     332        w = w / sum_w; 
     333 
     334        int dim = Coms ( 0 )->dimension(); 
     335        int dimc = Coms ( 0 )->dimensionc(); 
     336        for ( int i = 1; i < Coms.length(); i++ ) { 
     337                bdm_assert ( dim == ( Coms ( i )->dimension() ), "Component sizes do not match!" ); 
     338                bdm_assert ( dimc == ( Coms ( i )->dimensionc() ), "Component sizes do not match!" ); 
     339                bdm_assert ( Coms(i)->isnamed() , "An unnamed component is forbidden here!" ); 
     340        } 
     341 
     342        set_rv ( Coms ( 0 )->_rv() ); 
     343        set_rvc ( Coms ( 0 )->_rvc() ); 
     344} 
     345 
     346void mmix::from_setting ( const Setting &set ) { 
     347        UI::get ( Coms, set, "pdfs", UI::compulsory ); 
     348 
     349        if ( !UI::get ( w, set, "weights", UI::optional ) ) { 
     350                int len = Coms.length(); 
     351                w.set_length ( len ); 
     352                w = 1.0 / len; 
    315353        } 
    316354} 
  • library/bdm/stat/emix.h

    r750 r766  
    5353                // adjust rv and rvc 
    5454 
    55                 set_rv ( rv ); // TODO co kdyby tohle samo uz nastavovalo dimension?!?! 
     55                set_rv ( rv );  
    5656                dim = rv._dsize(); 
    5757 
     
    8181                return tmp; 
    8282        } 
     83 
     84        //! Returns a sample from the density conditioned on \c cond, \f$x \sim epdf(rv|cond)\f$. \param cond is numeric value of \c rv 
     85        virtual vec samplecond ( const vec &cond ) NOT_IMPLEMENTED(0); 
     86 
    8387        //! Object takes ownership of nom and will destroy it 
    8488        void ownnom() { 
     
    9195                } 
    9296        } 
     97 
     98 
     99 
    93100 
    94101private: 
     
    120127        emix ( ) : epdf ( ) { } 
    121128 
    122         /*! 
    123           \brief Set weights \c w and components \c Coms 
    124  
    125           Shared pointers in Coms are kept inside this instance and 
    126           shouldn't be modified after being passed to this method. 
    127         */ 
    128         void set_parameters ( const vec &w, const Array<shared_ptr<epdf> > &Coms ); 
    129      
    130129        virtual void validate (); 
    131130 
     
    148147        shared_ptr<pdf> condition ( const RV &rv ) const; 
    149148 
    150         //Access methods 
    151         //! returns a pointer to the internal mean value. Use with Care! 
     149        //Access methods         
     150        //! returns a reference to the internal weights. Use with Care! 
    152151        vec& _w() { 
    153152                return w; 
    154153        } 
    155154 
    156         //!access function 
     155        /*! 
     156          \brief returns a reference to the internal array of components. Use with Care! Set components \c Coms 
     157 
     158          Shared pointers in Coms are kept inside this instance and 
     159          shouldn't be modified after being passed to this method. 
     160        */ 
     161        Array<shared_ptr<epdf>>& _Coms ( ) { 
     162                return Coms; 
     163        } 
     164 
     165        //! returns a reference to the internal components specified by index i. Use with Care! 
    157166        shared_ptr<epdf> _Coms ( int i ) { 
    158167                return Coms ( i ); 
     
    174183        //! \endcode 
    175184        //!@} 
    176         void from_setting ( const Setting &set ) { 
    177  
    178                 vec w0; 
    179                 Array<shared_ptr<epdf> > Coms0; 
    180  
    181                 UI::get ( Coms0, set, "pdfs", UI::compulsory ); 
    182  
    183                 if ( !UI::get ( w0, set, "weights", UI::optional ) ) { 
    184                         int len = Coms.length(); 
    185                         w0.set_length ( len ); 
    186                         w0 = 1.0 / len; 
    187                 } 
    188  
    189                 // TODO asi lze nacitat primocare do w a coms, jen co bude hotovy validate() 
    190                 set_parameters ( w0, Coms0 ); 
    191                 validate(); 
    192         } 
     185        void from_setting ( const Setting &set ); 
    193186}; 
    194187SHAREDPTR ( emix ); 
     
    284277        //! Data link for each pdfs 
    285278        Array<shared_ptr<datalink_m2m> > dls; 
    286  
    287 protected: 
    288         //! dummy epdf used only as storage for RV and dim 
    289         epdf iepdf; 
    290279 
    291280public: 
     
    330319        //!@} 
    331320        void from_setting ( const Setting &set ) { 
    332                 Array<shared_ptr<pdf> > atmp; //temporary Array 
    333                 UI::get ( atmp, set, "pdfs", UI::compulsory ); 
    334                 set_elements ( atmp ); 
     321                Array<shared_ptr<pdf> > temp_array;  
     322                UI::get ( temp_array, set, "pdfs", UI::compulsory ); 
     323                set_elements ( temp_array ); 
    335324        } 
    336325}; 
     
    418407        mmix() : Coms ( 0 ) { } 
    419408 
    420         //! Set weights \c w and components \c R 
    421         void set_parameters ( const vec &w0, const Array<shared_ptr<pdf> > &Coms0 ) { 
    422                 //!\todo check if all components are OK 
    423                 Coms = Coms0; 
    424                 w = w0; 
    425  
    426                 if ( Coms0.length() > 0 ) { 
    427                         set_rv ( Coms ( 0 )->_rv() ); 
    428                         dim = rv._dsize(); 
    429                         set_rvc ( Coms ( 0 )->_rvc() ); 
    430                         dimc = rvc._dsize(); 
    431                 } 
    432         } 
    433409        double evallogcond ( const vec &dt, const vec &cond ) { 
    434410                double ll = 0.0; 
     
    449425        //! \endcode 
    450426        //!@} 
    451         void from_setting ( const Setting &set ) { 
    452                 UI::get ( Coms, set, "pdfs", UI::compulsory ); 
    453  
    454                 // TODO ma byt zde, ci ve validate()? 
    455                 if ( Coms.length() > 0 ) { 
    456                         set_rv ( Coms ( 0 )->_rv() ); 
    457                         dim = rv._dsize(); 
    458                         set_rvc ( Coms ( 0 )->_rvc() ); 
    459                         dimc = rvc._dsize(); 
    460                 } 
    461  
    462                 if ( !UI::get ( w, set, "weights", UI::optional ) ) { 
    463                         int len = Coms.length(); 
    464                         w.set_length ( len ); 
    465                         w = 1.0 / len; 
    466                 } 
    467         } 
     427        void from_setting ( const Setting &set ); 
     428 
     429        virtual void validate(); 
    468430}; 
    469431SHAREDPTR ( mmix ); 
  • library/bdm/stat/exp_family.h

    r763 r766  
    4444 
    4545        //!Evaluate normalized log-probability 
    46         virtual double evallog_nn ( const vec &val ) const { 
    47                 bdm_error ( "Not implemented" ); 
    48                 return 0.0; 
    49         } 
     46        virtual double evallog_nn ( const vec &val ) const NOT_IMPLEMENTED(0); 
    5047 
    5148        //!Evaluate normalized log-probability 
     
    7370 
    7471        //!Power of the density, used e.g. to flatten the density 
    75         virtual void pow ( double p ) { 
    76                 bdm_error ( "Not implemented" ); 
    77         } 
     72        virtual void pow ( double p ) NOT_IMPLEMENTED_VOID; 
    7873}; 
    7974 
     
    9287        BMEF ( const BMEF &B ) : BM ( B ), frg ( B.frg ), last_lognc ( B.last_lognc ) {} 
    9388        //!get statistics from another model 
    94         virtual void set_statistics ( const BMEF* BM0 ) { 
    95                 bdm_error ( "Not implemented" ); 
    96         } 
     89        virtual void set_statistics ( const BMEF* BM0 ) NOT_IMPLEMENTED_VOID; 
    9790 
    9891        //! Weighted update of sufficient statistics (Bayes rule) 
     
    10295 
    10396        //!Flatten the posterior according to the given BMEF (of the same type!) 
    104         virtual void flatten ( const BMEF * B ) { 
    105                 bdm_error ( "Not implemented" ); 
    106         } 
    107  
    108         BMEF* _copy_ () const { 
    109                 bdm_error ( "function _copy_ not implemented for this BM" ); 
    110                 return NULL; 
    111         } 
     97        virtual void flatten ( const BMEF * B ) NOT_IMPLEMENTED_VOID; 
     98 
     99        double logpred ( const vec &yt ) const NOT_IMPLEMENTED(0); 
     100         
     101        virtual epdf* epredictor() const NOT_IMPLEMENTED(NULL); 
     102 
     103        virtual pdf* predictor() const NOT_IMPLEMENTED(NULL); 
    112104 
    113105        void to_setting ( Setting &set ) const 
    114106        {                        
    115107                BM::to_setting( set ); 
    116                 // TODO DOPLNIT? CHYBI FROM_SETTING PRO INSPIRACI 
     108                // TODO DOPLNIT? ALE MOMENTALNE CHYBI FROM_SETTING PRO INSPIRACI 
    117109        }  
    118110}; 
     
    11121104        //! Constructor 
    11131105        migamma_ref () : migamma (), refl () {}; 
     1106         
    11141107        //! Set value of \c k 
    11151108        void set_parameters ( double k0 , vec ref0, double l0 ) { 
     
    12661259                return X*Y._Ch();// return upper triangular part of the decomposition 
    12671260        } 
     1261 
    12681262        vec sample () const { 
    12691263                return vec ( sample_mat()._data(), p*p ); 
    12701264        } 
     1265 
     1266        virtual vec mean() const NOT_IMPLEMENTED(0); 
     1267 
     1268        //! return expected variance (not covariance!) 
     1269        virtual vec variance() const NOT_IMPLEMENTED(0); 
     1270 
     1271        virtual double evallog ( const vec &val ) const NOT_IMPLEMENTED(0); 
     1272 
    12711273        //! fast access function y0 will be copied into Y.Ch. 
    12721274        void setY ( const mat &Ch0 ) { 
    12731275                copy_vector ( dim, Ch0._data(), Y._Ch()._data() ); 
    12741276        } 
     1277 
    12751278        //! fast access function y0 will be copied into Y.Ch. 
    12761279        void _setY ( const vec &ch0 ) { 
    12771280                copy_vector ( dim, ch0._data(), Y._Ch()._data() ); 
    12781281        } 
     1282 
    12791283        //! access function 
    12801284        const chmat& getY() const { 
     
    13211325                W.setY ( iCh ); 
    13221326        } 
     1327 
    13231328        virtual double evallog ( const vec &val ) const { 
    13241329                chmat X ( p ); 
     
    13451350        }; 
    13461351 
     1352        virtual vec mean() const NOT_IMPLEMENTED(0); 
     1353 
     1354        //! return expected variance (not covariance!) 
     1355        virtual vec variance() const NOT_IMPLEMENTED(0); 
    13471356}; 
    13481357 
     
    14641473 
    14651474        //! inherited operation : NOT implemented 
    1466         vec sample() const { 
    1467                 bdm_error ( "Not implemented" ); 
    1468                 return vec(); 
    1469         } 
     1475        vec sample() const NOT_IMPLEMENTED(0); 
    14701476 
    14711477        //! inherited operation : NOT implemented 
    1472         double evallog ( const vec &val ) const { 
    1473                 bdm_error ( "Not implemented" ); 
    1474                 return 0.0; 
    1475         } 
     1478        double evallog ( const vec &val ) const NOT_IMPLEMENTED(0); 
    14761479 
    14771480        vec mean() const { 
  • library/bdm/stat/merger.h

    r763 r766  
    148148 
    149149        vec variance() const; 
     150 
     151        //! Compute log-probability of argument \c val 
     152        virtual double evallog ( const vec &val ) const NOT_IMPLEMENTED(0); 
     153 
     154        //! Returns a sample, \f$ x \f$ from density \f$ f_x()\f$ 
     155        virtual vec sample() const NOT_IMPLEMENTED(0); 
    150156 
    151157        //!@} 
  • library/tests/stresssuite/arx_stress.cpp

    r722 r766  
    2424        //Test constructor 
    2525        mat V0 = 0.00001 * eye ( ord + 1 ); 
    26         V0 ( 0.0 ) = 1; // 
     26        V0 ( 0 ) = 1; // 
    2727        double nu0 = ord + 5.0; 
    2828 
  • library/tests/stresssuite/mixtures_stress.cpp

    r750 r766  
    6767        emix Simul; 
    6868        Simul.set_rv ( x ); 
    69         Simul.set_parameters ( "0.5 0.6", Sim ); 
     69        Simul._w() = "0.5 0.6"; 
     70        Simul._Coms() = Sim; 
    7071        Simul.validate(); 
    7172 
  • library/tests/stresssuite/square_mat_stress.cpp

    r717 r766  
    6060 
    6161        tt.tic(); 
    62         TMatrix sqmat ( A ); 
     62        TMatrix sq_mat ( A ); 
    6363        double elapsed = tt.toc(); 
    6464        cout << "ctor(" << sz << " x " << sz << "): " << elapsed << " s" << endl; 
    6565 
    6666        tt.tic(); 
    67         mat res = sqmat.to_mat(); 
     67        mat res = sq_mat.to_mat(); 
    6868        elapsed = tt.toc(); 
    6969 
     
    7676        vec v = point->get_vector(); 
    7777        double w = point->get_scalar(); 
    78         TMatrix sqmat2 = sqmat; 
    79  
    80         tt.tic(); 
    81         sqmat2.opupdt ( v, w ); 
     78        TMatrix sq_mat2 = sq_mat; 
     79 
     80        tt.tic(); 
     81        sq_mat2.opupdt ( v, w ); 
    8282        elapsed = tt.toc(); 
    8383 
    8484        if ( !fast ) { 
    8585                mat expA = A + w * outer_product ( v, v ); 
    86                 CHECK_CLOSE ( expA, sqmat2.to_mat(), epsilon ); 
     86                CHECK_CLOSE ( expA, sq_mat2.to_mat(), epsilon ); 
    8787        } 
    8888 
     
    9292 
    9393        tt.tic(); 
    94         sqmat.inv ( invmat ); 
     94        sq_mat.inv ( invmat ); 
    9595        elapsed = tt.toc(); 
    9696 
     
    104104 
    105105        tt.tic(); 
    106         double ld = sqmat.logdet(); 
     106        double ld = sq_mat.logdet(); 
    107107        elapsed = tt.toc(); 
    108108 
     
    115115 
    116116        tt.tic(); 
    117         double q = sqmat.qform ( ones ( sz ) ); 
     117        double q = sq_mat.qform ( ones ( sz ) ); 
    118118        elapsed = tt.toc(); 
    119119 
     
    125125 
    126126        tt.tic(); 
    127         q = sqmat.qform ( v ); 
     127        q = sq_mat.qform ( v ); 
    128128        elapsed = tt.toc(); 
    129129 
     
    136136 
    137137        tt.tic(); 
    138         q = sqmat.invqform ( v ); 
     138        q = sq_mat.invqform ( v ); 
    139139        elapsed = tt.toc(); 
    140140 
     
    146146        cout << "invqform: " << elapsed << " s" << endl; 
    147147 
    148         TMatrix twice = sqmat; 
    149  
    150         tt.tic(); 
    151         twice += sqmat; 
     148        TMatrix twice = sq_mat; 
     149 
     150        tt.tic(); 
     151        twice += sq_mat; 
    152152        elapsed = tt.toc(); 
    153153 
     
    159159        cout << "+=: " << elapsed << " s" << endl; 
    160160 
    161         sqmat2 = sqmat; 
    162  
    163         tt.tic(); 
    164         sqmat2.mult_sym ( A ); 
     161        sq_mat2 = sq_mat; 
     162 
     163        tt.tic(); 
     164        sq_mat2.mult_sym ( A ); 
    165165        elapsed = tt.toc(); 
    166166 
    167167        if ( !fast ) { 
    168168                res = ( A * A ) * A.T(); 
    169                 CHECK_CLOSE ( res, sqmat2.to_mat(), epsilon ); 
     169                CHECK_CLOSE ( res, sq_mat2.to_mat(), epsilon ); 
    170170        } 
    171171 
  • library/tests/testsuite/emix_test.cpp

    r750 r766  
    3838        emix M1; 
    3939        M1.set_rv ( xy ); 
    40         M1.set_parameters ( vec ( "1" ), A1 ); 
     40        M1._Coms() = A1; 
     41        M1._w() = 1; 
    4142        M1.validate(); 
    4243 
     
    6869        emix M2; 
    6970        M2.set_rv ( xy ); 
    70         M2.set_parameters ( vec ( "1" ), A2 ); 
     71        M2._Coms() = A2; 
     72        M2._w() = 1; 
    7173        M2.validate(); 
    7274 
  • library/tests/testsuite/square_mat_test.cpp

    r717 r766  
    2020        mat A = A0 * A0.T(); 
    2121 
    22         TMatrix sqmat ( A ); 
    23         CHECK_EQUAL ( sz, sqmat.rows() ); 
    24         CHECK_EQUAL ( sz, sqmat.cols() ); 
     22        TMatrix sq_mat ( A ); 
     23        CHECK_EQUAL ( sz, sq_mat.rows() ); 
     24        CHECK_EQUAL ( sz, sq_mat.cols() ); 
    2525 
    26         mat res = sqmat.to_mat(); 
     26        mat res = sq_mat.to_mat(); 
    2727        CHECK_CLOSE ( A, res, epsilon ); 
    2828 
    2929        vec v = randu ( sz ); 
    3030        double w = randu(); 
    31         TMatrix sqmat2 = sqmat; 
    32         sqmat2.opupdt ( v, w ); 
     31        TMatrix sq_mat2 = sq_mat; 
     32        sq_mat2.opupdt ( v, w ); 
    3333 
    3434        res = A + w * outer_product ( v, v ); 
    35         CHECK_CLOSE ( res, sqmat2.to_mat(), epsilon ); 
     35        CHECK_CLOSE ( res, sq_mat2.to_mat(), epsilon ); 
    3636 
    3737        TMatrix invmat ( sz ); 
    38         sqmat.inv ( invmat ); 
     38        sq_mat.inv ( invmat ); 
    3939        mat invA = inv ( A ); 
    4040        CHECK_CLOSE ( invA, invmat.to_mat(), epsilon ); 
    4141 
    4242        double d = det ( A ); 
    43         CHECK_CLOSE ( log ( d ), sqmat.logdet(), epsilon ); 
     43        CHECK_CLOSE ( log ( d ), sq_mat.logdet(), epsilon ); 
    4444 
    45         double q = sqmat.qform ( ones ( sz ) ); 
     45        double q = sq_mat.qform ( ones ( sz ) ); 
    4646        CHECK_CLOSE ( sumsum ( A ), q, epsilon ); 
    4747 
    48         q = sqmat.qform ( v ); 
     48        q = sq_mat.qform ( v ); 
    4949        double r = ( A * v ) * v; 
    5050        CHECK_CLOSE ( r, q, epsilon ); 
    5151 
    52         q = sqmat.invqform ( v ); 
     52        q = sq_mat.invqform ( v ); 
    5353        r = ( invA * v ) * v; 
    5454        CHECK_CLOSE ( r, q, epsilon ); 
    5555 
    56         sqmat2 = sqmat; 
    57         sqmat2.clear(); 
    58         CHECK_EQUAL ( 0, sqmat2.qform ( ones ( sz ) ) ); 
     56        sq_mat2 = sq_mat; 
     57        sq_mat2.clear(); 
     58        CHECK_EQUAL ( 0, sq_mat2.qform ( ones ( sz ) ) ); 
    5959 
    60         TMatrix twice = sqmat; 
    61         twice += sqmat; 
     60        TMatrix twice = sq_mat; 
     61        twice += sq_mat; 
    6262        res = 2 * A; 
    6363        CHECK_CLOSE ( res, twice.to_mat(), epsilon ); 
    6464 
    65         twice = sqmat; 
     65        twice = sq_mat; 
    6666        twice *= 2; 
    6767        CHECK_CLOSE ( res, twice.to_mat(), epsilon ); 
    6868 
    69         sqmat2 = sqmat; 
     69        sq_mat2 = sq_mat; 
    7070        mat B = randu ( sz, sz ); 
    71         sqmat2.mult_sym ( B ); 
     71        sq_mat2.mult_sym ( B ); 
    7272        res = ( B * A ) * B.T(); 
    73         CHECK_CLOSE ( res, sqmat2.to_mat(), epsilon ); 
     73        CHECK_CLOSE ( res, sq_mat2.to_mat(), epsilon ); 
    7474 
    7575        mat C = randu ( sz, sz - 1 ); 
    7676        TMatrix CAC ( sz - 1 ); 
    77         sqmat.mult_sym_t ( C, CAC ); 
     77        sq_mat.mult_sym_t ( C, CAC ); 
    7878        res = ( C.T() * A ) * C; 
    7979        CHECK_CLOSE ( res, CAC.to_mat(), epsilon ); 
    8080 
    81         sqmat2 = sqmat; 
    82         sqmat2.mult_sym_t ( B ); 
     81        sq_mat2 = sq_mat; 
     82        sq_mat2.mult_sym_t ( B ); 
    8383        res = ( B.T() * A ) * B; 
    84         CHECK_CLOSE ( res, sqmat2.to_mat(), epsilon ); 
     84        CHECK_CLOSE ( res, sq_mat2.to_mat(), epsilon ); 
    8585} 
    8686