
    sg&                     0   U d dl Z d dlmZmZ d dlm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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 ZEdZFd ZGd ZHe j                  j                  dd      j                         ZLdZMdZNeLdv r eGeL      ZMeMdZLndZLeLdv r eHeL      ZNeNdZLndZLeLdvr
 ed       dZLdd ee      z  dz
  z  dz
  ZOee	df   ePd<   eLdk(  raeNJ dZQeNZRdZSdZTeU eVeRj                  d             fZXeRj                  ZYeRj                  Z[eRj"                  ZeRj&                  ZeRj*                  ZeRj                  ZeRj                  ZeRjF                  Z#eRj                  ZeRj:                  ZeRj>                  ZeRjB                  Z!eRjJ                  Z%eRjN                  Z'eRjR                  Z)eRjV                  Z+d Z-eRj^                  Z/eRjb                  Z1eRjf                  Z3eRjj                  Z5eRjn                  Z7eRjr                  Z9eRjv                  Z;eRjz                  Z=eRj~                  Z?eRj                  ZAyeLdk(  rleMJ eMZQdZRd ZSdZTeUeQj                  fZXeQj                  ZYeQj                  Z[eZeZeZeZd Zd Z#d  Zd! Zd" Ze"Z!e&Z%e(Z'd# Z)e,Z+d$ Z-e0Z/e2Z1e4Z3e6Z5e8Z7e:Z9e<Z;e>Z=e@Z?eBZAyeLdk(  rBd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?eBZAyJ )%    N)c_longsizeof)reduce)Tuple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.9c                 N    | j                  d      d d \  }}| d| }|t        v S )N.   )split_PYTHON_FLINT_VERSION_NEEDED)flint_versionmajorminor	flint_vers       F/var/www/html/venv/lib/python3.12/site-packages/sympy/external/gmpy.py_flint_version_okayr4   b   s9     &&s+BQ/LE5'5'"I444    z2.0.0c                     | dvry 	 dd l }ddl m} t	        |      r|S | dk(  ry t        d| dt
         d	       |S # t        $ r | dk(  rt        d       Y y w xY w)
Nautoflintr   )__version__r9   zjSYMPY_GROUND_TYPES was set to flint but python-flint is not installed. Falling back to other ground types.r8   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+   )r9   r:   ImportErrorr   r4   r.   )sympy_ground_typesr9   _flint_versions      r3   
_get_flintr>   m   s    !227 >*	v	%">"2 3++G*HK 	L   ( B C	s   
< AAc                 Z    | dvry t        dt        dd      }| dk7  r|t        d       |S )Nr8   gmpygmpy2rB   version )min_module_versionmodule_version_attrmodule_version_attr_call_argsr8   zBgmpy2 library is not installed, switching to 'python' ground types)r	   _GMPY2_MIN_VERSIONr   )r<   rA   s     r3   
_get_gmpy2rI      s?    !::5G )MD V#QRKr5   SYMPY_GROUND_TYPESr8   r7   r9   r@   rA   python)r9   rA   rK   zmSYMPY_GROUND_TYPES environment variable unrecognised. Should be 'auto', 'flint', 'gmpy', 'gmpy2' or 'python'.   .r'   r,   c                 X    |t         k  rt        j                  | |      S t        | |      S N)LONG_MAXrA   r   python_iroot)xns     r3   r   r      s)     =::a##Aq!!r5   c                 H    t         j                  |       j                         S rN   )r9   fmpzisqrtrQ   s    r3   r   r     s    zz!}""$$r5   c                 `    | dk  ryt         j                  |       j                         d   dk(  S )Nr   Fr
   r9   rT   r   rV   s    r3   r   r     s-    q5zz!}$$&q)Q..r5   c                 H    t         j                  |       j                         S rN   rX   rV   s    r3   r   r   
  s    zz!}$$&&r5   c                  r    t        t        j                  j                  | t        j                  d            S )Nr   )r   r9   rT   r   argss    r3   r   r     !    ejjnndEJJqM::r5   c                  r    t        t        j                  j                  | t        j                  d            S )Nr
   )r   r9   rT   r   r[   s    r3   r   r     r]   r5   c                 t    |dk  s|dz  st        d      t        j                  |       j                  |      S )Nr   r,   z#y should be an odd positive integer)
ValueErrorr9   rT   r   )rQ   ys     r3   r   r     s4    6QBCCzz!}##A&&r5   c                     |t         k  r.t        j                  |       j                  |      }|||z  | k(  fS t	        | |      S rN   )rO   r9   rT   rootrP   )rQ   rR   ra   s      r3   r   r     s@    =

1""1%Aadai<Aq!!r5   )aosctypesr   r   	functoolsr   typingr   tTupler   warningsr   sympy.externalr	   	pythonmpqr   ntheoryr   python_bit_scan1r   python_bit_scan0r   python_remover   python_factorialr   python_sqrtr   python_sqrtremr   
python_gcdr   
python_lcmr   python_gcdextr   python_is_squarer   python_invertr   python_legendrer   python_jacobir   python_kroneckerr   rP   r   python_is_fermat_prpr   python_is_euler_prpr   python_is_strong_prpr   python_is_fibonacci_prpr   python_is_lucas_prpr    python_is_selfridge_prpr!   python_is_strong_lucas_prpr"   python_is_strong_selfridge_prpr#   python_is_bpsw_prpr$   python_is_strong_bpsw_prp__all__r.   r4   rH   r>   rI   environgetlower_SYMPY_GROUND_TYPES_flint_gmpyrO   __annotations__r9   rA   r&   r%   inttypempzr'   r)   mpqr(   facrU   	isqrt_remrT   fmpqrD   r5   r3   <module>r      s   	 !  (  (        :0n  < 5  2
  jjnn%96BHHJ 	 +++,F%$33*+E$&99 
C D" !F6N"Q&'1, 49 & EDHLtDHHQK()J
((C
((CII[[FI::DInnG
((C
((C[[F[[F}}H[[FI" &&M$$L&&M,,$$L,,22"::""K00G#EDHLuzz"J
**C
**C I IF I%/
';; FFH'
 !I" )M&L(M.&L.4<$K2H$EDHLJ
C
C I IF ID IG
C
CFFHF IE(M&L(M.&L.4<$K2 5r5   