Ë
    täi²  ã                   ó   — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ e G d„ de	e«      «       Ze G d	„ d
e
e«      «       Zej<                  Ze G d„ de«      «       Z y)zReal and complex elements. é    )ÚMPQ)ÚDomainElement)Úpublic)ÚPythonMPContextÚ_mpfÚ_mpcÚ	_constant)ÚMPZ_ONEÚfzeroÚfoneÚfinfÚfninfÚfnanÚround_nearestÚmpf_mulÚrepr_dpsÚ	int_typesÚfrom_intÚ
from_floatÚfrom_strÚto_rationalc                   ó4   — e Zd ZdZdZd„ Z ed„ e«      Zd„ Zy)ÚRealElementzAn element of a real domain. ©Ú__mpf__c                 ó   — || _         y ©Nr   ©ÚselfÚvals     úm/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/polys/domains/mpelements.pyÚ_set_mpfzRealElement._set_mpf   ó	   € Øˆ�ó    c                 ó   — | j                   S r   r   ©r   s    r!   Ú<lambda>zRealElement.<lambda>   ó   €  $§,¢,r$   c                 ó.   — | j                   j                  S r   ©ÚcontextÚ_parentr&   s    r!   ÚparentzRealElement.parent   ó   € Ø�|‰|×#Ñ#Ð#r$   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r"   ÚpropertyÚ_mpf_r-   © r$   r!   r   r      s#   „ á'à€Iòñ Ñ.°Ó9€Eó$r$   r   c                   ó4   — e Zd ZdZdZd„ Z ed„ e«      Zd„ Zy)ÚComplexElementz An element of a complex domain. ©Ú__mpc__c                 ó   — || _         y r   r9   r   s     r!   Ú_set_mpczComplexElement._set_mpc&   r#   r$   c                 ó   — | j                   S r   r9   r&   s    r!   r'   zComplexElement.<lambda>)   r(   r$   c                 ó.   — | j                   j                  S r   r*   r&   s    r!   r-   zComplexElement.parent+   r.   r$   N)	r/   r0   r1   r2   r3   r<   r4   Ú_mpc_r-   r6   r$   r!   r8   r8       s#   „ á*à€Iòñ Ñ.°Ó9€Eó$r$   r8   c                   ó\   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zed„ «       Z	ed„ «       Z
dd	„Zdd
„Zy)Ú	MPContextNc                 óì  — |t         g| _        |€| j                  |«       n| j                  |«       t        | _        t        | _        | j
                  t        | j                  g| j
                  _	        | j                  t        | j                  g| j                  _	        |r| | j
                  _
        n| | j                  _
        t        | _        | j
                  t        | j                  g| j                  _	        | | j                  _
        | j
                  | j                  | j                  g| _        d| _        d| _        |€| j!                  «       | _        n&|du rt$        | _        n| j'                  |«      | _        | j)                  | j"                  «      | _        | j*                  sd| _        nt/        d| j*                  z  «      | _        | j)                  t$        «      | _        | j)                  t2        «      | _        | j7                  t$        t2        f«      | _        | j)                  t:        «      | _        | j)                  t>        «      | _         | j)                  tB        «      | _"        y )NTFi@B é   )#r   Ú_prec_roundingÚ	_set_precÚ_set_dpsr   Úmpfr8   ÚmpcÚnewÚ_ctxdatar+   r	   ÚconstantÚtypesÚtrap_complexÚprettyÚ	_make_tolÚtolr   Ú_convert_tolÚmake_mpfÚ	toleranceÚ	max_denomÚintÚzeror   ÚoneÚmake_mpcÚjr   Úinfr   Úninfr   Únan)ÚctxÚprecÚdpsrP   Úreals        r!   Ú__init__zMPContext.__init__3   s²  € Ø"¤MÐ2ˆÔàˆ;Ø�M‰M˜$Õà�L‰L˜ÔäˆŒÜ ˆŒØŸG™G¤S¨#×*<Ñ*<Ð=ˆ�‰ÔØŸG™G¤S¨#×*<Ñ*<Ð=ˆ�‰ÔáØ!ˆC�G‰G�Oà!ˆC�G‰GŒOä ˆŒØ!$§¡¬#¨s×/AÑ/AÐ Bˆ�‰ÔØ"ˆ�‰Ôà—W‘W˜cŸg™g s§|¡|Ð4ˆŒ	ØˆÔØˆŒ
àˆ;Ø—m‘m“oˆC�GØ�E‰\ÜˆC�Gà×&Ñ& sÓ+ˆCŒGàŸ™ S§W¡WÓ-ˆŒà�}Š}Ø#ˆC�Mä  #§-¡-¡Ó0ˆCŒMà—<‘<¤Ó&ˆŒØ—,‘,œtÓ$ˆŒØ—‘œe¤T˜]Ó+ˆŒØ—,‘,œtÓ$ˆŒØ—<‘<¤Ó&ˆŒØ—,‘,œtÓ$ˆ�r$   c                 óL   — d}dt         d| j                  z
  df}t        ||«      S )N)r   é   é   é   r   rC   )r
   r^   r   )r]   ÚhundredÚepss      r!   rO   zMPContext._make_tolb   s*   € ØˆØ”'˜1˜SŸX™X™: qÐ)ˆÜ�w Ó$Ð$r$   c                 ó@   — | j                  | j                  «       «      S r   )rR   rO   ©r]   s    r!   Úmake_tolzMPContext.make_tolg   s   € Ø�|‰|˜CŸM™M›OÓ,Ð,r$   c                 ó  — t        |t        «      rt        |«      S t        |t        «      rt	        |«      S t        |d«      r|j                  S | j                  \  }}t        |t        «      rt        |||«      S t        d|z  «      ‚)Nr5   zexpected a real number, got %s)Ú
