a
    kh(&                     @  s  U d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZ m!Z"m#Z$m%Z&m'Z(m)Z*m+Z,m-Z.m/Z0m1Z2m3Z4m5Z6m7Z8m9Z:m;Z<m=Z>m?Z@mAZB g dZCg dZDdd ZEdZFdd ZGdd ZHejIJddK ZLdZMdZNeLdv r:eGeLZMeMdur6dZLndZLeLdv r`eHeLZNeNdur\dZLndZLeLdvrved dZLddee d > d ZOdePd< eLdkrxeNdusJ dZQeNZRd ZSdZTeUeVeRWd fZXeRjWZYeRjZZ[eRjZeRjZeRjZeRj\ZeRj]ZeRj#Z#eRj^ZeRjZeRjZeRj!Z!eRj%Z%eRj'Z'eRj)Z)eRj+Z+d!d" Z-eRj/Z/eRj1Z1eRj3Z3eRj5Z5eRj7Z7eRj9Z9eRj;Z;eRj=Z=eRj?Z?eRjAZAnXeLdkr8eMdusJ eMZQdZRd ZSdZTeUeQj_fZXeQj_ZYeQj`Z[eZeZeZeZd#d$ Zd%d& Z#d'd( Zd)d* Zd+d, Ze"Z!e&Z%e(Z'd-d. Z)e,Z+d/d" Z-e0Z/e2Z1e4Z3e6Z5e8Z7e:Z9e<Z;e>Z=e@Z?eBZAneLdkrdZQdZRd ZSdZTeUfZXeUZYeZ[eZeZeZeZeZe$Z#eZeZe Ze"Z!e&Z%e(Z'e*Z)e,Z+e.Z-e0Z/e2Z1e4Z3e6Z5e8Z7e:Z9e<Z;e>Z=e@Z?eBZAn
d0sJ dS )1    )annotationsN)c_longsizeof)reduce)Type)warn)import_module   )	PythonMPQ)	bit_scan1	bit_scan0remove	factorialsqrtsqrtremgcdlcmgcdext	is_squareinvertlegendrejacobi	kroneckerirootis_fermat_prpis_euler_prpis_strong_prpis_fibonacci_prpis_lucas_prpis_selfridge_prpis_strong_lucas_prpis_strong_selfridge_prpis_bpsw_prpis_strong_bpsw_prp)GROUND_TYPESHAS_GMPY
SYMPY_INTSMPQMPZr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   )z0.6z0.7z0.8z0.9z0.10c                 C  s,   |  dd d \}}| d| }|tv S )N.   )split_PYTHON_FLINT_VERSION_NEEDED)Zflint_versionmajorminorZ	flint_ver r/   A/var/www/auris/lib/python3.9/site-packages/sympy/external/gmpy.py_flint_version_okayc   s    r1   z2.0.0c                 C  s   | dvrd S zdd l }ddl m} W n$ tyH   | dkrBtd Y d S 0 t|rV|S | dkrbd S td| dt d	 |S d S )
Nautoflintr   )__version__r4   zjSYMPY_GROUND_TYPES was set to flint but python-flint is not installed. Falling back to other ground types.r3   zUsing python-flint zp because SYMPY_GROUND_TYPES is set to flint but this version of SymPy is only tested with python-flint versions r)   )r4   r5   ImportErrorr   r1   r,   )sympy_ground_typesr4   Z_flint_versionr/   r/   r0   
_get_flintn   s"    

r8   c                 C  s8   | dvrd S t dtddd}| dkr4|d u r4td |S )Nr3   gmpygmpy2r;   versionr/   )Zmin_module_versionZmodule_version_attrZmodule_version_attr_call_argsr3   zBgmpy2 library is not installed, switching to 'python' ground types)r   _GMPY2_MIN_VERSIONr   )r7   r:   r/   r/   r0   
_get_gmpy2   s    r>   ZSYMPY_GROUND_TYPESr3   r2   r4   r9   r:   python)r4   r:   r?   zmSYMPY_GROUND_TYPES environment variable unrecognised. Should be 'auto', 'flint', 'gmpy', 'gmpy2' or 'python'.   ztuple[Type, ...]r&   r*   c                 C  s   |t krt| |S t| |S N)LONG_MAXr:   r   python_iroot)xnr/   r/   r0   r      s    r   c                 C  s   t |  S rA   )r4   fmpzisqrtrD   r/   r/   r0   r     s    r   c                 C  s"   | dk rdS t |  d dkS )Nr   Fr	   r4   rF   r   rH   r/   r/   r0   r     s    r   c                 C  s   t |  S rA   rI   rH   r/   r/   r0   r     s    r   c                  G  s   t tjj| tdS )Nr   )r   r4   rF   r   argsr/   r/   r0   r     s    r   c                  G  s   t tjj| tdS )Nr	   )r   r4   rF   r   rJ   r/   r/   r0   r     s    r   c                 C  s(   |dks|d st dt| |S )Nr   r*   z#y should be an odd positive integer)
ValueErrorr4   rF   r   )rD   yr/   r/   r0   r     s    r   c                 C  s2   |t kr(t| |}||| | kfS t| |S rA   )rB   r4   rF   rootrC   )rD   rE   rM   r/   r/   r0   r     s    F)a
__future__r   osctypesr   r   	functoolsr   typingr   warningsr   Zsympy.externalr   Z	pythonmpqr
   Zntheoryr   Zpython_bit_scan1r   Zpython_bit_scan0r   Zpython_remover   Zpython_factorialr   Zpython_sqrtr   Zpython_sqrtremr   Z
python_gcdr   Z
python_lcmr   Zpython_gcdextr   Zpython_is_squarer   Zpython_invertr   Zpython_legendrer   Zpython_jacobir   Zpython_kroneckerr   rC   r   Zpython_is_fermat_prpr   Zpython_is_euler_prpr   Zpython_is_strong_prpr   Zpython_is_fibonacci_prpr   Zpython_is_lucas_prpr   Zpython_is_selfridge_prpr    Zpython_is_strong_lucas_prpr!   Zpython_is_strong_selfridge_prpr"   Zpython_is_bpsw_prpr#   Zpython_is_strong_bpsw_prp__all__r,   r1   r=   r8   r>   environgetlowerZ_SYMPY_GROUND_TYPESZ_flintZ_gmpyrB   __annotations__r4   r:   r%   r$   inttypeZmpzr&   r(   Zmpqr'   ZfacrG   Z	isqrt_remrF   Zfmpqr/   r/   r/   r0   <module>   s  l7









