ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
bump.c File Reference
#include "bump.h"
#include "analyze.h"
#include "inlineheap.h"
#include "inlinequeue.h"
#include "inlinevector.h"
#include "internal.h"
#include "logging.h"
#include "print.h"
#include "rank.h"
#include "sort.h"
Include dependency graph for bump.c:

Go to the source code of this file.

Macros

#define RANK(A)
 
#define SMALLER(A, B)
 
#define RADIX_SORT_BUMP_LIMIT   32
 

Functions

void kissat_rescale_scores (kissat *solver)
 
void kissat_bump_score_increment (kissat *solver)
 
void kissat_bump_variable (kissat *solver, unsigned idx)
 
void kissat_bump_analyzed (kissat *solver)
 
void kissat_update_scores (kissat *solver)
 

Macro Definition Documentation

◆ RADIX_SORT_BUMP_LIMIT

#define RADIX_SORT_BUMP_LIMIT   32

Definition at line 17 of file bump.c.

◆ RANK

#define RANK ( A)
Value:
((A).rank)

Definition at line 14 of file bump.c.

◆ SMALLER

#define SMALLER ( A,
B )
Value:
(RANK (A) < RANK (B))
#define RANK(A)
Definition bump.c:14

Definition at line 15 of file bump.c.

Function Documentation

◆ kissat_bump_analyzed()

void kissat_bump_analyzed ( kissat * solver)

Definition at line 105 of file bump.c.

105 {
106 START (bump);
107 const size_t bumped = SIZE_STACK (solver->analyzed);
108 if (!solver->stable)
109 move_analyzed_variables_to_front_of_queue (solver);
110 else
111 bump_analyzed_variable_scores (solver);
112 ADD (literals_bumped, bumped);
113 STOP (bump);
114}
#define SIZE_STACK(S)
Definition stack.h:19
#define ADD(NAME, DELTA)
#define solver
Definition kitten.c:211
#define STOP(P)
Definition profile.hpp:158
#define START(P)
Definition profile.hpp:150
Here is the caller graph for this function:

◆ kissat_bump_score_increment()

void kissat_bump_score_increment ( kissat * solver)

Definition at line 45 of file bump.c.

45 {
46 const double old_scinc = solver->scinc;
47 const double decay = GET_OPTION (decay) * 1e-3;
48 KISSAT_assert (0 <= decay), KISSAT_assert (decay <= 0.5);
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);
52 solver->scinc = new_scinc;
53 if (new_scinc > MAX_SCORE)
55}
void kissat_rescale_scores(kissat *solver)
Definition bump.c:30
#define MAX_SCORE
Definition bump.h:17
#define LOG(...)
#define KISSAT_assert(ignore)
Definition global.h:13
#define GET_OPTION(N)
Definition options.h:295
Here is the call graph for this function:

◆ kissat_bump_variable()

void kissat_bump_variable ( kissat * solver,
unsigned idx )

Definition at line 69 of file bump.c.

69 {
70 bump_analyzed_variable_score (solver, idx);
71}

◆ kissat_rescale_scores()

void kissat_rescale_scores ( kissat * solver)

Definition at line 30 of file bump.c.

30 {
31 INC (rescaled);
32 heap *scores = &solver->scores;
33 const double max_score = kissat_max_score_on_heap (scores);
34 kissat_phase (solver, "rescale", GET (rescaled),
35 "maximum score %g increment %g", max_score, solver->scinc);
36 const double rescale = MAX (max_score, solver->scinc);
37 KISSAT_assert (rescale > 0);
38 const double factor = 1.0 / rescale;
40 solver->scinc *= factor;
41 kissat_phase (solver, "rescale", GET (rescaled), "rescaled by factor %g",
42 factor);
43}
#define MAX(a, b)
Definition avl.h:23
#define INC(NAME)
void kissat_rescale_heap(kissat *solver, heap *heap, double factor)
Definition heap.c:69
#define kissat_phase(...)
Definition print.h:48
#define GET(NAME)
Definition statistics.h:416
Definition heap.h:19
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kissat_update_scores()

void kissat_update_scores ( kissat * solver)

Definition at line 116 of file bump.c.

116 {
117 KISSAT_assert (solver->stable);
118 heap *scores = SCORES;
119 for (all_variables (idx))
120 if (ACTIVE (idx) && !kissat_heap_contains (scores, idx))
121 kissat_push_heap (solver, scores, idx);
122}
#define ACTIVE
Definition espresso.h:129
#define all_variables(IDX)
Definition internal.h:269
#define SCORES
Definition internal.h:262