Skip to content

Recursion error with hyp2f1 on s390x #1046

@d-torrance

Description

@d-torrance

The continuous integration tests for 1.4.0 are failing in Debian on the s390x architecture (which is big-endian) with the following recursion error:

>>> import mpmath
>>> mpmath.hyp2f1(-5,5,0.5,0.5)
Traceback (most recent call last):
  File "<python-input-1>", line 1, in <module>
    mpmath.hyp2f1(-5,5,0.5,0.5)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 254, in hyp2f1
    return ctx.hyper([a,b],[c],z,**kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 229, in hyper
    if   q == 1: return ctx._hyp2f1(a_s, b_s, z, **kwargs)
                        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 473, in _hyp2f1
    v = ctx.hypercomb(h, [a,b], **kwargs)
  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 126, in hypercomb
    v = ctx.fprod([ctx.hyper(a_s, b_s, z, **kwargs)] + \
                   ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 229, in hyper
    if   q == 1: return ctx._hyp2f1(a_s, b_s, z, **kwargs)
                        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 473, in _hyp2f1
    v = ctx.hypercomb(h, [a,b], **kwargs)
  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 126, in hypercomb
    v = ctx.fprod([ctx.hyper(a_s, b_s, z, **kwargs)] + \
                   ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^

... [snip] ...


  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 229, in hyper
    if   q == 1: return ctx._hyp2f1(a_s, b_s, z, **kwargs)
                        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/mpmath/functions/hypergeometric.py", line 406, in _hyp2f1
    if z == 1:
       ^^^^^^
  File "/usr/lib/python3/dist-packages/mpmath/ctx_mp_python.py", line 202, in __eq__
    return self.__eq__(other)
           ~~~~~~~~~~~^^^^^^^
  File "/usr/lib/python3/dist-packages/mpmath/ctx_mp_python.py", line 193, in __eq__
    return mpf_eq(sval, oval)
  File "/usr/lib/python3/dist-packages/mpmath/libmp/libmpf.py", line 455, in mpf_eq
    return s == t
           ^^^^^^
RecursionError: maximum recursion depth exceeded in comparison

Metadata

Metadata

Assignees

Labels

bugan unexpected problem or unintended behavior

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions