[Patches] [ python-Patches-529408 ] fix random.gammavariate bug #527139
noreply@sourceforge.net
noreply@sourceforge.net
Mon, 13 May 2002 19:30:43 -0700
Patches item #529408, was opened at 2002-03-13 07:15
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=305470&aid=529408&group_id=5470
Category: Library (Lib)
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: John Machin (sjmachin)
Assigned to: Tim Peters (tim_one)
Summary: fix random.gammavariate bug #527139
Initial Comment:
random.gammavariate() doesn't work for gamma < 0.5
See detailed comment on bug # 527139
----------------------------------------------------------------------
>Comment By: Raymond Hettinger (rhettinger)
Date: 2002-05-13 21:30
Message:
Logged In: YES
user_id=80475
The tone sounds angry so I apologize for stepping on your
toes.
The good news is that my patch is essentially a subset of
yours (a subset that fixed the docs and the original bug).
Code improvements like deprecating stdgamma or improving
the docstrings are still possible. If you post any further
patches, I'll help them along as much as I can. As it
stands, the module leaves much to be desired.
----------------------------------------------------------------------
Comment By: John Machin (sjmachin)
Date: 2002-05-13 20:08
Message:
Logged In: YES
user_id=480138
Raymond, If you had read the copious notes that I posted on the original bug
report, you would have seen that I had (a)figured out what was wrong and (b)
promised a patch.
stdgamma with those extra arguments is an
abomination and should have never been there in the first place.
----------------------------------------------------------------------
Comment By: Raymond Hettinger (rhettinger)
Date: 2002-05-13 19:29
Message:
Logged In: YES
user_id=80475
John, I had fixed the original bug report without knowing
that this patch existed. Your patch would've saved me the
time to figure-out what was wrong :(
My patch took the minimal intervention approach (touching
the fewest lines) to fix the docs and allow the code to
work for alpha>0 without changing the user interface or
affecting existing code.
The commit is already in the CVS. Is there anything else
important that needs to be accomplished? The module is in
dire need of docstrings. Also, is it important to
deprecate stdgamma?
P.S. I did run my own eyeball test for means and variances
for alphas including .01 .1 .2 ... 8. Everything is
working fine now.
----------------------------------------------------------------------
Comment By: Michael Hudson (mwh)
Date: 2002-03-18 08:08
Message:
Logged In: YES
user_id=6656
I'm afraid this isn't going to make 2.2.1c1.
I'll try to consider it before 2.2.1 final, but I'd want to
be very certain about things before applying it there.
----------------------------------------------------------------------
Comment By: John Machin (sjmachin)
Date: 2002-03-18 08:05
Message:
Logged In: YES
user_id=480138
Attached is test script test_gamma.py. Passing test means:
eye-balling of relative "errors" reveals no nasties for at
least alpha >= 0.1
Note that Python's gammavariate() is not very accurate at
all for alpha < 0.1 approx. However neither are another two
methods that I tried (details in the file). I'll leave it
at that -- evidently alpha < 1.0 is "rare and difficult"
according to Marsaglia & Tsang.
----------------------------------------------------------------------
Comment By: John Machin (sjmachin)
Date: 2002-03-18 07:57
Message:
Logged In: YES
user_id=480138
Patch file random2.dif uploaded.
stdgamma() deprecated as per TP suggestion.
----------------------------------------------------------------------
Comment By: Tim Peters (tim_one)
Date: 2002-03-18 00:32
Message:
Logged In: YES
user_id=31435
John, if I were you <wink> I'd leave stdgamma alone, except
for adding this code to its start:
import warnings
warnings.warn("The stdgamma function is deprecated; "
"use gammavariate() instead",
DeprecationWarning)
Then we can remove stdgamma in 2.4. 2.2.1 will probably go
out on Monday night, so it would be nice to get this done
before then. OTOH, I expect there will be a 2.2.2 later,
so not a tragedy if it's not.
----------------------------------------------------------------------
Comment By: John Machin (sjmachin)
Date: 2002-03-17 15:46
Message:
Logged In: YES
user_id=480138
OK; I understand the problems with the patch. Not sure
about the way forward -- shall I prepare a patch that just
fixes gammavariate() and leaves stdgamma() there (with
warning in the comments: deprecated? will be removed in
2.x?)? Do you want it real soon now (for 2.2.1)?
----------------------------------------------------------------------
Comment By: Tim Peters (tim_one)
Date: 2002-03-17 14:42
Message:
Logged In: YES
user_id=31435
Michael, this definitely doesn't belong in 2.2.1 as-is,
because it removes a currently-exported name (buggy or not,
sensible or not, somebody may be using random.stdgamma now
and be happy with it).
John, if you're going to remove stdgamma, you need also to
remove its (string) name from the module's __all__ list
(right before the _verify() function).
----------------------------------------------------------------------
Comment By: Tim Peters (tim_one)
Date: 2002-03-16 12:38
Message:
Logged In: YES
user_id=31435
Possibly, depending on whether it belongs in 2.3 -- I'm
spread too thin to review it now.
----------------------------------------------------------------------
Comment By: Michael Hudson (mwh)
Date: 2002-03-16 11:53
Message:
Logged In: YES
user_id=6656
Tim, do you think this should go into 2.2.1?
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=305470&aid=529408&group_id=5470