Ë
    O/æjÒ  ã                   ó®   — d 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 ddlmZ dd	lmZmZ dd
lmZ e G d„ de	ee«      «       Z e«       Zy)z/Implementation of :class:`ComplexField` class. é    )Ú
SYMPY_INTS)ÚFloatÚI)ÚCharacteristicZero)ÚField©ÚQQ_I)Ú	MPContext)ÚSimpleDomain)ÚDomainErrorÚCoercionFailed)Úpublicc                   ó4  — e Zd ZdZdZdxZZdZdZdZ	dZ
dZed„ «       Zed„ «       Zed„ «       Zed	„ «       Zed
d
fd„Zed„ «       Zd(d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d „ Z&d!„ Z'd"„ Z(d#„ Z)d$„ Z*d)d%„Z+d&„ Z,d'„ Z-y
)*ÚComplexFieldz+Complex numbers up to the given precision. ÚCCTFé5   c                 ó4   — | j                   | j                  k(  S ©N)Ú	precisionÚ_default_precision©Úselfs    úc/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/sympy/polys/domains/complexfield.pyÚhas_default_precisionz"ComplexField.has_default_precision   s   € à�~‰~ ×!8Ñ!8Ñ8Ð8ó    c                 ó.   — | j                   j                  S r   )Ú_contextÚprecr   s    r   r   zComplexField.precision"   s   € à�}‰}×!Ñ!Ð!r   c                 ó.   — | j                   j                  S r   )r   Údpsr   s    r   r    zComplexField.dps&   s   € à�}‰}× Ñ Ð r   c                 ó.   — | j                   j                  S r   )r   Ú	tolerancer   s    r   r"   zComplexField.tolerance*   s   € à�}‰}×&Ñ&Ð&r   Nc                 ó¶   — t        |||d«      }| |_        || _        |j                  | _        | j                  d«      | _        | j                  d«      | _        y )NFr   é   )r
   Ú_parentr   ÚmpcÚ_dtypeÚdtypeÚzeroÚone)r   r   r    ÚtolÚcontexts        r   Ú__init__zComplexField.__init__.   sI   € Ü˜D # s¨EÓ2ˆØˆŒØˆŒà—k‘kˆŒØ—J‘J˜q“MˆŒ	Ø—:‘:˜a“=ˆ�r   c                 ó   — | j                   S r   )r'   r   s    r   ÚtpzComplexField.tp7   s   € ð �{‰{Ðr   c                 ó’   — t        |t        «      rt        |«      }t        |t        «      rt        |«      }| j                  ||«      S r   )Ú
isinstancer   Úintr'   )r   ÚxÚys      r   r(   zComplexField.dtype?   s;   € ô �aœÔ$Ü�A“ˆAÜ�aœÔ$Ü�A“ˆAØ�{‰{˜1˜aÓ Ð r   c                 óŽ   — t        |t        «      xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )r1   r   r   r"   )r   Úothers     r   Ú__eq__zComplexField.__eq__I   s;   € Ü˜5¤,Ó/ò 1Ø�~‰~ §¡Ñ0ò1à�~‰~ §¡Ñ0ð	2r   c                 ó„   — t        | j                  j                  | j                  | j                  | j
                  f«      S r   )ÚhashÚ	__class__Ú__name__r'   r   r"   r   s    r   Ú__hash__zComplexField.__hash__N   s,   € Ü�T—^‘^×,Ñ,¨d¯k©k¸4¿>¹>È4Ï>É>ÐZÓ[Ð[r   c                 ó’   — t        |j                  | j                  «      t        t        |j                  | j                  «      z  z   S )z%Convert ``element`` to SymPy number. )r   Úrealr    r   Úimag©r   Úelements     r   Úto_sympyzComplexField.to_sympyQ   s0   € ä�W—\‘\ 4§8¡8Ó,¬q´°w·|±|ÀTÇXÁXÓ1NÑ/NÑNÐNr   c                 óÐ   — |j                  | j                  ¬«      }|j                  «       \  }}|j                  r|j                  r| j	                  ||«      S t        d|z  «      ‚)z%Convert SymPy's number to ``dtype``. )Únzexpected complex number, got %s)Úevalfr    Úas_real_imagÚ	is_Numberr(   r   )r   ÚexprÚnumberr>   r?   s        r   Ú
