
    Цi                         S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SS	KJrJr  SS
KJr  \ " S S\	\\5      5       r\" 5       rg)z/Implementation of :class:`ComplexField` class.     )
SYMPY_INTS)FloatI)CharacteristicZero)FieldQQ_I)	MPContext)SimpleDomain)DomainErrorCoercionFailed)publicc                   B   \ rS rSrSrSrS=rrSrSr	Sr
SrSr\S 5       r\S 5       r\S	 5       r\S
 5       r\SS4S jr\S 5       rS*S jrS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S  r&S! r'S" r(S# r)S$ r*S% r+S+S& jr,S' r-S( r.S)r/g),ComplexField   z+Complex numbers up to the given precision. CCTF5   c                 4    U R                   U R                  :H  $ N)	precision_default_precisionselfs    _/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sympy/polys/domains/complexfield.pyhas_default_precision"ComplexField.has_default_precision   s    ~~!8!888    c                 .    U R                   R                  $ r   )_contextprecr   s    r   r   ComplexField.precision"   s    }}!!!r   c                 .    U R                   R                  $ r   )r   dpsr   s    r   r#   ComplexField.dps&   s    }}   r   c                 .    U R                   R                  $ r   )r   	tolerancer   s    r   r&   ComplexField.tolerance*   s    }}&&&r   Nc                     [        XUS5      nXl        X@l        UR                  U l        U R                  S5      U l        U R                  S5      U l        g )NFr      )r
   _parentr   mpc_dtypedtypezeroone)r   r    r#   tolcontexts        r   __init__ComplexField.__init__.   sC    DsE2kkJJqM	::a=r   c                     U R                   $ r   )r,   r   s    r   tpComplexField.tp7   s     {{r   c                     [        U[        5      (       a  [        U5      n[        U[        5      (       a  [        U5      nU R                  X5      $ r   )
