• Brian Kessler's avatar
    math/big: allow all values for GCD · f5949b60
    Brian Kessler authored
    Allow the inputs a and b to be zero or negative to GCD
    with the following definitions.
    
    If x or y are not nil, GCD sets their value such that z = a*x + b*y.
    Regardless of the signs of a and b, z is always >= 0.
    If a == b == 0, GCD sets z = x = y = 0.
    If a == 0 and b != 0, GCD sets z = |b|, x = 0, y = sign(b) * 1.
    If a != 0 and b == 0, GCD sets z = |a|, x = sign(a) * 1, y = 0.
    
    Fixes #28878
    
    Change-Id: Ia83fce66912a96545c95cd8df0549bfd852652f3
    Reviewed-on: https://go-review.googlesource.com/c/go/+/164972
    Run-TryBot: Brian Kessler <brian.m.kessler@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
    f5949b60
int_test.go 51.9 KB