float get_score (size_t i) const { if (LOOM_DEBUG_LEVEL >= 1) { LOOM_ASSERT_LT(i, pos_to_hash_.size()); LOOM_ASSERT_LT(pos_to_hash_[i], hash_to_score_.size()); } auto hash = pos_to_hash_[i]; return hash_to_score_[hash]; }
void unsafe_add_consumer (size_t stage_number) { LOOM_ASSERT_LT(stage_number, stage_count_); assert_ready(); size_t count = ++consumer_counts_[stage_number]; guards_[stage_number].init(stage_number, count); assert_ready(); }
inline void CrossCat::validate () const { if (LOOM_DEBUG_LEVEL >= 1) { LOOM_ASSERT_LT(0, schema.total_size()); ValueSchema expected_schema; for (const auto & kind : kinds) { kind.model.validate(); kind.mixture.validate(kind.model); expected_schema += kind.model.schema; } LOOM_ASSERT_EQ(schema, expected_schema); for (auto & tare : tares) { schema.validate(tare); } } if (LOOM_DEBUG_LEVEL >= 2) { splitter.validate(schema, featureid_to_kindid, kinds.size()); for (size_t f = 0; f < featureid_to_kindid.size(); ++f) { size_t k = featureid_to_kindid[f]; const auto & featureids = kinds[k].featureids; LOOM_ASSERT( featureids.find(f) != featureids.end(), "kind.featureids is missing " << f); } for (size_t k = 0; k < kinds.size(); ++k) { for (size_t f : kinds[k].featureids) { LOOM_ASSERT_EQ(featureid_to_kindid[f], k); } } for (size_t k = 0; k < kinds.size(); ++k) { LOOM_ASSERT_EQ(kinds[k].model.tares.size(), tares.size()); } } if (LOOM_DEBUG_LEVEL >= 3) { std::vector<size_t> row_counts; for (const auto & kind : kinds) { row_counts.push_back(kind.mixture.count_rows()); } for (size_t k = 1; k < kinds.size(); ++k) { LOOM_ASSERT_EQ(row_counts[k], row_counts[0]); LOOM_ASSERT_EQ( kinds[k].mixture.maintaining_cache, kinds[0].mixture.maintaining_cache); } std::vector<ProductValue> partial_tares; for (size_t id = 0; id < tares.size(); ++id) { splitter.split(tares[id], partial_tares); for (size_t k = 0; k < kinds.size(); ++k) { LOOM_ASSERT_EQ(partial_tares[k], kinds[k].model.tares[id]); } } } }
static pair_t create_state (uint_fast64_t stage_number, count_t count) { LOOM_ASSERT_LT(stage_number, max_stage_count); LOOM_ASSERT_LE(count, 0xFFFFUL); return _state(stage_number, count); }