1
0
mirror of https://github.com/golang/go synced 2024-11-19 11:54:57 -07:00

math/big: clarify comment on lehmerGCD overflow

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>
This commit is contained in:
Brian Kessler 2017-11-13 22:05:45 -08:00 committed by Robert Griesemer
parent 5ea2360b66
commit 2955a8a6cc

View 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