def gcd_lcm(a, b):
    saved_a, saved_b = abs(a), abs(b)
    a, b = saved_a, saved_b
    while b:
        a, b = b, a % b
    gcd = a
    lcm = 0 if saved_a == 0 or saved_b == 0 else (saved_a // gcd) * saved_b
    return (gcd, lcm)
