Changeset 693 for library/bdm/stat/exp_family.h
- Timestamp:
- 11/02/09 17:27:29 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/stat/exp_family.h
r679 r693 163 163 vec variance() const {return diag (R.to_mat());} 164 164 // mlnorm<sq_T>* condition ( const RV &rvn ) const ; <=========== fails to cmpile. Why? 165 shared_ptr< mpdf> condition ( const RV &rvn ) const;165 shared_ptr<pdf> condition ( const RV &rvn ) const; 166 166 167 167 // target not typed to mlnorm<sq_T, enorm<sq_T> > & … … 169 169 // haven't finished defining enorm yet), but the type 170 170 // is required 171 void condition ( const RV &rvn, mpdf &target ) const;171 void condition ( const RV &rvn, pdf &target ) const; 172 172 173 173 shared_ptr<epdf> marginal (const RV &rvn ) const; … … 367 367 */ 368 368 369 class mDirich: public mpdf_internal<eDirich> {369 class mDirich: public pdf_internal<eDirich> { 370 370 protected: 371 371 //! constant \f$ k \f$ of the random walk … … 376 376 vec betac; 377 377 public: 378 mDirich(): mpdf_internal<eDirich>(), _beta(iepdf._beta()){};378 mDirich(): pdf_internal<eDirich>(), _beta(iepdf._beta()){}; 379 379 void condition (const vec &val) {_beta = val/k+betac; }; 380 380 /*! Create Dirichlet random walk … … 391 391 */ 392 392 void from_setting (const Setting &set) { 393 mpdf::from_setting (set); // reads rv and rvc393 pdf::from_setting (set); // reads rv and rvc 394 394 if (_rv()._dsize()>0){ 395 395 rvc = _rv().copy_t(-1); … … 408 408 } 409 409 void validate() { 410 mpdf_internal<eDirich>::validate();410 pdf_internal<eDirich>::validate(); 411 411 bdm_assert(_beta.length()==betac.length(),"beta0 and betac are not compatible"); 412 412 if (_rv()._dsize()>0){ … … 644 644 645 645 //! Uniform density with conditional mean value 646 class mguni : public mpdf_internal<euni>{646 class mguni : public pdf_internal<euni>{ 647 647 //! function of the mean value 648 648 shared_ptr<fnc> mean; … … 656 656 //! load from 657 657 void from_setting(const Setting &set){ 658 mpdf::from_setting(set); //reads rv and rvc658 pdf::from_setting(set); //reads rv and rvc 659 659 UI::get(delta,set,"delta",UI::compulsory); 660 660 mean = UI::build<fnc>(set,"mean",UI::compulsory); … … 672 672 */ 673 673 template < class sq_T, template <typename> class TEpdf = enorm > 674 class mlnorm : public mpdf_internal< TEpdf<sq_T> >674 class mlnorm : public pdf_internal< TEpdf<sq_T> > 675 675 { 676 676 protected: … … 683 683 //! \name Constructors 684 684 //!@{ 685 mlnorm() : mpdf_internal< TEpdf<sq_T> >() {};686 mlnorm (const mat &A, const vec &mu0, const sq_T &R) : mpdf_internal< TEpdf<sq_T> >() {685 mlnorm() : pdf_internal< TEpdf<sq_T> >() {}; 686 mlnorm (const mat &A, const vec &mu0, const sq_T &R) : pdf_internal< TEpdf<sq_T> >() { 687 687 set_parameters (A, mu0, R); 688 688 } … … 724 724 */ 725 725 void from_setting (const Setting &set) { 726 mpdf::from_setting (set);726 pdf::from_setting (set); 727 727 728 728 UI::get (A, set, "A", UI::compulsory); … … 734 734 }; 735 735 void validate() { 736 mpdf_internal<TEpdf<sq_T> >::validate();736 pdf_internal<TEpdf<sq_T> >::validate(); 737 737 bdm_assert (A.rows() == mu_const.length(), "mlnorm: A vs. mu mismatch"); 738 738 bdm_assert (A.rows() == _R().rows(), "mlnorm: A vs. R mismatch"); … … 747 747 SHAREDPTR2 ( mlnorm, chmat ); 748 748 749 //! Mpdf with general function for mean value749 //! pdf with general function for mean value 750 750 template<class sq_T> 751 class mgnorm : public mpdf_internal< enorm< sq_T > >751 class mgnorm : public pdf_internal< enorm< sq_T > > 752 752 { 753 753 private: … … 757 757 public: 758 758 //!default constructor 759 mgnorm() : mpdf_internal<enorm<sq_T> >() { }759 mgnorm() : pdf_internal<enorm<sq_T> >() { } 760 760 //!set mean function 761 761 inline void set_parameters (const shared_ptr<fnc> &g0, const sq_T &R0); … … 782 782 783 783 void from_setting (const Setting &set) { 784 mpdf::from_setting(set);784 pdf::from_setting(set); 785 785 shared_ptr<fnc> g = UI::build<fnc> (set, "g", UI::compulsory); 786 786 … … 863 863 The standard deviation of the walk is then: \f$\mu/\sqrt(k)\f$. 864 864 */ 865 class mgamma : public mpdf_internal<egamma>865 class mgamma : public pdf_internal<egamma> 866 866 { 867 867 protected: … … 875 875 public: 876 876 //! Constructor 877 mgamma() : mpdf_internal<egamma>(), k (0),877 mgamma() : pdf_internal<egamma>(), k (0), 878 878 _beta (iepdf._beta()) { 879 879 } … … 895 895 */ 896 896 void from_setting (const Setting &set) { 897 mpdf::from_setting (set); // reads rv and rvc897 pdf::from_setting (set); // reads rv and rvc 898 898 vec betatmp; // ugly but necessary 899 899 UI::get (betatmp, set, "beta", UI::compulsory); … … 903 903 } 904 904 void validate() { 905 mpdf_internal<egamma>::validate();905 pdf_internal<egamma>::validate(); 906 906 907 907 dim = _beta.length(); … … 921 921 The standard deviation of the walk is then: \f$ \mu/\sqrt(k)\f$. 922 922 */ 923 class migamma : public mpdf_internal<eigamma>923 class migamma : public pdf_internal<eigamma> 924 924 { 925 925 protected: … … 936 936 //! \name Constructors 937 937 //!@{ 938 migamma() : mpdf_internal<eigamma>(),938 migamma() : pdf_internal<eigamma>(), 939 939 k (0), 940 940 _alpha (iepdf._alpha()), … … 942 942 } 943 943 944 migamma (const migamma &m) : mpdf_internal<eigamma>(),944 migamma (const migamma &m) : pdf_internal<eigamma>(), 945 945 k (0), 946 946 _alpha (iepdf._alpha()), … … 1074 1074 1075 1075 */ 1076 class mlognorm : public mpdf_internal<elognorm>1076 class mlognorm : public pdf_internal<elognorm> 1077 1077 { 1078 1078 protected: … … 1084 1084 public: 1085 1085 //! Constructor 1086 mlognorm() : mpdf_internal<elognorm>(),1086 mlognorm() : pdf_internal<elognorm>(), 1087 1087 sig2 (0), 1088 1088 mu (iepdf._mu()) { … … 1221 1221 1222 1222 //! Random Walk on inverse Wishart 1223 class rwiWishartCh : public mpdf_internal<eiWishartCh>1223 class rwiWishartCh : public pdf_internal<eiWishartCh> 1224 1224 { 1225 1225 protected: … … 1474 1474 1475 1475 template<class sq_T> 1476 shared_ptr< mpdf> enorm<sq_T>::condition ( const RV &rvn ) const1476 shared_ptr<pdf> enorm<sq_T>::condition ( const RV &rvn ) const 1477 1477 { 1478 1478 mlnorm<sq_T> *tmp = new mlnorm<sq_T> (); 1479 shared_ptr< mpdf> narrow(tmp);1479 shared_ptr<pdf> narrow(tmp); 1480 1480 condition ( rvn, *tmp ); 1481 1481 return narrow; … … 1483 1483 1484 1484 template<class sq_T> 1485 void enorm<sq_T>::condition ( const RV &rvn, mpdf &target ) const1485 void enorm<sq_T>::condition ( const RV &rvn, pdf &target ) const 1486 1486 { 1487 1487 typedef mlnorm<sq_T> TMlnorm;