Skip to content

Recursion error with hyp2f1 on s390x #1046

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

No one assigned

    Labels

    bugan unexpected problem or unintended behavior

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions