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

  return a;
}
