Ejemplo n.º 1
0
void Structure::assert_valid() {
    POMAGMA_INFO("Validating solver::Structure");

    // Check atoms.
    POMAGMA_ASSERT(term_arity(TermAtom::TOP) == TermArity::TOP, "Missing TOP");
    POMAGMA_ASSERT(term_arity(TermAtom::BOT) == TermArity::BOT, "Missing BOT");
    POMAGMA_ASSERT(term_arity(TermAtom::I) == TermArity::I, "Missing I");
    POMAGMA_ASSERT(term_arity(TermAtom::K) == TermArity::K, "Missing K");
    POMAGMA_ASSERT(term_arity(TermAtom::B) == TermArity::B, "Missing B");
    POMAGMA_ASSERT(term_arity(TermAtom::C) == TermArity::C, "Missing C");
    POMAGMA_ASSERT(term_arity(TermAtom::S) == TermArity::S, "Missing S");

    // Check terms.
    const Term max_term = term_arity_.size() - 1;
    for (Term term = 1; term <= max_term; ++term) {
        const TermArity arity = term_arity(term);
        switch (arity) {
            case TermArity::IVAR: {
                const unsigned rank = ivar_arg(term);
                POMAGMA_ASSERT_EQ(term, ivar(rank));
                break;
            }
            case TermArity::NVAR: {
                const std::string& name = nvar_arg(term);
                POMAGMA_ASSERT_EQ(term, nvar(name));
                break;
            }
            case TermArity::APP: {
                Term lhs;
                Term rhs;
                std::tie(lhs, rhs) = app_arg(term);
                POMAGMA_ASSERT_EQ(term, app(lhs, rhs));
                break;
            }
            case TermArity::JOIN: {
                Term lhs;
                Term rhs;
                std::tie(lhs, rhs) = join_arg(term);
                POMAGMA_ASSERT_EQ(term, join(lhs, rhs));
                break;
            }
            default:
                break;
        }
    }

    // Check literals.
    const Literal max_lit = less_arg_.size() - 1;
    for (Literal lit = 1; lit <= max_lit; ++lit) {
        Term lhs;
        Term rhs;

        std::tie(lhs, rhs) = literal_arg(lit);
        POMAGMA_ASSERT_EQ(lit, less(lhs, rhs));

        std::tie(lhs, rhs) = literal_arg(-lit);
        POMAGMA_ASSERT_EQ(-lit, nless(lhs, rhs));
    }
}
  void BinomialLogitSamplerRwm::draw(){
    const std::vector<Ptr<BinomialRegressionData> > &data(m_->dat());
    SpdMatrix ivar(pri_->siginv());
    Vector beta(m_->Beta());
    for(int i = 0; i < data.size(); ++i){
      Ptr<BinomialRegressionData> dp = data[i];
      double eta = beta.dot(dp->x());
      double prob = plogis(eta);
      ivar.add_outer(dp->x(), dp->n() * prob * (1-prob));
    }

    proposal_->set_ivar(ivar);
    beta = sam_.draw(beta);
    m_->set_Beta(beta);
  }
Ejemplo n.º 3
0
void PrettyPrinter::printScope(Scope *scope)
{
	std::string indentation(m_indent, ' ');
	//why constructor doesn't get const pointer?
	Scope::VarIterator ivar(scope);
	//Java-style iterators in C++?
	while (ivar.hasNext())
	{
		AstVar *var = ivar.next();
		m_out << indentation << typeToName(var->type()) << " "
		      << var->name() << ";" << std::endl;
	}
	
	Scope::FunctionIterator ifun(scope);
	while (ifun.hasNext()) ifun.next()->node()->visit(this);
}
Ejemplo n.º 4
0
  void MGXS::set_ivar()const{
    if(current_) return;

    SpdMatrix ivar(mod_->xtx());
    double w = diagonal_weight_;

    if(w>= 1.0) ivar.set_diag(ivar.diag());
    else if(w>0.0){
      ivar *= (1-w);
      ivar.diag()/=(1-w);
    }

    ivar.diag()+= Lambda_;
    double sigsq = mod_->sigsq();
    ivar/=sigsq;

    ivar_->set_ivar(ivar);
    current_ = true;
  }
 void ZGS::find_posterior_mode(double){
   double a = ivar()->alpha() + .5 * mod->suf()->n();
   double b = ivar()->beta() + .5 * mod->suf()->sumsq();
   mod->set_sigsq(b/(1+a));   // with respect to sigsq
 }