ó
    Š*£h  ã                   ó®   • 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Jr  SS	K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)ÚSimpleDomain)ÚDomainErrorÚCoercionFailed)Úpublic)Ú	MPContextc                   ó<  • \ 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 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. ÚCCTFé5   c                 ó4   • U R                   U R                  :H  $ ©N)Ú	precisionÚ_default_precision©Úselfs    Ú]/home/mande/repo/quber/.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   )Ú
_tolerancer   s    r   Ú	toleranceÚComplexField.tolerance,   s   € à�‰Ðr   Nc                 óŠ  • [        5       nUc  Uc  U R                  Ul        OUc  Xl        OUc  X$l        O[	        S5      eX@l        UR                  U l        U R                  S5      U l	        U R                  S5      U l
        [        SUR                  -  S-  S5      U l        U R                  U R                  -  U l        g )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__ÚComplexField.__init__0   s    € ô “+ˆà‰<˜C™KØ×2Ñ2ˆG�LØ‰[Ø�LØ‰\Ø�KäÐ:Ó;Ð;àŒà—k‘kˆŒØ—J‘J˜q“MˆŒ	Ø—:‘:˜a“=ˆŒô ˜a §¡™o°Ñ4°bÓ9ˆŒØŸ(™( T§_¡_Ñ4ˆ�r   c                 ó   • U R                   $ r   )r0   r   s    r   ÚtpÚComplexField.tpI   s   € ð �{‰{Ðr   c                 ó¤   • [        U[        5      (       a  [        U5      n[        U[        5      (       a  [        U5      nU R                  X5      $ r   )Ú
isinstancer   Úintr0   )r   ÚxÚys      r   r1   ÚComplexField.dtypeQ   s?   € ô �aœ×$Ñ$Ü�A“ˆAÜ�aœ×$Ñ$Ü�A“ˆAØ�{‰{˜1Ó Ð r   c                 ób   • [        U[        5      =(       a    U R                  UR                  :H  $ r   )r>   r   r   )r   Úothers     r   Ú__eq__ÚComplexField.__eq__[   s!   € Ü˜%¤Ó.×T°4·>±>ÀUÇ_Á_Ñ3TÐTr   c                 ón   • [        U R                  R                  U R                  U R                  45      $ r   )ÚhashÚ	__class__Ú__name__r0   r   r   s    r   Ú__hash__ÚComplexField.__hash__^   s&   € Ü�T—^‘^×,Ñ,¨d¯k©k¸4¿>¹>ÐJÓKÐKr   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_sympya   s0   € ä�W—\‘\ 4§8¡8Ó,¬q´°w·|±|ÀTÇXÁXÓ1NÑ/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_Numberr1   r   )r   ÚexprÚnumberrN   rO   s        r   Ú
from_sympyÚComplexField.from_sympye   sS   € à—‘˜dŸh™h�Ð'ˆØ×(Ñ(Ó*‰
ˆà�>�>˜dŸnŸnØ—:‘:˜dÓ)Ð)ä Ð!BÀTÑ!IÓJÐJr   c                 ó$   • U R                  U5      $ r   ©r1   ©r   rQ   Úbases      r   Úfrom_ZZÚComplexField.from_ZZo   ó   € Ø�z‰z˜'Ó"Ð"r   c                 ó6   • U R                  [        U5      5      $ r   )r1   r?   r_   s      r   Úfrom_ZZ_gmpyÚComplexField.from_ZZ_gmpyr   s   € Ø�z‰zœ#˜g›,Ó'Ð'r   c                 ó$   • U R                  U5      $ r   r^   r_   s      r   Úfrom_ZZ_pythonÚComplexField.from_ZZ_pythonu   rc   r   c                 óv   • U R                  [        UR                  5      5      [        UR                  5      -  $ r   ©r1   r?   Ú	numeratorÚdenominatorr_   s      r   Úfrom_QQÚComplexField.from_QQx   ó,   € Ø�z‰zœ#˜g×/Ñ/Ó0Ó1´C¸×8KÑ8KÓ4LÑLÐLr   c                 óR   • U R                  UR                  5      UR                  -  $ r   )r1   rl   rm   r_   s      r   Úfrom_QQ_pythonÚComplexField.from_QQ_python{   s"   € Ø�z‰z˜'×+Ñ+Ó,¨w×/BÑ/BÑBÐBr   c                 óv   • U R                  [        UR                  5      5      [        UR                  5      -  $ r   rk   r_   s      r   Úfrom_QQ_gmpyÚComplexField.from_QQ_gmpy~   rp   r   c                 ór   • U R                  [        UR                  5      [        UR                  5      5      $ r   )r1   r?   r@   rA   r_   s      r   Úfrom_GaussianIntegerRingÚ%ComplexField.from_GaussianIntegerRing�   s#   € Ø�z‰zœ#˜gŸi™i›.¬#¨g¯i©i«.Ó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@   rA   r1   r?   rl   rm   )r   rQ   r`   r@   rA   s        r   Úfrom_GaussianRationalFieldÚ'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   • U R                  UR                  U5      R                  U R                  5      5      $ r   )r[   rR   rV   r#   r_   s      r   Úfrom_AlgebraicFieldÚ ComplexField.from_AlgebraicFieldŠ   s)   € Ø�‰˜tŸ}™}¨WÓ5×;Ñ;¸D¿H¹HÓEÓFÐFr   c                 ó$   • U R                  U5      $ r   r^   r_   s      r   Úfrom_RealFieldÚComplexField.from_RealField�   rc   r   c                 ó$   • U R                  U5      $ r   r^   r_   s      r   Úfrom_ComplexFieldÚComplexField.from_ComplexField�   rc   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© rP   s     r   Úis_negativeÚComplexField.is_negative›   ó   € àr   c                 ó   • gr�   rŽ   rP   s     r   Úis_positiveÚComplexField.is_positiveŸ   r‘   r   c                 ó   • gr�   rŽ   rP   s     r   Úis_nonnegativeÚComplexField.is_nonnegative£   r‘   r   c                 ó   • gr�   rŽ   rP   s     r   Úis_nonpositiveÚComplexField.is_nonpositive§   r‘   r   c                 ó   • U R                   $ )z Returns GCD of ``a`` and ``b``. )r3   ©r   ÚaÚbs      r   ÚgcdÚComplexField.gcd«   s   € à�x‰xˆ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   € à�}‰}×%Ñ% a¨IÓ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-  $ )zü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      à?rŽ   r¨   s     r   ÚexsqrtÚComplexField.exsqrt»   s   € ð �C‰xˆr   )r   r0   r5   r&   r3   r2   )NNN)r   r   )0rJ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚrepÚis_ComplexFieldÚis_CCÚis_ExactÚis_NumericalÚhas_assoc_RingÚhas_assoc_Fieldr   Úpropertyr   r   r#   r'   r8   r;   r1   rE   rK   rR   r[   ra   re   rh   rn   rr   ru   rx   r{   r~   r�   r„   r‡   rŠ   r�   r“   r–   r™   rŸ   r¢   r¥   r©   r¬   Ú__static_attributes__rŽ   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   rŽ   r   r   Ú<module>rÄ      sR   ðÙ 5õ +ß 'Ý EÝ +Ý 4Ý 9ß >Ý "å ð ôs�5Ð,¨ló só ðsñj ƒ^�r   