00001
00002
00003
00004
00005 #ifndef UniformDist_h
00006 #define UniformDist_h
00007
00008 #include <values.h>
00009 #include <math.h>
00010
00011 #include "Distribution.h"
00012 #include "Uniform.h"
00013
00014 #include "Serializable.h"
00015
00016
00017 namespace BIE {
00018
00022 class UniformDist : public Distribution {
00023
00024 public:
00025
00027
00028 UniformDist(double minv = 0.0, double maxv = 1.0);
00029
00031 ~UniformDist();
00032
00034 Distribution* New();
00035
00037 virtual double PDF(State& x);
00038
00040 virtual double logPDF(State& x);
00041
00043 virtual double CDF(State& x);
00044
00046 virtual vector<double> lower(void);
00047
00049 virtual vector<double> upper(void);
00050
00052 virtual vector<double> Mean(void);
00053
00055 virtual vector<double> StdDev(void);
00056
00058 virtual vector<double> Moments(int i);
00059
00061 virtual vector<double> Sample(void);
00062 private:
00063 double mean;
00064 double var;
00065 double a, b;
00066 Uniform * unit;
00067
00068
00069 private:
00070 friend class boost::serialization::access;
00071 template<class Archive>
00072 void serialize(Archive & ar, const unsigned int version) {
00073 this->pre_serialize(ar, version);
00074 try {
00075 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Distribution);
00076 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00077 }
00078 try {
00079 ar & BOOST_SERIALIZATION_NVP(mean);
00080 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00081 }
00082 try {
00083 ar & BOOST_SERIALIZATION_NVP(var);
00084 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00085 }
00086 try {
00087 ar & BOOST_SERIALIZATION_NVP(a);
00088 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00089 }
00090 try {
00091 ar & BOOST_SERIALIZATION_NVP(b);
00092 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00093 }
00094 try {
00095 ar & BOOST_SERIALIZATION_NVP(unit);
00096 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00097 }
00098 this->post_serialize(ar, version);
00099 }
00100
00101 };
00102
00103 }
00104 BIE_CLASS_TYPE_INFO(BIE::UniformDist)
00105 BIE_CLASS_EXPORT_KEY(BIE::UniformDist)
00106 #endif