void TEST_should_resize_integer_stack_on_push_to_full_integer_stack() { struct integer_stack_head * integer_stack = init_integer_stack(3); printf("\nRunning: TEST_should_resize_integer_stack_on_push_to_full_integer_stack."); printf("\nCurrent integer_stack size: %d,", integer_stack->size); push(integer_stack, 1); push(integer_stack, 2); push(integer_stack, 3); push(integer_stack, 4); printf("\nStack size after 4th push: %d,", integer_stack->size); }
void TEST_should_push_and_pop_three_integers_to_integer_stack() { struct integer_stack_head * integer_stack = init_integer_stack(3); printf("\nRunning: TEST_should_push_and_pop_three_integers_to_integer_stack."); push(integer_stack, 1); push(integer_stack, 2); push(integer_stack, 3); printf("\nStack pop: %d,", pop(integer_stack)); printf("\nStack pop: %d,", pop(integer_stack)); printf("\nStack pop: %d,", pop(integer_stack)); }
int32_t choose_clause_var(samp_table_t *table, samp_clause_t *clause, double rvar_probability) { rule_inst_table_t *rule_inst_table = &table->rule_inst_table; atom_table_t *atom_table = &table->atom_table; integer_stack_t *clause_var_stack = &table->clause_var_stack; uint32_t i, sidx, vidx; if (clause_var_stack->size == 0) { init_integer_stack(clause_var_stack, 0); } else { clear_integer_stack(clause_var_stack); } double choice = choose(); if (choice < rvar_probability) { /* flip a random unfixed variable */ for (i = 0; i < clause->num_lits; i++) { if (unfixed_tval(atom_table->assignment[var_of(clause->disjunct[i])])) push_integer_stack(i, clause_var_stack); } if (unfixed_tval(rule_inst_table->assignment[clause->rule_index])) push_integer_stack(clause->num_lits, clause_var_stack); /* all unfixed vars are now in clause_var_stack */ } else { int32_t dcost = INT32_MAX, vcost = 0; for (i = 0; i < clause->num_lits; i++) { if (unfixed_tval(atom_table->assignment[var_of(clause->disjunct[i])])) { cost_flip_unfixed_variable(table, var_of(clause->disjunct[i]), &vcost); if (dcost >= vcost) { if (dcost > vcost) { dcost = vcost; clear_integer_stack(clause_var_stack); } push_integer_stack(i, clause_var_stack); } } } if (unfixed_tval(rule_inst_table->assignment[clause->rule_index])) { cost_flip_unfixed_rule(table, clause->rule_index, &vcost); if (dcost > vcost) { dcost = vcost; clear_integer_stack(clause_var_stack); push_integer_stack(clause->num_lits, clause_var_stack); } } } //sidx = random_uint(length_integer_stack(clause_var_stack)); sidx = genrand_uint(length_integer_stack(clause_var_stack)); vidx = nth_integer_stack(sidx, clause_var_stack); return vidx; }
void TEST_should_abort_when_empty_integer_stack_popped() { struct integer_stack_head * head = init_integer_stack(1); pop(head); }