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