
    ЦiR                       % S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	J
r
Jr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  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$  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.  SSK/J0r0  SSK1J2r2  SSK3J4r4  SSK5J6r6  \2\&4S j5       r7\2\&4S j5       r8\2\&4S j5       r9\2S 5       r:0 r;S\<S'    " S  S!\05      r= " S" S#\\0\5      r>g$)%z!Sparse rational function fields.     )annotations)Any)reduce)addmulltlegtge)Expr)Mod)Exp1)S)Symbol)CantSympifysympify)ExpBase)DomainElementFractionField)PolynomialRing)construct_domain)lex)CoercionFailed)build_options)_parallel_dict_from_expr)PolyElement)DefaultPrinting)public)is_sequence)pollutec                :    [        XU5      nU4UR                  -   $ )zFConstruct new rational function field returning (field, x1, ..., xn). 	FracFieldgenssymbolsdomainorder_fields       Q/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sympy/polys/fields.pyfieldr,      s!     w.F9v{{""    c                4    [        XU5      nX3R                  4$ )zHConstruct new rational function field returning (field, (x1, ..., xn)). r#   r&   s       r+   xfieldr/   $   s     w.FKK  r-   c                    [        XU5      n[        UR                   Vs/ s H  oDR                  PM     snUR                  5        U$ s  snf )zSConstruct new rational function field and inject generators into global namespace. )r$   r!   r'   namer%   )r'   r(   r)   r*   syms        r+   vfieldr3   *   s=     w.F&..2.3hh.2FKK@M 3s   A	c                   Sn[        U 5      (       d  U /Sp0[        [        [        U 5      5      n [	        X5      n/ nU  H"  nUR                  UR                  5       5        M$     [        XT5      u  ptUR                  cE  [        U Vs/ s H  n[        UR                  5       5      PM     sn/ 5      n	[        XS9u  Ul        n
[        UR                  UR                  UR                  5      n/ n[        S[!        U5      S5       H(  nUR#                  U" [%        X}US-    5      5      5        M*     U(       a  XS   4$ X4$ s  snf )ak  Construct a field deriving generators and domain
from options and input expressions.

Parameters
==========

exprs   : py:class:`~.Expr` or sequence of :py:class:`~.Expr` (sympifiable)

symbols : sequence of :py:class:`~.Symbol`/:py:class:`~.Expr`

options : keyword arguments understood by :py:class:`~.Options`

Examples
========

>>> from sympy import exp, log, symbols, sfield

>>> x = symbols("x")
>>> K, f = sfield((x*log(x) + 4*x**2)*exp(1/x + log(x)/3)/x**2)
>>> K
Rational function field in x, exp(1/x), log(x), x**(1/3) over ZZ with lex order
>>> f
(4*x**2*(exp(1/x)) + x*(exp(1/x))*(log(x)))/((x**(1/3))**5)
FT)optr      )r    listmapr   r   extendas_numer_denomr   r(   sumvaluesr   r$   r%   r)   rangelenappendtuple)exprsr'   optionssingler5   numdensexprrepsrepcoeffs_r*   fracsis                 r+   sfieldrL   1   s   4 FuvWe$%E

)CGt**,- (6ID
zz D9DSd3::<(D92>(9
AsxxSYY7FE1c$i#VE$1+./0 $ a!! :s   #Ezdict[Any, Any]_field_cachec                      \ rS rSrSr\4S jrS rS rS r	S r
S rS	 rSS jrSS jrS rS rS r\rS rS rS rS rSrg
)r$   h   z2Multivariate distributed rational function field. c                (   SSK Jn  U" XU5      nUR                  nUR                  nUR                  nUR
                  nU R                  XX#4n[        R                  U5      nUGc*  [        R                  U 5      nXxl        [        U5      Ul        XXl        [        S[         4SU05      Ul        Xl        Xhl        X(l        X8l        UR#                  UR$                  5      Ul        UR#                  UR&                  5      Ul        UR)                  5       Ul        [-        UR                  UR*                  5       HF  u  p[/        U	[0        5      (       d  M  U	R2                  n[5        X5      (       a  M:  [7        XU
5        MH     U[        U'   U$ )Nr   PolyRingFracElementr,   )sympy.polys.ringsrR   r'   ngensr(   r)   __name__rM   getobject__new___hash_tuplehash_hashringtyperS   dtypezeroone_gensr%   zip
isinstancer   r1   hasattrsetattr)clsr'   r(   r)   rR   r]   rU   rZ   objsymbol	generatorr1   s               r+   rY   FracField.__new__k   s6   ./,,



||WVC{+;..%C)O[)CIH][NWcNKCI!KIJIyy+CHii)CGyy{CH%(chh%?!ff--!;;D"3--95 &@ ),L%
r-   c                    [        U R                  R                   Vs/ s H  oR                  U5      PM     sn5      $ s  snf )z(Return a list of polynomial generators. )r@   r]   r%   r_   selfgens     r+   rb   FracField._gens   s-    $))..B.3zz#.BCCBs   ?c                H    U R                   U R                  U R                  4$ N)r'   r(   r)   rn   s    r+   __getnewargs__FracField.__getnewargs__   s    dkk4::66r-   c                    U R                   $ rr   )r\   rs   s    r+   __hash__FracField.__hash__   s    zzr-   c                    [        XR                  5      (       a)  U R                  R                  UR	                  5       5      $ [        SU R                  < SU< S35      e)Nzexpected a , got z instead)rd   r_   r]   indexto_poly
ValueErrorrm   s     r+   r{   FracField.index   s>    c::&&99??3;;=11

3OPPr-   c                    [        U[        5      =(       a]    U R                  U R                  U R                  U R
                  4UR                  UR                  UR                  UR
                  4:H  $ rr   )rd   r$   r'   rU   r(   r)   rn   others     r+   __eq__FracField.__eq__   sV    %+ D\\4::t{{DJJ?]]EKKu{{CD	Dr-   c                    X:X  + $ rr    r   s     r+   __ne__FracField.__ne__   s      r-   Nc                $    U R                  X5      $ rr   )r_   rn   numerdenoms      r+   raw_newFracField.raw_new   s    zz%''r-   c                |    Uc  U R                   R                  nUR                  U5      u  pU R                  X5      $ rr   )r]   ra   cancelr   r   s      r+   newFracField.new   s2    =$))--%||E*||E))r-   c                8    U R                   R                  U5      $ rr   )r(   convert)rn   elements     r+   
domain_newFracField.domain_new   s    {{""7++r-   c                    U R                  U R                  R                  U5      5      $ ! [         a    U R                  nUR
                  (       d  UR                  (       a  U R                  nUR                  5       nUR                  U5      nUR                  UR                  U5      5      nUR                  UR                  U5      5      nU R                  XV5      s $ e f = frr   )r   r]   
ground_newr   r(   is_Fieldhas_assoc_Field	get_fieldr   r   r   r   )rn   r   r(   r]   ground_fieldr   r   s          r+   r   FracField.ground_new   s    	88DII009:: 	[[F??v'='=yy%//1&..w7(:(:7(CD(:(:7(CD||E11	s   ), B6C&$C&c                   [        U[        5      (       a  XR                  :X  a  U$ [        U R                  [        5      (       a5  U R                  R                  UR                  :X  a  U R                  U5      $ [        U R                  [        5      (       aC  U R                  R                  R                  5       UR                  :X  a  U R                  U5      $ [        S5      e[        U[        5      (       Ga%  UR                  5       u  p#[        U R                  [        5      (       a@  UR                  U R                  R                  :X  a  U R                  R                  U5      nO[        U R                  [        5      (       aN  UR                  U R                  R                  R                  5       :X  a  U R                  R                  U5      nOUR                  U R                  5      nU R                  R                  U5      nU R                  X25      $ [        U[        5      (       aK  [!        U5      S:X  a<  [#        [%        U R                  R&                  U5      5      u  p2U R)                  X25      $ [        U[*        5      (       a  [        S5      e[        U[,        5      (       a  U R/                  U5      $ U R                  U5      $ )N
conversionr6   parsing)rd   rS   r,   r(   r   r   r   r]   to_fieldNotImplementedErrorr   clear_denomsto_ringset_ringr   r@   r>   r7   r8   ring_newr   strr   	from_expr)rn   r   r   r   s       r+   	field_newFracField.field_new   s   g{++}}$$++}55!!W]]2w//DKK88  ))+w}}<w//),77--"//1LE$++~66

dkk...		,,U3DKK77

dkk//7799		,,U3tyy1II((/E<<--''CLA,=DII$6$6 @ALE88E))%%%i00&&>>'**??7++r-   c                   ^^^^ U R                   m[        S TR                  5        5       5      mUUUU4S jmT" U5      $ )Nc              3     #    U  H>  nUR                   (       d  [        U[        5      (       d  M+  XR                  5       4v   M@     g 7frr   )is_Powrd   r   as_base_exp).0ro   s     r+   	<genexpr>*FracField._rebuild_expr.<locals>.<genexpr>   s1      7>CzzZW5 0__./>s
   *AAc           	       > T	R                  U 5      nUb  U$ U R                  (       a-  [        [        [	        [        TU R                  5      5      5      $ U R                  (       a-  [        [        [	        [        TU R                  5      5      5      $ U R                  (       d  [        U [        [        45      (       a  U R                  5       u  p#T
 H?  u  nu  pVXR:X  d  M  [        X65      S:X  d  M   T	R                  U5      [        X6-  5      -  s  $    UR                   (       a'  U["        R$                  La  T" U5      [        U5      -  $ O,T	R                  SU -  5      b  ST	R                  SU -  5      -  $  TR'                  U 5      $ ! [(         aE    TR*                  (       d2  TR,                  (       a!  TR/                  5       R'                  U 5      s $ e f = f)Nr      )rW   is_Addr   r   r7   r8   argsis_Mulr   r   rd   r   r   r   r   int
is_Integerr   Oner   r   r   r   r   )rE   rj   bero   bgeg_rebuildr(   mappingpowerss          r+   r   )FracField._rebuild_expr.<locals>._rebuild   sf   D)I$  c4Hdii(@#ABBc4Hdii(@#ABB
4'4 A A'')%+MC"w3q:?&{{3/QT:: &, <<AQUUN#A;A..QtV$0QtV,,,~~d++! 6+A+A!++-55d;;	s   =F AGG)r(   r@   keys)rn   rE   r   r   r(   r   s     `@@@r+   _rebuild_exprFracField._rebuild_expr   s>     77<<> 7 7	 	8 ~r-   c                   [        [        [        U R                  U R                  5      5      5      n U R                  [        U5      U5      nU R                  U5      $ ! [         a    [        SU < SU< 35      ef = f)Nz=expected an expression convertible to a rational function in rz   )
dictr7   rc   r'   r%   r   r   r   r   r}   )rn   rE   r   fracs       r+   r   FracField.from_expr  sq    tCdii89:	(%%gdmW=D >>$''  	wjnptuvv	ws   A   A>c                    [        U 5      $ rr   r   rs   s    r+   	to_domainFracField.to_domain  s    T""r-   c                ^    SSK Jn  U" U R                  U R                  U R                  5      $ )Nr   rQ   )rT   rR   r'   r(   r)   )rn   rR   s     r+   r   FracField.to_ring  s     .dkk4::>>r-   r   rr   )rV   
__module____qualname____firstlineno____doc__r   rY   rb   rt   rw   r{   r   r   r   r   r   r   r   __call__r   r   r   r   __static_attributes__r   r-   r+   r$   r$   h   se    <,/ $LD7QD
!(*
, #,J H!F(#?r-   r$   c                     \ rS rSrS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 rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S)S% jr'S)S& jr(S)S' jr)S(r*g)*rS   i  z=Element of multivariate distributed rational function field. Nc                    Uc!  U R                   R                  R                  nOU(       d  [        S5      eXl        X l        g )Nzzero denominator)r,   r]   ra   ZeroDivisionErrorr   r   r   s      r+   __init__FracElement.__init__!  s3    =JJOO''E#$677

r-   c                $    U R                  X5      $ rr   )	__class__fr   r   s      r+   r   FracElement.raw_new*  s    {{5((r-   c                >    U R                   " UR                  U5      6 $ rr   )r   r   r   s      r+   r   FracElement.new,  s    yy%,,u-..r-   c                P    U R                   S:w  a  [        S5      eU R                  $ )Nr   zf.denom should be 1)r   r}   r   r   s    r+   r|   FracElement.to_poly/  s"    77a<233wwr-   c                6    U R                   R                  5       $ rr   )r,   r   rs   s    r+   parentFracElement.parent4  s    zz##%%r-   c                H    U R                   U R                  U R                  4$ rr   )r,   r   r   rs   s    r+   rt   FracElement.__getnewargs__7  s    

DJJ

33r-   c                    U R                   nUc3  [        U R                  U R                  U R                  45      =U l         nU$ rr   )r\   r[   r,   r   r   )rn   r\   s     r+   rw   FracElement.__hash__<  s9    

=!%tzz4::tzz&J!KKDJr-   c                    U R                  U R                  R                  5       U R                  R                  5       5      $ rr   )r   r   copyr   rs   s    r+   r   FracElement.copyB  s)    ||DJJOO-tzz/@AAr-   c                    U R                   U:X  a  U $ UR                  nU R                  R                  U5      nU R                  R                  U5      nUR                  X45      $ rr   )r,   r]   r   r   r   r   )rn   	new_fieldnew_ringr   r   s        r+   	set_fieldFracElement.set_fieldE  sS    ::"K ~~HJJ''1EJJ''1E==..r-   c                h    U R                   R                  " U6 U R                  R                  " U6 -  $ rr   )r   as_exprr   )rn   r'   s     r+   r   FracElement.as_exprN  s+    zz!!7+DJJ,>,>,HHHr-   c                X   [        U[        5      (       aS  U R                  UR                  :X  a9  U R                  UR                  :H  =(       a    U R                  UR                  :H  $ U R                  U:H  =(       a-    U R                  U R                  R
                  R                  :H  $ rr   )rd   rS   r,   r   r   r]   ra   r   gs     r+   r   FracElement.__eq__Q  sm    a%%!''QWW*<77agg%<!''QWW*<<77a<?AGGqww||/?/?$??r-   c                    X:X  + $ rr   r   r   s     r+   r   FracElement.__ne__W  s
    zr-   c                ,    [        U R                  5      $ rr   )boolr   r   s    r+   __bool__FracElement.__bool__Z  s    AGG}r-   c                j    U R                   R                  5       U R                  R                  5       4$ rr   )r   sort_keyr   rs   s    r+   r   FracElement.sort_key]  s'    

##%tzz':':'<==r-   c                    [        XR                  R                  5      (       a%  U" U R                  5       UR                  5       5      $ [        $ rr   )rd   r,   r_   r   NotImplemented)f1f2ops      r+   _cmpFracElement._cmp`  s4    b((..))bkkmR[[]33!!r-   c                .    U R                  U[        5      $ rr   )r  r   r  r  s     r+   __lt__FracElement.__lt__f      wwr2r-   c                .    U R                  U[        5      $ rr   )r  r	   r
  s     r+   __le__FracElement.__le__h  r  r-   c                .    U R                  U[        5      $ rr   )r  r
   r
  s     r+   __gt__FracElement.__gt__j  r  r-   c                .    U R                  U[        5      $ rr   )r  r   r
  s     r+   __ge__FracElement.__ge__l  r  r-   c                N    U R                  U R                  U R                  5      $ z"Negate all coefficients in ``f``. r   r   r   r   s    r+   __pos__FracElement.__pos__o  s    yy!''**r-   c                P    U R                  U R                  * U R                  5      $ r  r  r   s    r+   __neg__FracElement.__neg__s  s    yy!''177++r-   c                n   U R                   R                  n UR                  U5      nSUS 4$ ! [         a|    UR                  (       dh  UR
                  (       aW  UR                  5       n UR                  U5      nSUR                  U5      UR                  U5      4s $ ! [         a     Of = f gf = f)Nr   )r   NN)	r,   r(   r   r   r   r   r   r   r   )rn   r   r(   r   s       r+   _extract_groundFracElement._extract_groundw  s    ""	$nnW-G gt##  	!??v'='=%//1X*227;G |11':L<N<Nw<WWW & 
 !	!s3   . <B4+B!<#B4!
B.+B4-B..B43B4c                   U R                   nU(       d  U $ U (       d  U$ [        XR                  5      (       a  U R                  UR                  :X  a3  U R	                  U R
                  UR
                  -   U R                  5      $ U R	                  U R
                  UR                  -  U R                  UR
                  -  -   U R                  UR                  -  5      $ [        XR                  R                  5      (       a6  U R	                  U R
                  U R                  U-  -   U R                  5      $ [        U[        5      (       a  [        UR                  [        5      (       a%  UR                  R                   UR                   :X  a  O[        UR                   R                  [        5      (       a5  UR                   R                  R                   U:X  a  UR                  U 5      $ [        $ [        U[        5      (       aU  [        UR                  [        5      (       a%  UR                  R                  UR                  :X  a  OUR                  U 5      $ U R                  U5      $ )z(Add rational functions ``f`` and ``g``. )r,   rd   r_   r   r   r   r]   rS   r(   r   __radd__r  r   r   r   r   r,   s      r+   __add__FracElement.__add__  s   HH;;''ww!''!uuQWWqww.88uuQWWQWW_qwwqww>PP::++,,5517719,agg66![))ellM::u||?Q?QUVU\U\?\>>177>>CWCW[`C`::a=())A{++ellN;;@Q@QUVU[U[@[::a=(zz!}r-   c                   [        XR                  R                  R                  5      (       a6  U R	                  U R
                  U R                  U-  -   U R                  5      $ U R                  U5      u  p#nUS:X  a6  U R	                  U R
                  U R                  U-  -   U R                  5      $ U(       d  [        $ U R	                  U R
                  U-  U R                  U-  -   U R                  U-  5      $ Nr   	rd   r,   r]   r_   r   r   r   r!  r  r   cr  g_numerg_denoms        r+   r$  FracElement.__radd__  s    a++,,5517719,agg66 003W7551777?2AGG<<!!551777?:AGGGOLLr-   c                   U R                   nU(       d  U $ U (       d  U* $ [        XR                  5      (       a  U R                  UR                  :X  a3  U R	                  U R
                  UR
                  -
  U R                  5      $ U R	                  U R
                  UR                  -  U R                  UR
                  -  -
  U R                  UR                  -  5      $ [        XR                  R                  5      (       a6  U R	                  U R
                  U R                  U-  -
  U R                  5      $ [        U[        5      (       a  [        UR                  [        5      (       a%  UR                  R                   UR                   :X  a  O[        UR                   R                  [        5      (       a5  UR                   R                  R                   U:X  a  UR                  U 5      $ [        $ [        U[        5      (       aU  [        UR                  [        5      (       a%  UR                  R                  UR                  :X  a  OUR                  U 5      $ U R                  U5      u  p4nUS:X  a6  U R	                  U R
                  U R                  U-  -
  U R                  5      $ U(       d  [        $ U R	                  U R
                  U-  U R                  U-  -
  U R                  U-  5      $ )z-Subtract rational functions ``f`` and ``g``. r   )r,   rd   r_   r   r   r   r]   rS   r(   r   __rsub__r  r   r   r!  r   r   r,   r  r-  r.  s         r+   __sub__FracElement.__sub__  s   H2I;;''ww!''!uuQWWqww.88uuQWWQWW_qwwqww>PP::++,,5517719,agg66![))ellM::u||?Q?QUVU\U\?\>>177>>CWCW[`C`::a=())A{++ellN;;@Q@QUVU[U[@[::a=( 003W7551777?2AGG<<!!551777?:AGGGOLLr-   c                   [        XR                  R                  R                  5      (       a7  U R	                  U R
                  * U R                  U-  -   U R                  5      $ U R                  U5      u  p#nUS:X  a7  U R	                  U R
                  * U R                  U-  -   U R                  5      $ U(       d  [        $ U R	                  U R
                  * U-  U R                  U-  -   U R                  U-  5      $ r)  r*  r+  s        r+   r1  FracElement.__rsub__  s    a++,,55!''AGGAI-qww77 003W755!''AGGGO3QWW==!!55!''')AGGGO;QWWW_MMr-   c                   U R                   nU (       a  U(       d  UR                  $ [        XR                  5      (       a@  U R	                  U R
                  UR
                  -  U R                  UR                  -  5      $ [        XR                  R                  5      (       a)  U R	                  U R
                  U-  U R                  5      $ [        U[        5      (       a  [        UR                  [        5      (       a%  UR                  R                   UR                   :X  a  O[        UR                   R                  [        5      (       a5  UR                   R                  R                   U:X  a  UR                  U 5      $ [        $ [        U[        5      (       aU  [        UR                  [        5      (       a%  UR                  R                  UR                  :X  a  OUR                  U 5      $ U R                  U5      $ )z-Multiply rational functions ``f`` and ``g``. )r,   r`   rd   r_   r   r   r   r]   rS   r(   r   __rmul__r  r   r   r%  s      r+   __mul__FracElement.__mul__  sQ   ::;;''55!''!''/::::++,,55AGG,,![))ellM::u||?Q?QUVU\U\?\>>177>>CWCW[`C`::a=())A{++ellN;;@Q@QUVU[U[@[::a=(zz!}r-   c                   [        XR                  R                  R                  5      (       a)  U R	                  U R
                  U-  U R                  5      $ U R                  U5      u  p#nUS:X  a)  U R	                  U R
                  U-  U R                  5      $ U(       d  [        $ U R	                  U R
                  U-  U R                  U-  5      $ r)  r*  r+  s        r+   r8  FracElement.__rmul__  s    a++,,55AGG,, 003W755!''22!!55!'''/::r-   c                   U R                   nU(       d  [        e[        XR                  5      (       a@  U R	                  U R
                  UR                  -  U R                  UR
                  -  5      $ [        XR                  R                  5      (       a)  U R	                  U R
                  U R                  U-  5      $ [        U[        5      (       a  [        UR                  [        5      (       a%  UR                  R                   UR                   :X  a  O[        UR                   R                  [        5      (       a5  UR                   R                  R                   U:X  a  UR                  U 5      $ [        $ [        U[        5      (       aU  [        UR                  [        5      (       a%  UR                  R                  UR                  :X  a  OUR                  U 5      $ U R                  U5      u  p4nUS:X  a)  U R	                  U R
                  U R                  U-  5      $ U(       d  [        $ U R	                  U R
                  U-  U R                  U-  5      $ )z0Computes quotient of fractions ``f`` and ``g``. r   )r,   r   rd   r_   r   r   r   r]   rS   r(   r   __rtruediv__r  r   r   r!  r2  s         r+   __truediv__FracElement.__truediv__  s   ##;;''55!''!''/::::++,,55!''!),,![))ellM::u||?Q?QUVU\U\?\>>177>>CWCW[`C`>>!,,))A{++ellN;;@Q@QUVU[U[@[>>!,, 003W755!'''/22!!55!'''/::r-   c                   U (       d  [         e[        XR                  R                  R                  5      (       a)  U R                  U R                  U-  U R                  5      $ U R                  U5      u  p#nUS:X  a)  U R                  U R                  U-  U R                  5      $ U(       d  [        $ U R                  U R                  U-  U R                  U-  5      $ r)  )
r   rd   r,   r]   r_   r   r   r   r!  r  r+  s        r+   r>  FracElement.__rtruediv__2  s    ##77<<--..55AGG,, 003W755!''22!!55!'''/::r-   c                    US:  a,  U R                  U R                  U-  U R                  U-  5      $ U (       d  [        eU R                  U R                  U* -  U R                  U* -  5      $ )z+Raise ``f`` to a non-negative power ``n``. r   )r   r   r   r   )r   ns     r+   __pow__FracElement.__pow__A  sX    699QWWaZ!44##99QWWqb[!''A2+66r-   c                    UR                  5       nU R                  U R                  R                  U5      U R                  -  U R                  U R                  R                  U5      -  -
  U R                  S-  5      $ )zComputes partial derivative in ``x``.

Examples
========

>>> from sympy.polys.fields import field
>>> from sympy.polys.domains import ZZ

>>> _, x, y, z = field("x,y,z", ZZ)
>>> ((x**2 + y)/(z + 1)).diff(x)
2*x/(z + 1)

r6   )r|   r   r   diffr   )r   xs     r+   rH  FracElement.diffJ  sX     IIKuuQWW\\!_QWW,qwwqww||A/FFQR
SSr-   c                ,   S[        U5      s=:  a  U R                  R                  ::  a;  O  O8U R                  [	        [        U R                  R                  U5      5      5      $ [        SU R                  R                  < S[        U5      < 35      e)Nr   z expected at least 1 and at most z values, got )r>   r,   rU   evaluater7   rc   r%   r}   )r   r<   s     r+   r   FracElement.__call__[  sb    s6{+aggmm+::d3qww||V#<=>>TUT[T[TaTacfgmcnoppr-   c                   [        U[        5      (       a_  Uc\  U VVs/ s H  u  p2UR                  5       U4PM     nnnU R                  R	                  U5      U R
                  R	                  U5      pTOEUR                  5       nU R                  R	                  X5      U R
                  R	                  X5      pTUR                  R                  5       nUR                  XE5      $ s  snnf rr   )	rd   r7   r|   r   rL  r   r]   r   r   )r   rI  aXr   r   r,   s          r+   rL  FracElement.evaluatea  s    a19/02qtq199;"qA277++A.0@0@0C5		A77++A11773C3CA3I5

##%yy&& 3s   C%c                   [        U[        5      (       a_  Uc\  U VVs/ s H  u  p2UR                  5       U4PM     nnnU R                  R	                  U5      U R
                  R	                  U5      pTOEUR                  5       nU R                  R	                  X5      U R
                  R	                  X5      pTU R                  XE5      $ s  snnf rr   )rd   r7   r|   r   subsr   r   )r   rI  rO  rP  r   r   s         r+   rS  FracElement.subsl  s    a19/02qtq199;"qA277<<?AGGLLO5		A77<<-qww||A/A5uuU"" 3s   Cc                    [         err   )r   )r   rI  rO  s      r+   composeFracElement.composev  s    !!r-   )r\   r   r   rr   )+rV   r   r   r   r   r   r   r   r|   r   rt   r\   rw   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r!  r&  r$  r3  r1  r9  r8  r?  r>  rE  rH  r   rL  rS  rV  r   r   r-   r+   rS   rS     s    G)/
&4 EB/I@>"+,$(>M$MLN4;;B;7T"q	'#"r-   rS   N)?r   
__future__r   typingr   	functoolsr   operatorr   r   r   r	   r
   r   sympy.core.exprr   sympy.core.modr   sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr   sympy.core.sympifyr   r   &sympy.functions.elementary.exponentialr   !sympy.polys.domains.domainelementr   !sympy.polys.domains.fractionfieldr   "sympy.polys.domains.polynomialringr   sympy.polys.constructorr   sympy.polys.orderingsr   sympy.polys.polyerrorsr   sympy.polys.polyoptionsr   sympy.polys.polyutilsr   rT   r   sympy.printing.defaultsr   sympy.utilitiesr   sympy.utilities.iterablesr    sympy.utilities.magicr!   r,   r/   r3   rL   rM   __annotations__r$   rS   r   r-   r+   <module>rp     s    ' "   - -    # " $ 3 : ; ; = 4 % 1 1 : ) 3 " 1 )!$ # #
 "% ! !
 "%   2 2h  "n !t? t?lY"-+ Y"r-   