BIE |
/home/weinberg/src/BIE/include/Dirichlet.h00001 // This is really -*- C++ -*- 00002 00003 00004 #ifndef Dirichlet_h 00005 #define Dirichlet_h 00006 00007 #include <values.h> 00008 #include <math.h> 00009 00010 #include "Distribution.h" 00011 #include "Gamma.h" 00012 00013 #include "Serializable.h" 00014 00015 00016 class Gamma; 00017 00018 namespace BIE { 00019 00023 class Dirichlet : public Distribution { 00024 00025 private: 00026 00027 vector<double> A; 00028 int n; 00029 double sumA, varA; 00030 double pdf_fac; 00031 vector <Gamma*> gengam; 00032 00033 public: 00034 00036 Dirichlet(vector<double> a); 00037 00039 ~Dirichlet(); 00040 00042 Distribution* New() { 00043 return new Dirichlet(A); 00044 } 00045 00047 double PDF(State& x); 00048 00050 double logPDF(State& x); 00051 00053 vector<double> lower(void) { 00054 return vector<double>(n, 0.0); 00055 } 00056 00058 vector<double> upper(void) { 00059 return vector<double>(n, 1.0); 00060 } 00061 00063 vector<double> Mean(void) { 00064 vector<double> ans(A); 00065 for (int i=0; i<n; i++) ans[i] /= sumA; 00066 return ans; 00067 } 00068 00070 vector<double> StdDev(void) { 00071 vector<double> ans(n); 00072 for (int i=0; i<n; i++) 00073 ans[i] = sqrt( varA * A[i] * (sumA - A[i]) ); 00074 return ans; 00075 } 00076 00078 vector<double> Moments(int i); 00079 00081 vector<double> Sample(void); 00082 00083 // AUTO GENERATED BY ../persistence/autopersist.py 00084 protected: 00085 Dirichlet() {} 00086 private: 00087 friend class boost::serialization::access; 00088 template<class Archive> 00089 void serialize(Archive & ar, const unsigned int version) { 00090 this->pre_serialize(ar, version); 00091 try { 00092 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Distribution); 00093 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00094 } 00095 try { 00096 ar & BOOST_SERIALIZATION_NVP(A); 00097 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00098 } 00099 try { 00100 ar & BOOST_SERIALIZATION_NVP(n); 00101 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00102 } 00103 try { 00104 ar & BOOST_SERIALIZATION_NVP(sumA); 00105 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00106 } 00107 try { 00108 ar & BOOST_SERIALIZATION_NVP(varA); 00109 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00110 } 00111 try { 00112 ar & BOOST_SERIALIZATION_NVP(pdf_fac); 00113 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00114 } 00115 try { 00116 ar & BOOST_SERIALIZATION_NVP(gengam); 00117 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00118 } 00119 this->post_serialize(ar, version); 00120 } 00121 00122 }; 00123 00124 } // namespace BIE 00125 BIE_CLASS_TYPE_INFO(BIE::Dirichlet) 00126 BIE_CLASS_EXPORT_KEY(BIE::Dirichlet) 00127 #endif 00128 Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:10 2010 by
|