int gcd (int+- x, y)                             int gcd (int+- x, y)                              int gcd (int+- x, y)
     if (x > 0 && y > 0)                              if (x > 0 && y < 0)                               if (x == 0)
{                                                {                                                 {
  int+- -w a = x, -w b = y;                        return gcd (x, y * (-1));                         return 0;
                                                 }                                                 }
  while ()
  {                                              int gcd (int+- x, y)                              int gcd (int+- x, y)
    if (a > b)                                        if (x < 0 && y > 0)                               if (y == 0)
    {                                            {                                                 {
      a -= b;                                      return gcd (x * (-1), y);                         error (ERR_DIVISION_BY_ZERO);
    }                                            }                                                 }
    else
    {                                            int gcd (int+- x, y)
      if (b > a) b -= a;                              if (x < 0 && y < 0)
      else break;                                {
    }                                              return gcd (x * (-1), y * (-1));
  }                                              }

  return a;
}