isinstancer   r   Úfloatr   Úhasattrr5   rD   Ústrr   Ú
ValueError)r]   rP   r^   Úroundings       r!   rQ   zMPContext._convert_tolj   sw   € Ü�cœ9Ô%Ü˜C“=Ð Ü�cœ5Ô!Ü˜c“?Ð"Ü�3˜Ô Ø—9‘9ÐØ×+Ñ+‰ˆˆhÜ�cœ3ÔÜ˜C  xÓ0Ð0ÜÐ9¸CÑ?Ó@Ð@r$   c                 ó0   — t        dt        |«      z   «      ‚)Nzcannot create mpf from )Ú	TypeErrorÚrepr)r]   ÚxÚstringss      r!   Ú_convert_fallbackzMPContext._convert_fallbackv   s   € ÜÐ1´D¸³GÑ;Ó<Ð<r$   c                 ó,   — t        | j                  «      S r   )r   Ú_precri   s    r!   Ú_repr_digitszMPContext._repr_digitsy   s   € ä˜Ÿ	™	Ó"Ð"r$   c                 ó   — | j                   S r   )Ú_dpsri   s    r!   Ú_str_digitszMPContext._str_digits}   s   € à�x‰xˆr$   c                 ó*  — t        |j                  «      \  }}t        |«      }|r|| j                  k  r||fS d\  }}}}||}
}		 |	|
z  }|||z  z   }|| j                  kD  rn|||||z  z   |f\  }}}}|
|	||
z  z
  }
}	Œ9| j                  |z
  |z  }t	        ||«      }t	        |||z  z   |||z  z   «      }t	        ||«      }|r|s||fS t        ||z
  «      t        ||z
  «      k  r|j                  |j                  fS |j                  |j                  fS )N)r   rC   rC   r   )r   r5   rU   rT   r   ÚabsÚ	numeratorÚdenominator)r]   ÚsÚlimitÚpÚqÚp0Úq0Úp1Úq1ÚnÚdÚaÚq2ÚkÚnumberÚbound1Úbound2s                    r!   r   zMPContext.to_rational�   sE  € Ü˜1Ÿ7™7Ó#‰ˆˆ1ô
 �‹Fˆá˜˜SŸ]™]Ò*Ø�a�4ˆKà#‰ˆˆB��BØ�!ˆ1ˆàØ�1‘ˆAØ�a˜‘d‘ˆBØ�C—M‘MÒ!ØØ  R¨!¨B©$¡Y°Ð2‰NˆB��B˜Ø�a˜!˜A™#‘gˆqˆAð ð �]‰]˜RÑ "Ñ$ˆä�Q˜“ˆÜ�R˜!˜B™$‘Y  Q r¡T¡	Ó*ˆÜ�R˜“ˆá™VØ�a�4ˆKÜ�˜&‘Ó!¤S¨°&©Ó%9Ò9Ø×#Ñ# V×%7Ñ%7Ð7Ð7à×#Ñ# V×%7Ñ%7Ð7Ð7r$   c                 ó@  — | j                  |«      }|€"|€ | j                  xs | j                  «       x}}|€| j                  |«      }n|€| j                  |«      }t        ||z
  «      }||k  ryt        |«      }t        |«      }||k  r
||z  }||k  S ||z  }||k  S )NT)ÚconvertrS   rj   r   )	r]   r‚   ÚtÚrel_epsÚabs_epsÚdiffÚabssÚabstÚerrs	            r!   ÚalmosteqzMPContext.almosteq¤   s±   € Ø�K‰K˜‹NˆØˆ?˜w˜Ø #§¡Ò ?°·±³Ð?ˆG�gØˆ?Ø—k‘k 'Ó*‰GØˆ_Ø—k‘k 'Ó*ˆGÜ�1�Q‘3‹xˆØ�7Š?ØÜ�1‹vˆÜ�1‹vˆØ�$Š;Ø�t‘)ˆCð �g‰~Ðð �t‘)ˆCØ�g‰~Ðr$   )é5   NNF)T)NN)r/   r0   r1   ra   rO   rj   rQ   rw   r4   rz   r}   r   r›   r6   r$   r!   rA   rA   0   sP   „ ó-%ò^%ò
-ò
Aò=ð ñ#ó ð#ð ñó ðó!8ôFr$   rA   N)!r2   Úsympy.external.gmpyr   Ú!sympy.polys.domains.domainelementr   Úsympy.utilitiesr   Úmpmath.ctx_mp_pythonr   r   r   r	   Úmpmath.libmpr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   ÚobjectÚ__new__rI   rA   r6   r$   r!   Ú<module>r¤      s�   ðñ
 "õ $Ý ;Ý "ç GÓ G÷1÷ 1÷ 1÷ 1ð
 ô$�$˜ó $ó ð$ð ô$�T˜=ó $ó ð$ð ‡n�n€àôD�ó Dó ñDr$   