int main(int argc, char *argv[]){ coord place, target, temp; init(argc, argv); place.x = place.y = 0; target.x = target.y = SIZE/2; AT(place).refs = 1; AT(place).car.hdr = LOCAL; PTR_OF_COORD(AT(place).car, target); AT(place).cdr.hdr = NIL; AT(target).refs = 1; AT(target).car.hdr = INTEGER; AT(target).car.car = 2; AT(target).cdr.hdr = INTEGER; AT(target).cdr.car = 2; COORD_OF_PTR(temp, AT(place).car); debug(1, "AT(place).car -> (%d,%d,%d,%d,%d)\n", AT(place).car.hdr, temp.x, temp.y, temp.X, temp.Y); show_all(place); update_ref_msg(place, 1); run_down(place); debug(1, "AT(place).refs %d == 2\n", AT(place).refs); SHOULD(AT(place).refs == 2); debug(1, "AT(target).refs %d == 2\n", AT(target).refs); SHOULD(AT(target).refs == 2); update_ref_msg(place, -1); run_down(place); show_all(place); debug(1, "AT(place).refs %d == 1\n", AT(place).refs); SHOULD(AT(place).refs == 1); debug(1, "AT(target).refs %d == 1\n", AT(target).refs); SHOULD(AT(target).refs == 1); update_ref_msg(place, -1); run_down(place); show_all(place); debug(1, "AT(place).refs %d == 0\n", AT(place).refs); SHOULD(AT(place).refs == 0); debug(1, "AT(target).refs %d == 0\n", AT(target).refs); SHOULD(AT(target).refs == 0); /* return indicates success or failure */ return fail_p; }
void RGFlow<Two_scale>::solve() { check_setup(); unsigned int max_iterations = get_max_iterations(); if (models.empty() || max_iterations == 0) return; initial_guess(); iteration = 0; bool accuracy_reached = false; while (iteration < max_iterations && !accuracy_reached) { update_running_precision(); run_up(); run_down(); accuracy_reached = accuracy_goal_reached(); ++iteration; } apply_lowest_constraint(); if (!accuracy_reached) throw NoConvergenceError(max_iterations); VERBOSE_MSG("convergence reached after " << iteration << " iterations"); }
int main(int argc, char *argv[]){ coord place; char expr0[] = "= 2 2"; char expr1[] = "= 2 3"; char expr2[] = "< 2 3"; char expr3[] = "< 3 3"; char expr4[] = "= 0 1 1 2"; char expr5[] = "= 1 1 1 2"; char expr6[] = "((= 1 1) 1 2)"; init(argc, argv); place.x = place.y = SIZE/2; run_expr(expr0, place); run_down(place); SHOULD(count(LAMBDA) == 2); SHOULD(count(SYMBOL) == 1); if(fail_p) ERROR("failed expr0"); run_expr(expr1, place); run_down(place); SHOULD(count(LAMBDA) == 2); SHOULD(count(SYMBOL) == 1); if(fail_p) ERROR("failed expr1"); run_expr(expr2, place); run_down(place); SHOULD(count(LAMBDA) == 2); SHOULD(count(SYMBOL) == 1); if(fail_p) ERROR("failed expr2"); run_expr(expr3, place); run_down(place); SHOULD(count(LAMBDA) == 2); SHOULD(count(SYMBOL) == 1); if(fail_p) ERROR("failed expr3"); expr_to_expr(expr4); debug(2, "lambda:%d symbol:%d integer:%d\n", count(LAMBDA), count(SYMBOL), count(INTEGER)); SHOULD(count(LAMBDA) == 0); SHOULD(count(SYMBOL) == 0); SHOULD(count(INTEGER) == 1); if(fail_p) ERROR("failed expr4"); expr_to_expr(expr5); debug(2, "lambda:%d symbol:%d integer:%d\n", count(LAMBDA), count(SYMBOL), count(INTEGER)); SHOULD(count(LAMBDA) == 0); SHOULD(count(SYMBOL) == 0); SHOULD(count(INTEGER) == 1); if(fail_p) ERROR("failed expr5"); expr_to_expr(expr6); debug(2, "lambda:%d symbol:%d integer:%d\n", count(LAMBDA), count(SYMBOL), count(INTEGER)); SHOULD(count(LAMBDA) == 0); SHOULD(count(SYMBOL) == 0); SHOULD(count(INTEGER) == 1); if(fail_p) ERROR("failed expr6"); /* return indicates success or failure */ return fail_p; }