示例#1
0
文件: misc.hpp 项目: milthorpe/LibBi
void bi::cov(const GammaPdf& q, M1 Sigma) {
  /* pre-condition */
  BI_ASSERT(Sigma.size1() == q.size());
  BI_ASSERT(Sigma.size2() == q.size());

  real alpha = q.shape();
  real beta = q.scale();
  real sigma = alpha*std::pow(beta, 2);

  Sigma.clear();
  set_elements(diagonal(Sigma), sigma);
}
示例#2
0
文件: misc.hpp 项目: milthorpe/LibBi
void bi::cov(const InverseGammaPdf& q, M1 Sigma) {
  /* pre-condition */
  BI_ASSERT(Sigma.size1() == q.size());
  BI_ASSERT(Sigma.size2() == q.size());
  BI_ASSERT(q.shape() > 2.0);

  real alpha = q.shape();
  real beta = q.scale();
  real sigma = std::pow(beta, 2)/(std::pow(alpha - 1.0, 2)*(alpha - 2.0));

  Sigma.clear();
  set_elements(diagonal(Sigma), sigma);
}
示例#3
0
文件: misc.hpp 项目: milthorpe/LibBi
void bi::cov(const UniformPdf<V1>& q, M1 Sigma) {
  /* pre-condition */
  BI_ASSERT(Sigma.size1() == q.size());
  BI_ASSERT(Sigma.size2() == q.size());

  temp_host_vector<real>::type diff(q.size());
  diff = q.upper();
  sub_elements(diff, q.lower(), diff);
  sq_elements(diff, diff);

  Sigma.clear();
  axpy(1.0/12.0, diff, diagonal(Sigma));
}