gcd 0 0 = 0

Alan Bawden Alan@LCS.MIT.EDU
Sun, 16 Dec 2001 02:34:05 -0500 (EST)


   From: "Simon Peyton-Jones" <simonpj@microsoft.com>
   Date: Fri, 14 Dec 2001 01:18:56 -0800
   ...
   If someone could write a sentence or two to explain why gcd 0 0 = 0,
   (ideally, brief ones I can put in the report by way of explanation),
   I think that might help those of us who have not followed the details
   of the discussion.  

Well, Serge and I have both offered variations on the real reason why
mathematicians agree that gcd 0 0 = 0.  I prefer my simpler
specialized-for-integers version, but I suspect even that is more
mathematics than you want.  At the other extreme, you could follow Knuth
and simply state: "it is convenient to set gcd(0, 0) = 0", but that seems a
bit unconvincing.

If I were in your shoes, I'd simply pass the buck to the authorities by
saying something like: "Mathematicians agree that gcd(0, 0) = 0".

Incidentally, somebody wrote here that Common Lisp defines `(gcd 0 0)' to
be 0, but it looks to me like all the language definition really does is
state that `(gcd)' (no arguments) is 0 because 0 "is an identity for this
operation" (which is technically false, but never mind), from which it is
natural for the reader to conclude that `(gcd 0 0)' must be 0.