void gen_ccls_cnf(tak_mak& gg, canon_cnf& the_cnf, long max_ccl_sz, long max_num_ccls_cnf, long max_num_vars_cnf) { //bj_ostream& os = bj_out; row<canon_clause*>& all_ccl = the_cnf.cf_clauses; BRAIN_CK(all_ccl.is_empty()); long cnf_sz = gg.gen_rand_int32_ie(1, max_num_ccls_cnf); long num_vars = gg.gen_rand_int32_ie(2, max_num_vars_cnf); //os << "cnf_sz=" << cnf_sz << bj_eol; //os << "num_vars=" << num_vars << bj_eol; long tot_lits = 0; long tot_twolits = 0; long ii = 0; for(ii = 0; ii < cnf_sz; ii++){ canon_clause& ccl_1 = the_cnf.add_clause(GSKE); row<long>& rr_1 = *((row<long>*)(&ccl_1)); gen_clause(gg, rr_1, max_ccl_sz, num_vars); tot_lits += ccl_1.cc_size(); if(ccl_1.cc_size() == 2){ tot_twolits++; } } all_ccl.mix_sort(cmp_clauses); finish_cnf(the_cnf, num_vars, tot_lits, tot_twolits); }
gen_pred (struct pred_list *pred, struct put_fnct *put) { int i; struct clause_list *clause; sprintf (buf, "pl_%s_%d (struct coroutine *k", pred->name, pred->n_args); sput (put, buf); for (i=0; i<pred->n_args; i++) { sprintf (buf, ", expr a%d", i); sput (put, buf); } sput (put, ")\n{\nexpr nx[MAX_NEW_CONS];\n"); sput (put, "int pnx, i;\nstruct process_list *alt_process;\n"); sput (put, "\tpnx = 0;\n\tbegin_decl ();\n"); for (i=0; i<pred->n_args; i++) { sprintf (buf, "\tdecl_expr (&a%d);\n", i); sput (put, buf); } /* sput (put, "\tfor (i=0; i<MAX_NEW_CONS; i++)\n\t{\n"); sput (put, "\t\tnx[i] = 0;\n"); sput (put, "\t\tdle (nx[i]);\n\t}\n"); */ sput (put, "\tfor (i=0; i<MAX_NEW_CONS; i++)\n"); sput (put, "\t\tdle (nx[i]);\n"); sput (put, "#ifdef TRACE\n"); for (i=0; i<pred->n_args; i++) { sprintf (buf, "\tprintf (\"\\n%s: a%d = \"); print_expr (a%d);\n", pred->name, i, i); sput (put, buf); } sput (put, "#endif\n"); for (clause = pred->clauses; clause != NULL; clause = clause->next) { sput (put, "\tif (alt (k, 1, 0))\n\t{\n"); /* sput (put, "\talt_process = getpl() -> alt;\n\t{"); */ gen_clause (clause, pred->n_args, put); /* sput (put, "\t}\n\t} else\n"); */ sput (put, "\t} else\n"); } sput (put, "\tend (k);\n\tfree_expr ();\n}\n"); }
void test_sorted_ops2(){ bj_ostream& os = bj_out; os << "test_sorted_ops2" << bj_eol; unsigned long init_val = 10; tak_mak gg(init_val); row_long_t orig_rr; row_long_t tmp_rr; row_long_t to_red; row_long_t diff_rr; row_long_t shrd_rr; orig_rr.set_cap((SOR_MAX_VARS_TEST * 2) + 4); tmp_rr.set_cap((SOR_MAX_VARS_TEST * 2) + 4); to_red.set_cap((SOR_MAX_VARS_TEST * 2) + 4); diff_rr.set_cap((SOR_MAX_VARS_TEST * 2) + 4); shrd_rr.set_cap((SOR_MAX_VARS_TEST * 2) + 4); for(long aa = 0; aa < SOR_NUM_ASSIGS; aa++){ orig_rr.clear(); tmp_rr.clear(); to_red.clear(); diff_rr.clear(); shrd_rr.clear(); long num_vars = gg.gen_rand_int32_ie(2, SOR_MAX_VARS_TEST); gen_clause(gg, orig_rr, SOR_MAX_VARS_ROW, num_vars); orig_rr.copy_to(tmp_rr); long cc = 0; long num_red = gg.gen_rand_int32_ie(0, tmp_rr.size()); for(cc = 0; cc < num_red; cc++){ long idx_red = gg.gen_rand_int32_ie(0, tmp_rr.size()); long alp = tmp_rr.swap_pop(idx_red); to_red.push(alp); } to_red.mix_sort(cmp_canon_ids); tmp_rr.mix_sort(cmp_canon_ids); orig_rr.copy_to(diff_rr); //os << "BEFORE" << bj_eol; //os << "rr1=" << rr1 << bj_eol; //os << "rr2=" << rr2 << bj_eol; //os << "to_adh=" << to_adh << bj_eol; //os << "to_red=" << to_red << bj_eol; diff_rr.sorted_set_reduce(to_red, cmp_canon_ids); bool eq_sh = diff_rr.equal_to(tmp_rr); if(! eq_sh){ os << "FAILED=" << bj_eol; os << "orig_rr=" << orig_rr << bj_eol; os << "to_red=" << to_red << bj_eol; os << "diff_rr=" << diff_rr << bj_eol; os << "tmp_rr=" << tmp_rr << bj_eol; } TEST_CK(eq_sh); DBG( bool r_eq = false; cmp_is_sub cmp_val; cmp_val = cmp_sorted_rows<long>(to_red, orig_rr, cmp_canon_ids, r_eq); TEST_CK(cmp_val == k_lft_is_sub); cmp_val = cmp_sorted_rows<long>(diff_rr, orig_rr, cmp_canon_ids, r_eq); TEST_CK(cmp_val == k_lft_is_sub); ); diff_rr.sorted_set_shared(shrd_rr, to_red, cmp_canon_ids); TEST_CK(shrd_rr.is_empty()); //os << "AFTER" << bj_eol; //os << "rr1=" << rr1 << bj_eol; //os << "rr2=" << rr2 << bj_eol; //getchar(); os << CARRIAGE_RETURN << aa; os.flush(); //os << "ALL_OK" << bj_eol; }