- 13 Aug, 2002 23 commits
-
-
Tim Peters authored
Boolean, so changed its default value from 1 to True.
-
Tim Peters authored
-
Tim Peters authored
-
Tim Peters authored
-
Tim Peters authored
-
Neal Norwitz authored
-
Neal Norwitz authored
-
Tim Peters authored
runtime.
-
Jeremy Hylton authored
-
Tim Peters authored
-
Tim Peters authored
space is no longer needed, so removed the code. It was only possible when a degenerate (ah->ob_size == 0) split happened, but after that fix went in I added k_lopsided_mul(), which saves the body of k_mul() from seeing a degenerate split. So this removes code, and adds a honking long comment block explaining why spilling out of bounds isn't possible anymore. Note: ff we end up spilling out of bounds anyway <wink>, an assert in v_iadd() is certain to trigger.
-
Barry Warsaw authored
1.1.4. Redhat hasn't upgraded but does provide a patched 1.1.3 package, so checking for 1.1.4 just makes life difficult.
-
Neal Norwitz authored
-
Guido van Rossum authored
Add some more rigor to slotmultipleinheritance().
-
Neal Norwitz authored
-
Neal Norwitz authored
-
Neal Norwitz authored
Fix already checked in by Guido
-
Fred Drake authored
-
Jason Tishler authored
Close the bug report again -- this time for Cygwin due to a newlib bug. See the following for the details: http://sources.redhat.com/ml/newlib/2002/msg00369.html Note that this commit is only a documentation (i.e., comment) change.
-
Guido van Rossum authored
(rev. 2.86). The other type is only disqualified from sq_repeat when it has the CHECKTYPES flag. This means that for extension types that only support "old-style" numeric ops, such as Zope 2's ExtensionClass, sq_repeat still trumps nb_multiply.
-
Tim Peters authored
"lopsided Karatsuba" driver also gets some exercise.
-
Tim Peters authored
test was written. So boosted the number of "digits" this generates, and also beefed up the "* / divmod" test to tickle numbers big enough to trigger the Karatsuba algorithm. It takes about 2 seconds now on my box.
-
Guido van Rossum authored
is an *unsigned* long.
-
- 12 Aug, 2002 17 commits
-
-
Guido van Rossum authored
-
Tim Peters authored
-
Fred Drake authored
updated when checkins are made, but I can get that updated when needed.
-
Tim Peters authored
k_mul() when inputs have vastly different sizes, and a little more efficient when they're close to a factor of 2 out of whack. I consider this done now, although I'll set up some more correctness tests to run overnight.
-
Guido van Rossum authored
-
Guido van Rossum authored
that file itself (because it's the parser that reports them).
-
Guido van Rossum authored
correct filename and line number are reported.
-
Jack Jansen authored
-
Guido van Rossum authored
-
Guido van Rossum authored
alive in the memo. This fixes SF bug 592567.
-
Tim Peters authored
multiply via Ctrl+C could cause a NULL-pointer dereference due to the assert.
-
Tim Peters authored
the good one <wink>. Also checked in a test-aid by mistake.
-
Tim Peters authored
cases, overflow the allocated result object by 1 bit. In such cases, it would have been brought back into range if we subtracted al*bl and ah*bh from it first, but I don't want to do that because it hurts cache behavior. Instead we just ignore the excess bit when it appears -- in effect, this is forcing unsigned mod BASE**(asize + bsize) arithmetic in a case where that doesn't happen all by itself.
-
Guido van Rossum authored
-
Guido van Rossum authored
1. You can now have __dict__ and/or __weakref__ in your __slots__ (before only __weakref__ was supported). This is treated differently than before: it merely sets a flag that the object should support the corresponding magic. 2. Dynamic types now always have descriptors __dict__ and __weakref__ thrust upon them. If the type in fact does not support one or the other, that descriptor's __get__ method will raise AttributeError. 3. (This is the reason for all this; it fixes SF bug 575229, reported by Cesar Douady.) Given this code: class A(object): __slots__ = [] class B(object): pass class C(A, B): __slots__ = [] the class object for C was broken; its size was less than that of B, and some descriptors on B could cause a segfault. C now correctly inherits __weakrefs__ and __dict__ from B, even though A is the "primary" base (C.__base__ is A). 4. Some code cleanup, and a few comments added.
-
Tim Peters authored
algorithm. MSVC 6 wasn't impressed <wink>. Something odd: the x_mul algorithm appears to get substantially worse than quadratic time as the inputs grow larger: bits in each input x_mul time k_mul time ------------------ ---------- ---------- 15360 0.01 0.00 30720 0.04 0.01 61440 0.16 0.04 122880 0.64 0.14 245760 2.56 0.40 491520 10.76 1.23 983040 71.28 3.69 1966080 459.31 11.07 That is, x_mul is perfectly quadratic-time until a little burp at 2.56->10.76, and after that goes to hell in a hurry. Under Karatsuba, doubling the input size "should take" 3 times longer instead of 4, and that remains the case throughout this range. I conclude that my "be nice to the cache" reworkings of k_mul() are paying.
-
Tim Peters authored
correct now, so added some final comments, did some cleanup, and enabled it for all long-int multiplies. The KARAT envar no longer matters, although I left some #if 0'ed code in there for my own use (temporary). k_mul() is still much slower than x_mul() if the inputs have very differenent sizes, and that still needs to be addressed.
-