§
    OŠtj  ã                   óÂ   — 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dS )z/Implementation of :class:`ComplexField` class. é    )Ú
SYMPY_INTS)ÚFloatÚI)ÚCharacteristicZero)ÚField©ÚQQ_I)ÚSimpleDomain)ÚDomainErrorÚCoercionFailed)Úpublic)Ú	MPContextc                   óN  — 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-d
S ),ÚComplexFieldz+Complex numbers up to the given precision. ÚCCTFé5   c                 ó"   — | j         | j        k    S ©N)Ú	precisionÚ_default_precision©Úselfs    ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/domains/complexfield.pyÚhas_default_precisionz"ComplexField.has_default_precision    s   € àŒ~ Ô!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        | _        |                      d¦  «        | _	        |                      d¦  «        | _
        t          d|j        z  dz  d¦  «        | _        | j
        | j        z  | _        d S )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ˆGŒLˆLØˆ[ØˆGŒLˆLØˆ\ØˆGŒKˆKåÐ:Ñ;Ô;Ð;àˆŒà”kˆŒØ—J’J˜q‘M”MˆŒ	Ø—:’:˜a‘=”=ˆŒõ ˜a ¤™o°Ñ4°bÑ9Ô9ˆŒØœ( T¤_Ñ4ˆŒˆˆr   c                 ó   — | j         S r   )r+   r   s    r   ÚtpzComplexField.tpI   s   € ð Œ{Ðr   r   c                 ó¾   — t          |t          ¦  «        rt          |¦  «        }t          |t          ¦  «        rt          |¦  «        }|                      ||¦  «        S r   )Ú
