Beispiel #1
0
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;
}
Beispiel #2
0
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");
}
Beispiel #3
0
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;
}