Issue28111
Created on 2016-09-13 02:20 by steven.daprano, last changed 2022-04-11 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| geometric_mean_long_input.py | mark.dickinson, 2016-10-03 19:18 | review | ||
| geometric_mean_long_input_v2.py | mark.dickinson, 2016-10-03 20:08 | review | ||
| Messages (8) | |||
|---|---|---|---|
| msg276149 - (view) | Author: Steven D'Aprano (steven.daprano) * ![]() |
Date: 2016-09-13 02:20 | |
>>> statistics.geometric_mean([0.7 for _ in range(5000)]) Traceback (most recent call last): File "/Users/mdickinson/Python/cpython-git/Lib/statistics.py", line 362, in float_nroot isinfinity = math.isinf(x) OverflowError: int too large to convert to float See #27975 and #27181 |
|||
| msg276201 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2016-09-13 07:40 | |
For reference, here's the full traceback. Issue #27975 isn't relevant here - the problem is an out-of-range integer being passed to the math.pow operation. taniyama:cpython-git mdickinson$ ./python.exe Python 3.7.0a0 (default, Sep 13 2016, 08:36:28) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import statistics >>> statistics.geometric_mean(0.7 for _ in range(5000)) Traceback (most recent call last): File "/Users/mdickinson/Python/cpython-git/Lib/statistics.py", line 343, in float_nroot isinfinity = math.isinf(x) OverflowError: int too large to convert to float During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/mdickinson/Python/cpython-git/Lib/statistics.py", line 578, in geometric_mean s = 2**p * _nth_root(2**q, n) File "/Users/mdickinson/Python/cpython-git/Lib/statistics.py", line 330, in nth_root return _nroot_NS.float_nroot(x, n) File "/Users/mdickinson/Python/cpython-git/Lib/statistics.py", line 345, in float_nroot return _nroot_NS.bignum_nroot(x, n) File "/Users/mdickinson/Python/cpython-git/Lib/statistics.py", line 472, in bignum_nroot b = 2**q * _nroot_NS.nroot(2**r, n) File "/Users/mdickinson/Python/cpython-git/Lib/statistics.py", line 365, in nroot r1 = math.pow(x, 1.0/n) OverflowError: int too large to convert to float |
|||
| msg276733 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2016-09-16 18:24 | |
See msg276732 in issue 27761 for a possible solution. |
|||
| msg277992 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2016-10-03 19:17 | |
The attached patch provides a fix, and is based partly on Tim Peters' suggestions and code from the issue 27761 discussion. It needs tests. For convenience, it includes the fix for #28327, since it needs the `_frexp_gen` function added there. |
|||
| msg277993 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2016-10-03 19:18 | |
And here's the actual patch. :-) |
|||
| msg277999 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2016-10-03 20:08 | |
Whoops; that patch was incomplete (it was missing the change to the geometric_mean function itself). Here's an updated patch. |
|||
| msg399949 - (view) | Author: Irit Katriel (iritkatriel) * ![]() |
Date: 2021-08-20 09:53 | |
I can't reproduce this now (tried on mac and windows): >>> statistics.geometric_mean([0.7 for _ in range(5000)]) 0.7 The current geometric_mean was added in PR12638. Is this issue about a previous version? |
|||
| msg399950 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2021-08-20 10:01 | |
Thanks, @Irit. Yes, this is about a different version of geometric_mean that didn't end up making it into any release. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:58:36 | admin | set | github: 72298 |
| 2021-08-20 10:01:31 | mark.dickinson | set | status: open -> closed resolution: out of date messages: + msg399950 stage: resolved |
| 2021-08-20 09:53:18 | iritkatriel | set | nosy:
+ iritkatriel messages: + msg399949 |
| 2016-10-04 16:32:34 | steven.daprano | set | versions: - Python 3.6 |
| 2016-10-03 20:08:13 | mark.dickinson | set | files:
+ geometric_mean_long_input_v2.py messages: + msg277999 |
| 2016-10-03 19:18:42 | mark.dickinson | set | files:
+ geometric_mean_long_input.py messages: + msg277993 |
| 2016-10-03 19:17:53 | mark.dickinson | set | versions: + Python 3.7 |
| 2016-10-03 19:17:41 | mark.dickinson | set | messages: + msg277992 |
| 2016-09-16 19:09:17 | mark.dickinson | set | title: geometric_mean can raise OverflowError when checking for inf -> geometric_mean can raise OverflowError for large input length |
| 2016-09-16 18:24:13 | mark.dickinson | set | messages: + msg276733 |
| 2016-09-13 07:40:17 | mark.dickinson | set | messages: + msg276201 |
| 2016-09-13 02:20:33 | steven.daprano | create | |
