[Python-checkins] python/dist/src/Objects longobject.c,1.136,1.137

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Wed, 14 Aug 2002 09:36:26 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv23186/python/objects

Modified Files:
	longobject.c 
Log Message:
k_mul() comments:  Explained why there's always enough room to subtract
ah*bh and al*bl.  This is much easier than explaining why that's true
for (ah+al)*(bh+bl), and follows directly from the simple part of the
(ah+al)*(bh+bl) explanation.


Index: longobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v
retrieving revision 1.136
retrieving revision 1.137
diff -C2 -d -r1.136 -r1.137
*** longobject.c	13 Aug 2002 20:42:00 -0000	1.136
--- longobject.c	14 Aug 2002 16:36:23 -0000	1.137
***************
*** 1792,1795 ****
--- 1792,1802 ----
  so ah+al has at most shift digits + 1 bit, and (ah+al)*(bh+bl) has at most
  2*shift+1 digits + 2 bits, and again 2*shift+2 digits is enough to hold it.
+ 
+ Note that the "lazy" analysis is enough to show that there's always enough
+ room to subtract al*bl and ah*bh.  al and bl each have no more than shift
+ digits, so al*bl has no more than 2*shift, so there's at least one digit
+ to spare in the remaining allocated digits.  The same is true for ah*bh when
+ bsize is even.  When bsize is odd, ah*bh has at most 2*shift+2 digits, and
+ there are at least that many remaining allocated digits when bsize is odd.
  */