gcd (int+- x, y)                                 gcd (int+- x, y)                                  gcd (int+- x, y)
 if (x > 0 && y > 0)                              if (x > 0 && y < 0)                               if (x == 0)
{                                                {                                                 {
  int+- a = x, b = y;                              return gcd (x, y * (-1));                         return 0;
                                                 }                                                 }
  while ()
  {                                              gcd (int+- x, y)                                  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
    {                                            gcd (int+- x, y)
      if (b > a) b -= a;                          if (x < 0 && y < 0)
      else break;                                {
    }                                              return gcd (x * (-1), y * (-1));
  }                                              }

  return a;
}
