Ë
    7^(h  ã                   ó®   — 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mZ dd	l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)ÚSimpleDomain)ÚDomainErrorÚCoercionFailed)Úpublic)Ú	MPContextc                   ó.  — 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d(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    ú^/var/www/skyplay_api_hub/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                   S r   )Ú
_tolerancer   s    r   Ú	tolerancezComplexField.tolerance,   s   € à�‰Ðr   Nc                 óˆ  — t        «       }|€|€| j                  |_        n|€||_        n|€||_        nt	        d«      ‚|| _        |j                  | _        | j                  d«      | _	        | j                  d«      | _
        t        d|j                  z  dz  d«      | _        | j                  | j                  z  | _        y )NzCannot set both prec and dpsr   é   é   éÈ   éc   )r   r   r   r    Ú	TypeErrorr   ÚmpcÚ_dtypeÚdtypeÚzeroÚoneÚmaxÚ
_max_denomr"   )r   r   r    ÚtolÚcontexts        r   Ú__init__zComplexField.__init__0   s¦   € ô “+ˆàˆ<˜C˜KØ×2Ñ2ˆG�LØˆ[ØˆG�LØˆ\ØˆG�KäÐ:Ó;Ð;àˆŒà—k‘kˆŒØ—J‘J˜q“MˆŒ	Ø—:‘:˜a“=ˆŒô ˜a §¡™o°Ñ4°bÓ9ˆŒØŸ(™( T§_¡_Ñ4ˆ�r   c                 ó   — | j                   S r   )r+   r   s    r   ÚtpzComplexField.tpI   s   € ð �{‰{Ðr   c                 ó’   — t        |t        «      rt        |«      }t        |t        «      rt        |«      }| j                  ||«      S r   )Ú
isinstancer   Úintr+   )r   ÚxÚys      r   r,   zComplexField.dtypeQ   s;   € ô �aœÔ$Ü�A“ˆAÜ�aœÔ$Ü�A“ˆAØ�{‰{˜1˜aÓ Ð r   c                 óX   — t        |t        «      xr | j                  |j                  k(  S r   )r7   r   r   )r   Úothers     r   Ú__eq__zComplexField.__eq__[   s!   € Ü˜%¤Ó.ÒT°4·>±>ÀUÇ_Á_Ñ3TÐTr   c                 ón   — t        | j                  j                  | j                  | j                  f«      S r   )ÚhashÚ	__class__Ú__name__r+   r   r   s    r   Ú__hash__zComplexField.__hash__^   s&   € Ü�T—^‘^×,Ñ,¨d¯k©k¸4¿>¹>ÐJÓKÐKr   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_sympya   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ÚnumberrD   rE   s        r   Ú
from_sympyzComplexField.from_sympye   sW   € à—‘˜dŸh™h�Ó'ˆØ×(Ñ(Ó*‰
ˆˆdà�>Š>˜dŸnšnØ—:‘:˜d DÓ)Ð)ä Ð!BÀTÑ!IÓJÐJr   c                 ó$   — | j                  |«      S r   ©r,   ©r   rG   Úbases      r   Úfrom_ZZzComplexField.from_ZZo   ó   € Ø�z‰z˜'Ó"Ð"r   c                 ó6   — | j                  t        |«      «      S r   )r,   r8   rS   s      r   Úfrom_ZZ_gmpyzComplexField.from_ZZ_gmpyr   s   € Ø�z‰zœ#˜g›,Ó'Ð'r   c                 ó$   — | j                  |«      S r   rR   rS   s      r   Úfrom_ZZ_pythonzComplexField.from_ZZ_pythonu   rV   r   c                 óv   — | j                  t        |j                  «      «      t        |j                  «      z  S r   ©r,   r8   Ú	numeratorÚdenominatorrS   s      r   Úfrom_QQzComplexField.from_QQx   ó,   € Ø�z‰zœ#˜g×/Ñ/Ó0Ó1´C¸×8KÑ8KÓ4LÑLÐLr   c                 óR   — | j                  |j                  «      |j                  z  S r   )r,   r]   r^   rS   s      r   Úfrom_QQ_pythonzComplexField.from_QQ_python{   s"   € Ø�z‰z˜'×+Ñ+Ó,¨w×/BÑ/BÑBÐBr   c                 óv   — | j                  t        |j                  «      «      t        |j                  «      z  S r   r\   rS   s      r   Úfrom_QQ_gmpyzComplexField.from_QQ_gmpy~   r`   r   c                 ór   — | j                  t        |j                  «      t        |j                  «      «      S r   )r,   r8   r9   r:   rS   s      r   Úfrom_GaussianIntegerRingz%ComplexField.from_GaussianIntegerRing�   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   )r9   r:   r,   r8   r]   r^   )r   rG   rT   r9   r:   s        r   Úfrom_GaussianRationalFieldz'ComplexField.from_GaussianRationalField„   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   )rP   rH   rK   r    rS   s      r   Úfrom_AlgebraicFieldz ComplexField.from_AlgebraicFieldŠ   s)   € Ø�‰˜tŸ}™}¨WÓ5×;Ñ;¸D¿H¹HÓEÓFÐFr   c                 ó$   — | j                  |«      S r   rR   rS   s      r   Úfrom_RealFieldzComplexField.from_RealField�   rV   r   c                 ó$   — | j                  |«      S r   rR   rS   s      r   Úfrom_ComplexFieldzComplexField.from_ComplexField�   rV   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© rF   s     r   Úis_negativezComplexField.is_negative›   ó   € àr   c                  ó   — yrt   ru   rF   s     r   Úis_positivezComplexField.is_positiveŸ   rw   r   c                  ó   — yrt   ru   rF   s     r   Úis_nonnegativezComplexField.is_nonnegative£   rw   r   c                  ó   — yrt   ru   rF   s     r   Úis_nonpositivezComplexField.is_nonpositive§   rw   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``. ru   r   s      r   ÚlcmzComplexField.lcm¯   s   € à�‰sˆ
r   c                 ó<   — | j                   j                  |||«      S )z+Check if ``a`` and ``b`` are almost equal. )r   Úalmosteq)r   r€   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.Tru   ©r   r€   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      à?ru   rˆ   s     r   ÚexsqrtzComplexField.exsqrt»   s   € ð �C‰xˆr   )NNN)r   r   ).rA   Ú
__module__Ú__qualname__Ú__doc__ÚrepÚis_ComplexFieldÚis_CCÚis_ExactÚis_NumericalÚhas_assoc_RingÚhas_assoc_Fieldr   Úpropertyr   r   r    r#   r3   r5   r,   r=   rB   rH   rP   rU   rX   rZ   r_   rb   rd   rf   rh   rj   rl   rn   rp   rr   rv   ry   r{   r}   r‚   r„   r†   r‰   r‹   ru   r   r   r   r      s&  „ á5à
€Cà"Ð"€O�eà€HØ€Là€NØ€OàÐàñ9ó ð9ð ñ"ó ð"ð ñ!ó ð!ð ñó ðó5ð2 ñó ðó!òUòLò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.simpledomainr
   Úsympy.polys.polyerrorsr   r   Úsympy.utilitiesr   Úmpmathr   r   r   ru   r   r   ú<module>r       sR   ðÙ 5õ +ß 'Ý EÝ +Ý 4Ý 9ß >Ý "å ð ôs�5Ð,¨ló só ðsñj ƒ^�r   