isinstancer   intr,   )r   xys      r   r-   ComplexField.dtype?   s?     a$$AAa$$AA{{1  r   c                     [        U[        5      =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )r8   r   r   r&   )r   others     r   __eq__ComplexField.__eq__I   s;    5,/ 1~~01~~0	2r   c                     [        U R                  R                  U R                  U R                  U R
                  45      $ r   )hash	__class____name__r,   r   r&   r   s    r   __hash__ComplexField.__hash__N   s,    T^^,,dkk4>>4>>Z[[r   c                     [        UR                  U R                  5      [        [        UR                  U R                  5      -  -   $ )z%Convert ``element`` to SymPy number. )r   realr#   r   imagr   elements     r   to_sympyComplexField.to_sympyQ   s0    W\\488,qw||TXX1N/NNNr   c                     UR                  U R                  S9nUR                  5       u  p4UR                  (       a"  UR                  (       a  U R	                  X45      $ [        SU-  5      e)z%Convert SymPy's number to ``dtype``. )nzexpected complex number, got %s)evalfr#   as_real_imag	is_Numberr-   r   )r   exprnumberrH   rI   s        r   
from_sympyComplexField.from_sympyU   sS    dhh'((*
>>dnn::d)) !BT!IJJr   c                 $    U R                  U5      $ r   r-   r   rK   bases      r   from_ZZComplexField.from_ZZ_       zz'""r   c                 6    U R                  [        U5      5      $ r   )r-   r9   rY   s      r   from_ZZ_gmpyComplexField.from_ZZ_gmpyb   s    zz#g,''r   c                 $    U R                  U5      $ r   rX   rY   s      r   from_ZZ_pythonComplexField.from_ZZ_pythone   r]   r   c                 v    U R                  [        UR                  5      5      [        UR                  5      -  $ r   r-   r9   	numeratordenominatorrY   s      r   from_QQComplexField.from_QQh   ,    zz#g//01C8K8K4LLLr   c                 R    U R                  UR                  5      UR                  -  $ r   )r-   rf   rg   rY   s      r   from_QQ_pythonComplexField.from_QQ_pythonk   s"    zz'++,w/B/BBBr   c                 v    U R                  [        UR                  5      5      [        UR                  5      -  $ r   re   rY   s      r   from_QQ_gmpyComplexField.from_QQ_gmpyn   rj   r   c                 r    U R                  [        UR                  5      [        UR                  5      5      $ r   )r-   r9   r:   r;   rY   s      r   from_GaussianIntegerRing%ComplexField.from_GaussianIntegerRingq   s#    zz#gii.#gii.99r   c                    UR                   nUR                  nU R                  [        UR                  5      5      [        UR
                  5      -  U R                  S[        UR                  5      5      [        UR
                  5      -  -   $ )Nr   )r:   r;   r-   r9   rf   rg   )r   rK   rZ   r:   r;   s        r   from_GaussianRationalField'ComplexField.from_GaussianRationalFieldt   sh    IIII

3q{{+,s1==/AA

1c!++./#amm2DDE 	Fr   c                 t    U R                  UR                  U5      R                  U R                  5      5      $ r   )rU   rL   rP   r#   rY   s      r   from_AlgebraicField ComplexField.from_AlgebraicFieldz   s)    t}}W5;;DHHEFFr   c                 $    U R                  U5      $ r   rX   rY   s      r   from_RealFieldComplexField.from_RealField}   r]   r   c                 2    X:X  a  U$ U R                  U5      $ r   rX   rY   s      r   from_ComplexFieldComplexField.from_ComplexField   s    <N::g&&r   c                     [        SU -  5      e)z)Returns a ring associated with ``self``. z#there is no ring associated with %s)r   r   s    r   get_ringComplexField.get_ring   s    ?$FGGr   c                     [         $ )z2Returns an exact domain associated with ``self``. r   r   s    r   	get_exactComplexField.get_exact   s    r   c                     gz.Returns ``False`` for any ``ComplexElement``. F rJ   s     r   is_negativeComplexField.is_negative       r   c                     gr   r   rJ   s     r   is_positiveComplexField.is_positive   r   r   c                     gr   r   rJ   s     r   is_nonnegativeComplexField.is_nonnegative   r   r   c                     gr   r   rJ   s     r   is_nonpositiveComplexField.is_nonpositive   r   r   c                     U R                   $ )z Returns GCD of ``a`` and ``b``. )r/   r   abs      r   gcdComplexField.gcd   s    xxr   c                 
    X-  $ )z Returns LCM of ``a`` and ``b``. r   r   s      r   lcmComplexField.lcm   s	    s
r   c                 :    U R                   R                  XU5      $ )z+Check if ``a`` and ``b`` are almost equal. )r   almosteq)r   r   r   r&   s       r   r   ComplexField.almosteq   s    }}%%aI66r   c                     g)zAReturns ``True``. Every complex number has a complex square root.Tr   r   r   s     r   	is_squareComplexField.is_square   s    r   c                     US-  $ )zReturns the principal complex square root of ``a``.

Explanation
===========
The argument of the principal square root is always within
$(-\frac{\pi}{2}, \frac{\pi}{2}]$. The square root may be
slightly inaccurate due to floating point rounding error.
g      ?r   r   s     r   exsqrtComplexField.exsqrt   s     Cxr   )r   r,   r/   r.   )r   r   )0rD   
__module____qualname____firstlineno____doc__repis_ComplexFieldis_CCis_Exactis_Numericalhas_assoc_Ringhas_assoc_Fieldr   propertyr   r   r#   r&   r2   r5   r-   r?   rE   rL   rU   r[   r_   rb   rh   rl   ro   rr   ru   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      s.   5
C""OeHLNO9 9 " " ! ! ' ' /Dd !  !2
\OK#(#MCM:FG#'H7	r   r   N)r   sympy.external.gmpyr   sympy.core.numbersr   r   &sympy.polys.domains.characteristiczeror   sympy.polys.domains.fieldr   #sympy.polys.domains.gaussiandomainsr	   sympy.polys.domains.mpelementsr
    sympy.polys.domains.simpledomainr   sympy.polys.polyerrorsr   r   sympy.utilitiesr   r   r   r   r   r   <module>r      sP    5 + ' E + 4 4 9 > "h5,l h hT ^r   