25 #include <queso/BetaJointPdf.h>
26 #include <queso/GslVector.h>
27 #include <queso/GslMatrix.h>
32 template<
class V,
class M>
39 BaseJointPdf<V,M>(((std::string)(prefix)+
"uni").c_str(),domainSet),
56 template<
class V,
class M>
61 template<
class V,
class M>
64 const V& domainVector,
65 const V* domainDirection,
68 V* hessianEffect)
const
72 queso_require_msg(!(domainDirection || gradVector || hessianMatrix || hessianEffect),
"incomplete code for gradVector, hessianMatrix and hessianEffect calculations");
75 return exp(this->lnValue(domainVector,domainDirection,gradVector,hessianMatrix,hessianEffect));
78 template<
class V,
class M>
81 const V& domainVector,
82 const V* domainDirection,
85 V* hessianEffect)
const
87 queso_require_msg(!(domainDirection || gradVector || hessianMatrix || hessianEffect),
"incomplete code for gradVector, hessianMatrix and hessianEffect calculations");
91 for (
unsigned int i = 0; i < domainVector.sizeLocal(); ++i) {
92 if (m_normalizationStyle == 0) {
94 aux = log(m_env.basicPdfs()->betaPdfActualValue(domainVector[i],m_alpha[i],m_beta[i]));
97 aux = (m_alpha[i]-1.)*log(domainVector[i]) + (m_beta[i]-1.)*log(1.-domainVector[i]);
99 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
100 *m_env.subDisplayFile() <<
"In BetaJointPdf<V,M>::lnValue()"
101 <<
", m_normalizationStyle = " << m_normalizationStyle
102 <<
": domainVector[" << i <<
"] = " << domainVector[i]
103 <<
", m_alpha[" << i <<
"] = " << m_alpha[i]
104 <<
", m_beta[" << i <<
"] = " << m_beta[i]
105 <<
", log(pdf)= " << aux
110 result += m_logOfNormalizationFactor;
115 template<
class V,
class M>
121 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
122 *m_env.subDisplayFile() <<
"Entering BetaJointPdf<V,M>::computeLogOfNormalizationFactor()"
126 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
127 *m_env.subDisplayFile() <<
"Leaving BetaJointPdf<V,M>::computeLogOfNormalizationFactor()"
128 <<
", m_logOfNormalizationFactor = " << m_logOfNormalizationFactor
unsigned int displayVerbosity() const
BetaJointPdf(const char *prefix, const VectorSet< V, M > &domainSet, const V &alpha, const V &beta)
Constructor.
A templated class for handling sets.
double lnValue(const V &domainVector, const V *domainDirection, V *gradVector, M *hessianMatrix, V *hessianEffect) const
Logarithm of the value of the Beta PDF.
double computeLogOfNormalizationFactor(unsigned int numSamples, bool updateFactorInternally) const
Computes the logarithm of the normalization factor.
A templated (base) class for handling joint PDFs.
double commonComputeLogOfNormalizationFactor(unsigned int numSamples, bool updateFactorInternally) const
Common method (to the derived classes) to compute the logarithm of the normalization factor...
~BetaJointPdf()
Destructor.
#define queso_require_equal_to_msg(expr1, expr2, msg)
const BaseEnvironment & m_env
#define queso_require_msg(asserted, msg)
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
A class for handling Beta joint PDFs.
double actualValue(const V &domainVector, const V *domainDirection, V *gradVector, M *hessianMatrix, V *hessianEffect) const
Actual value of the Beta PDF.