isinstancer   Úintr+   )r   ÚxÚys      r   r,   zComplexField.dtypeQ   sR   € õ �a�Ñ$Ô$ð 	Ý�A‘”ˆAÝ�a�Ñ$Ô$ð 	Ý�A‘”ˆAØ�{Š{˜1˜aÑ Ô Ð r   c                 óL   — t          |t          ¦  «        o| 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¸4¼>ÐJÑKÔ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   s.   € å�W”\ 4¤8Ñ,Ô,­qµ°w´|ÀTÄXÑ1NÔ1NÑ/NÑNÐNr   c                 óÒ   — |                      | j        ¬¦  «        }|                     ¦   «         \  }}|j        r|j        r|                      ||¦  «        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   si   € à—’˜dœh�Ñ'Ô'ˆØ×(Ò(Ñ*Ô*‰
ˆˆdàŒ>ð 	K˜dœnð 	KØ—:’:˜d DÑ)Ô)Ð)å Ð!BÀTÑ!IÑJÔJÐJr   c                 ó,   — |                       |¦  «        S r   ©r,   ©r   rG   Úbases      r   Úfrom_ZZzComplexField.from_ZZo   ó   € Ø�zŠz˜'Ñ"Ô"Ð"r   c                 óF   — |                       t          |¦  «        ¦  «        S r   )r,   r8   rS   s      r   Úfrom_ZZ_gmpyzComplexField.from_ZZ_gmpyr   s   € Ø�zŠz�#˜g™,œ,Ñ'Ô'Ð'r   c                 ó,   — |                       |¦  «        S r   rR   rS   s      r   Úfrom_ZZ_pythonzComplexField.from_ZZ_pythonu   rV   r   c                 óz   — |                       t          |j        ¦  «        ¦  «        t          |j        ¦  «        z  S r   ©r,   r8   Ú	numeratorÚdenominatorrS   s      r   Úfrom_QQzComplexField.from_QQx   ó/   € Ø�zŠz�#˜gÔ/Ñ0Ô0Ñ1Ô1µC¸Ô8KÑ4LÔ4LÑLÐLr   c                 óF   — |                       |j        ¦  «        |j        z  S r   )r,   r]   r^   rS   s      r   Úfrom_QQ_pythonzComplexField.from_QQ_python{   s   € Ø�zŠz˜'Ô+Ñ,Ô,¨wÔ/BÑBÐBr   c                 óz   — |                       t          |j        ¦  «        ¦  «        t          |j        ¦  «        z  S r   r\   rS   s      r   Úfrom_QQ_gmpyzComplexField.from_QQ_gmpy~   r`   r   c                 óv   — |                       t          |j        ¦  «        t          |j        ¦  «        ¦  «        S r   )r,   r8   r9   r:   rS   s      r   Úfrom_GaussianIntegerRingz%ComplexField.from_GaussianIntegerRing�   s&   € Ø�zŠz�#˜gœi™.œ.­#¨g¬i©.¬.Ñ9Ô9Ð9r   c                 ó  — |j         }|j        }|                      t          |j        ¦  «        ¦  «        t          |j        ¦  «        z  |                      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„   sn   € ØŒIˆØŒIˆØ—
’
�3˜qœ{Ñ+Ô+Ñ,Ô,­s°1´=Ñ/AÔ/AÑAØ—
’
˜1�c !¤+Ñ.Ô.Ñ/Ô/µ#°a´mÑ2DÔ2DÑDñEð 	Fr   c                 ó‚   — |                       |                     |¦  «                             | j        ¦  «        ¦  «        S r   )rP   rH   rK   r    rS   s      r   Úfrom_AlgebraicFieldz ComplexField.from_AlgebraicFieldŠ   s0   € Ø�Š˜tŸ}š}¨WÑ5Ô5×;Ò;¸D¼HÑEÔEÑFÔFÐFr   c                 ó,   — |                       |¦  «        S r   rR   rS   s      r   Úfrom_RealFieldzComplexField.from_RealField�   rV   r   c                 ó,   — |                       |¦  «        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ÔGÐGr   c                 ó   — t           S )z2Returns an exact domain associated with ``self``. r   r   s    r   Ú	get_exactzComplexField.get_exact—   s   € åˆr   c                 ó   — dS ©z.Returns ``False`` for any ``ComplexElement``. F© rF   s     r   Úis_negativezComplexField.is_negative›   ó   € àˆur   c                 ó   — dS rt   ru   rF   s     r   Úis_positivezComplexField.is_positiveŸ   rw   r   c                 ó   — dS rt   ru   rF   s     r   Úis_nonnegativezComplexField.is_nonnegative£   rw   r   c                 ó   — dS 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ˆr   c                 ó   — ||z  S )z Returns LCM of ``a`` and ``b``. ru   r   s      r   ÚlcmzComplexField.lcm¯   s   € à�‰sˆ
r   c                 ó:   — | 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Ô6Ð6r   c                 ó   — dS )zAReturns ``True``. Every complex number has a complex square root.Tru   ©r   r€   s     r   Ú	is_squarezComplexField.is_square·   s   € àˆtr   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Ð5à
€Cà"Ð"€O�eà€HØ€Là€NØ€OàÐàð9ð 9ñ „Xð9ð ð"ð "ñ „Xð"ð ð!ð !ñ „Xð!ð ðð ñ „Xðð5ð 5ð 5ð 5ð2 ðð ñ „Xðð!ð !ð !ð !ðUð Uð UðLð Lð LðOð Oð OðKð Kð Kð#ð #ð #ð(ð (ð (ð#ð #ð #ðMð Mð MðCð Cð CðMð Mð Mð:ð :ð :ðFð Fð FðGð Gð Gð#ð #ð #ð#ð #ð #ðHð Hð Hðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð7ð 7ð 7ð 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       s  ðØ 5Ð 5ð +Ð *Ð *Ð *Ð *Ð *Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø EÐ EÐ EÐ EÐ EÐ EØ +Ð +Ð +Ð +Ð +Ð +Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ð ðsð sð sð sð s�5Ð,¨lñ sô sñ „ðsðj €\�^„^€€€r   