from_sympyzComplexField.from_sympyU   sW   € à—‘˜dŸh™h�Ó'ˆØ×(Ñ(Ó*‰
ˆˆdà�>Š>˜dŸnšnØ—:‘:˜d DÓ)Ð)ä Ð!BÀTÑ!IÓJÐJr   c                 ó$   — | j                  |«      S r   ©r(   ©r   rA   Úbases      r   Úfrom_ZZzComplexField.from_ZZ_   ó   € Ø�z‰z˜'Ó"Ð"r   c                 ó6   — | j                  t        |«      «      S r   )r(   r2   rM   s      r   Úfrom_ZZ_gmpyzComplexField.from_ZZ_gmpyb   s   € Ø�z‰zœ#˜g›,Ó'Ð'r   c                 ó$   — | j                  |«      S r   rL   rM   s      r   Úfrom_ZZ_pythonzComplexField.from_ZZ_pythone   rP   r   c                 óv   — | j                  t        |j                  «      «      t        |j                  «      z  S r   ©r(   r2   Ú	numeratorÚdenominatorrM   s      r   Úfrom_QQzComplexField.from_QQh   ó,   € Ø�z‰zœ#˜g×/Ñ/Ó0Ó1´C¸×8KÑ8KÓ4LÑLÐLr   c                 óR   — | j                  |j                  «      |j                  z  S r   )r(   rW   rX   rM   s      r   Úfrom_QQ_pythonzComplexField.from_QQ_pythonk   s"   € Ø�z‰z˜'×+Ñ+Ó,¨w×/BÑ/BÑBÐBr   c                 óv   — | j                  t        |j                  «      «      t        |j                  «      z  S r   rV   rM   s      r   Úfrom_QQ_gmpyzComplexField.from_QQ_gmpyn   rZ   r   c                 ór   — | j                  t        |j                  «      t        |j                  «      «      S r   )r(   r2   r3   r4   rM   s      r   Úfrom_GaussianIntegerRingz%ComplexField.from_GaussianIntegerRingq   s#   € Ø�z‰zœ#˜gŸi™i›.¬#¨g¯i©i«.Ó9Ð9r   c                 ó  — |j                   }|j                  }| j                  t        |j                  «      «      t        |j
                  «      z  | j                  dt        |j                  «      «      t        |j
                  «      z  z   S )Nr   )r3   r4   r(   r2   rW   rX   )r   rA   rN   r3   r4   s        r   Úfrom_GaussianRationalFieldz'ComplexField.from_GaussianRationalFieldt   sh   € Ø�I‰IˆØ�I‰IˆØ—
‘
œ3˜qŸ{™{Ó+Ó,¬s°1·=±=Ó/AÑAØ—
‘
˜1œc !§+¡+Ó.Ó/´#°a·m±mÓ2DÑDñEð 	Fr   c                 ót   — | j                  |j                  |«      j                  | j                  «      «      S r   )rJ   rB   rE   r    rM   s      r   Úfrom_AlgebraicFieldz ComplexField.from_AlgebraicFieldz   s)   € Ø�‰˜tŸ}™}¨WÓ5×;Ñ;¸D¿H¹HÓEÓFÐFr   c                 ó$   — | j                  |«      S r   rL   rM   s      r   Úfrom_RealFieldzComplexField.from_RealField}   rP   r   c                 ó2   — | |k(  r|S | j                  |«      S r   rL   rM   s      r   Úfrom_ComplexFieldzComplexField.from_ComplexField€   s   € Ø�4Š<ØˆNà—:‘:˜gÓ&Ð&r   c                 ó   — t        d| z  «      ‚)z)Returns a ring associated with ``self``. z#there is no ring associated with %s)r   r   s    r   Úget_ringzComplexField.get_ring†   s   € äÐ?À$ÑFÓGÐGr   c                 ó   — t         S )z2Returns an exact domain associated with ``self``. r   r   s    r   Ú	get_exactzComplexField.get_exactŠ   s   € äˆr   c                  ó   — y©z.Returns ``False`` for any ``ComplexElement``. F© r@   s     r   Úis_negativezComplexField.is_negativeŽ   ó   € àr   c                  ó   — yrn   ro   r@   s     r   Úis_positivezComplexField.is_positive’   rq   r   c                  ó   — yrn   ro   r@   s     r   Úis_nonnegativezComplexField.is_nonnegative–   rq   r   c                  ó   — yrn   ro   r@   s     r   Úis_nonpositivezComplexField.is_nonpositiveš   rq   r   c                 ó   — | j                   S )z Returns GCD of ``a`` and ``b``. )r*   ©r   ÚaÚbs      r   ÚgcdzComplexField.gcdž   s   € à�x‰xˆr   c                 ó   — ||z  S )z Returns LCM of ``a`` and ``b``. ro   ry   s      r   ÚlcmzComplexField.lcm¢   s   € à�‰sˆ
r   c                 ó<   — | j                   j                  |||«      S )z+Check if ``a`` and ``b`` are almost equal. )r   Úalmosteq)r   rz   r{   r"   s       r   r€   zComplexField.almosteq¦   s   € à�}‰}×%Ñ% a¨¨IÓ6Ð6r   c                  ó   — y)zAReturns ``True``. Every complex number has a complex square root.Tro   ©r   rz   s     r   Ú	is_squarezComplexField.is_squareª   s   € àr   c                 ó   — |dz  S )a,  Returns 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      à?ro   r‚   s     r   ÚexsqrtzComplexField.exsqrt®   s   € ð �C‰xˆr   )r   r   ).r;   Ú
__module__Ú__qualname__Ú__doc__ÚrepÚis_ComplexFieldÚis_CCÚis_ExactÚis_NumericalÚhas_assoc_RingÚhas_assoc_Fieldr   Úpropertyr   r   r    r"   r-   r/   r(   r7   r<   rB   rJ   rO   rR   rT   rY   r\   r^   r`   rb   rd   rf   rh   rj   rl   rp   rs   ru   rw   r|   r~   r€   rƒ   r…   ro   r   r   r   r      s.  „ á5à
€Cà"Ð"€O�eà€HØ€Là€NØ€OàÐàñ9ó ð9ð ñ"ó ð"ð ñ!ó ð!ð ñ'ó ð'ð /°D¸dó !ð ñó ðó!ò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   ro   r   r   ú<module>rš      sP   ðÙ 5õ +ß 'Ý EÝ +Ý 4Ý 4Ý 9ß >Ý "àôh�5Ð,¨ló hó ðhñT ƒ^�r   