]> Cypherpunks repositories - gostls13.git/commitdiff
math/big: clarify comment on lehmerGCD overflow
authorBrian Kessler <brian.m.kessler@gmail.com>
Tue, 14 Nov 2017 06:05:45 +0000 (22:05 -0800)
committerRobert Griesemer <gri@golang.org>
Tue, 14 Nov 2017 17:32:39 +0000 (17:32 +0000)
A clarifying comment was added to indicate that overflow of a
single Word is not possible in the single digit calculation.
Lehmer's paper includes a proof of the bounds on the size of the
cosequences (u0, u1, u2, v0, v1, v2).

Change-Id: I98127a07aa8f8fe44814b74b2bc6ff720805194b
Reviewed-on: https://go-review.googlesource.com/77451
Reviewed-by: Robert Griesemer <gri@golang.org>
src/math/big/int.go

index a89f7a2d17266aa4977c11707c81ababf0efe178..135ebd083ffd39dff148860922e69b3c3a4c7e2d 100644 (file)
@@ -581,7 +581,10 @@ func (z *Int) lehmerGCD(a, b *Int) *Int {
                u0, u1, u2 = 0, 1, 0
                v0, v1, v2 = 0, 0, 1
 
-               // calculate the quotient and cosequences using Collins' stopping condition
+               // Calculate the quotient and cosequences using Collins' stopping condition.
+               // Note that overflow of a Word is not possible when computing the remainder
+               // sequence and cosequences since the cosequence size is bounded by the input size.
+               // See section 4.2 of Jebelean for details.
                for a2 >= v2 && a1-a2 >= v1+v2 {
                        q := a1 / a2
                        a1, a2 = a2, a1-q*a2