14#define RANK(A) ((A).rank)
15#define SMALLER(A, B) (RANK (A) < RANK (B))
17#define RADIX_SORT_BUMP_LIMIT 32
22 LOG (
"quick sorting %zu analyzed variables", size);
25 LOG (
"radix sorting %zu analyzed variables", size);
33 const double max_score = kissat_max_score_on_heap (
scores);
35 "maximum score %g increment %g", max_score,
solver->scinc);
36 const double rescale =
MAX (max_score,
solver->scinc);
38 const double factor = 1.0 / rescale;
46 const double old_scinc =
solver->scinc;
47 const double decay =
GET_OPTION (decay) * 1e-3;
49 const double factor = 1.0 / (1.0 - decay);
50 const double new_scinc = old_scinc * factor;
51 LOG (
"new score increment %g = %g * %g", new_scinc, factor, old_scinc);
57static inline void bump_analyzed_variable_score (
kissat *
solver,
60 const double old_score = kissat_get_heap_score (
scores, idx);
61 const double inc =
solver->scinc;
62 const double new_score = old_score + inc;
63 LOG (
"new score[%u] = %g = %g + %g", idx, new_score, old_score, inc);
70 bump_analyzed_variable_score (
solver, idx);
73static void bump_analyzed_variable_scores (
kissat *
solver) {
77 if (
flags[idx].active)
78 bump_analyzed_variable_score (
solver, idx);
83static void move_analyzed_variables_to_front_of_queue (
kissat *
solver) {
100 kissat_move_to_front (
solver, idx);
109 move_analyzed_variables_to_front_of_queue (
solver);
111 bump_analyzed_variable_scores (
solver);
112 ADD (literals_bumped, bumped);
120 if (
ACTIVE (idx) && !kissat_heap_contains (
scores, idx))
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void kissat_bump_score_increment(kissat *solver)
void kissat_bump_variable(kissat *solver, unsigned idx)
void kissat_rescale_scores(kissat *solver)
void kissat_update_scores(kissat *solver)
void kissat_bump_analyzed(kissat *solver)
#define RADIX_SORT_BUMP_LIMIT
#define all_stack(T, E, S)
void kissat_rescale_heap(kissat *solver, heap *heap, double factor)
#define all_variables(IDX)
#define KISSAT_assert(ignore)
#define SORT_STACK(TYPE, S, LESS)
#define kissat_phase(...)
#define RADIX_STACK(VTYPE, RTYPE, S, RANK)