Skip to content

math.sumprod() missing one case for combined int/float inputs. #139074

@rhettinger

Description

@rhettinger

Bug report

Bug description:

The sumprod function has high precision paths for int/int, int/float, and float/float inputs. However it missed a case when an int/int pair follows another pair that contained a float. In other words, it assumes that once a float is encountered, that subsequent inputs won't contain a pair of ints.

>>> import math
>>> data = [-0.01, 1, -1, 0.01]
>>> math.sumprod(data,  [1, 1, 1, 1])
-8.673617379884035e-18
>>> math.sumprod(data,  [1.0, 1.0, 1.0, 1.0])
0.0

CPython versions tested on:

3.13, 3.15, 3.14

Operating systems tested on:

macOS

Linked PRs

Metadata

Metadata

Assignees

Labels

extension-modulesC modules in the Modules dirtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions