25 #include <queso/JeffreysJointPdf.h> 
   26 #include <queso/GslVector.h> 
   27 #include <queso/GslMatrix.h> 
   32 template<
class V,
class M>
 
   53 template<
class V,
class M>
 
   58 template<
class V, 
class M>
 
   61   const V& domainVector,
 
   62   const V* domainDirection,
 
   65         V* hessianEffect)
 const 
   67   if (domainVector.sizeLocal() != this->m_domainSet.vectorSpace().dimLocal()) {
 
   68     queso_error_msg(
"There is an invalid input while computing JeffreysJointPdf<V,M>::actualValue()");
 
   71   if (gradVector   ) *gradVector     = m_domainSet.vectorSpace().zeroVector();
 
   72   if (hessianMatrix) *hessianMatrix *= 0.;
 
   73   if (hessianEffect) *hessianEffect  = m_domainSet.vectorSpace().zeroVector();
 
   75   if (domainDirection) {}; 
 
   78   for (
unsigned int i = 0; i < domainVector.sizeLocal(); ++i){
 
   79     if (domainVector[i] < 0.0 ) {
 
   80       queso_error_msg(
"The domain for Jeffreys prior should be greater than zero.");
 
   82     else if ((domainVector[i] == -INFINITY         ) ||
 
   83         (domainVector[i]      ==  INFINITY         ) ||
 
   84         (m_normalizationStyle != 0   )) {
 
   88     pdf = pdf * (1.0 / domainVector[i]);
 
   91   if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 54)) {
 
   92     *m_env.subDisplayFile() << 
" return pdf " << std::endl;
 
   99 template<
class V, 
class M>
 
  102   const V& domainVector,
 
  103   const V* domainDirection,
 
  106         V* hessianEffect)
 const 
  108   if (gradVector   ) *gradVector     = m_domainSet.vectorSpace().zeroVector();
 
  109   if (hessianMatrix) *hessianMatrix *= 0.0;
 
  110   if (hessianEffect) *hessianEffect  = m_domainSet.vectorSpace().zeroVector();
 
  112   if (domainVector[0]) {}; 
 
  113   if (domainDirection) {}; 
 
  117   for (
unsigned int i = 0; i < domainVector.sizeLocal(); ++i){
 
  118     if (domainVector[i] < 0.0) {
 
  119       queso_error_msg(
"The domain for Jeffreys prior should be greater than zero.");
 
  121     else if ((domainVector[i] == -INFINITY         ) ||
 
  122         (domainVector[i]      ==  INFINITY         ) ||
 
  123         (m_normalizationStyle != 0   )) {
 
  128     pdf = pdf * (1.0 / domainVector[i]);
 
  129     result = std::log(pdf);
 
  132   if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 54)) {
 
  133     *m_env.subDisplayFile() << 
" return log(pdf) " << std::endl;
 
  138 template<
class V, 
class M>
 
  144   if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
 
  145     *m_env.subDisplayFile() << 
"Warning: JeffreysJointPdf<V,M>::distributionMean() makes little sense" 
  148   m_domainSet.centroid(meanVector);
 
  151 template<
class V, 
class M>
 
  159 template<
class V, 
class M>
 
  165   if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
 
  166     *m_env.subDisplayFile() << 
"Entering JeffreysJointPdf<V,M>::computeLogOfNormalizationFactor()" 
  170   if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
 
  171     *m_env.subDisplayFile() << 
"Leaving JeffreysJointPdf<V,M>::computeLogOfNormalizationFactor()" 
  172                             << 
", m_logOfNormalizationFactor = " << m_logOfNormalizationFactor
 
  176   if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 54)) {
 
  177     *m_env.subDisplayFile() << 
" return normalization factor " << std::endl;
 
virtual void distributionMean(V &meanVector) const 
 
std::ofstream * subDisplayFile() const 
Access function for m_subDisplayFile (displays file on stream). 
 
virtual void distributionVariance(M &covMatrix) const 
Covariance matrix of the underlying random variable. 
 
double actualValue(const V &domainVector, const V *domainDirection, V *gradVector, M *hessianMatrix, V *hessianEffect) const 
Actual value of the jeffreys PDF. 
 
JeffreysJointPdf(const char *prefix, const VectorSet< V, M > &domainSet)
Constructor. 
 
A templated (base) class for handling joint PDFs. 
 
A class for handling jeffreys joint PDFs. 
 
A templated class for handling sets. 
 
#define queso_not_implemented()
 
double lnValue(const V &domainVector, const V *domainDirection, V *gradVector, M *hessianMatrix, V *hessianEffect) const 
Logarithm of the value of the jeffreys PDF. 
 
double commonComputeLogOfNormalizationFactor(unsigned int numSamples, bool updateFactorInternally) const 
Common method (to the derived classes) to compute the logarithm of the normalization factor...
 
unsigned int displayVerbosity() const 
 
const BaseEnvironment & m_env
 
~JeffreysJointPdf()
Destructor. 
 
#define queso_error_msg(msg)
 
double computeLogOfNormalizationFactor(unsigned int numSamples, bool updateFactorInternally) const 
Computes the logarithm of the normalization factor.