
    g&                     J   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 jI        J                    dd          K                                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    reNJ dZQeNZRdZSdZTeU eVeRW                    d                     fZXeRjW        ZYeRjZ        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)eRj+        Z+d Z-eRj/        Z/eRj1        Z1eRj3        Z3eRj5        Z5eRj7        Z7eRj9        Z9eRj;        Z;eRj=        Z=eRj?        Z?eRjA        ZAdS eLdk    r^eM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?eBZAdS eLdk    rCd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?eBZAdS 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                 b    |                      d          d d         \  }}| d| }|t          v S )N.   )split_PYTHON_FLINT_VERSION_NEEDED)flint_versionmajorminor	flint_vers       O/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/external/gmpy.py_flint_version_okayr4   b   sA     &&s++BQB/LE5""5""I444    z2.0.0c                     | dvrd S 	 dd l }ddl m} n&# t          $ r | dk    rt          d           Y d S w xY wt	          |          r|S | dk    rd S t          d| dt
           d	           |S )
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2t7777777   (( B C C Ctt	 >** 	v	%	%t K> K K+GK K K 	L 	L 	L s   
 66c                 p    | dvrd S t          dt          dd          }| dk    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      sY    !:::t5G )M M MD V##QRR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                 n    |t           k    rt                              | |          S t          | |          S N)LONG_MAXrA   r   python_iroot)xns     r3   r   r      s1     ==::a###Aq!!!r5   c                 Z    t                               |                                           S rN   )r9   fmpzisqrtrQ   s    r3   r   r     s    zz!}}""$$$r5   c                 ~    | dk     rdS t                               |                                           d         dk    S )Nr   Fr
   r9   rT   r   rV   s    r3   r   r     s6    q555zz!}}$$&&q)Q..r5   c                 Z    t                               |                                           S rN   rX   rV   s    r3   r   r   
  s    zz!}}$$&&&r5   c                  r    t          t          j        j        | t                              d                    S )Nr   )r   r9   rT   r   argss    r3   r   r     "    ejndEJJqMM:::r5   c                  r    t          t          j        j        | t                              d                    S )Nr
   )r   r9   rT   r   r[   s    r3   r   r     r]   r5   c                     |dk    s|dz  st          d          t                              |                               |          S )Nr   r,   z#y should be an odd positive integer)
ValueErrorr9   rT   r   )rQ   ys     r3   r   r     s@    66Q6BCCCzz!}}##A&&&r5   c                     |t           k    r8t                              |                               |          }|||z  | k    fS t	          | |          S rN   )rO   r9   rT   rootrP   )rQ   rR   ra   s      r3   r   r     sJ    ==

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 0 0n  <;; 5 5 5    2
 
 
  jnn%96BBHHJJ 	 +++Z+,,F%$333J*++E$&999D 
C D D D" !FF6NN"Q&'1, 49   &  EDHLttDHHQKK(()J
(C
(CII[FI:DInG
(C
(C[F[F}H[FI" " " &M$L&M,$L,2":"K0G##EDHLuz"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 Lr5   