
    wgR                       U 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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 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$ 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. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 e2e&fd       Z7e2e&fd       Z8e2e&fd       Z9e2d        Z:i Z;de<d<    G d  d!e0      Z= G d" d#ee0e      Z>y$)%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                <    t        | ||      }|f|j                  z   S )zFConstruct new rational function field returning (field, x1, ..., xn). 	FracFieldgenssymbolsdomainorder_fields       W/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/polys/fields.pyfieldr,      s#     w.F9v{{""    c                8    t        | ||      }||j                  fS )zHConstruct new rational function field returning (field, (x1, ..., xn)). r#   r&   s       r+   xfieldr/   $   s!     w.FFKK  r-   c                    t        | ||      }t        |j                  D cg c]  }|j                   c}|j                         |S c c}w )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&..23chh2FKK@M 3s   Ac                   d}t        |       s| gd}} t        t        t        |             } t	        ||      }g }| D ]!  }|j                  |j                                # t        ||      \  }}|j                  Ft        |D cg c]  }t        |j                                c}g       }	t        |	|      \  |_        }
t        |j                  |j                  |j                        }g }t        dt!        |      d      D ](  }|j#                   |t%        |||dz                       * |r||d   fS ||fS c c}w )a  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   s0   4 FuvWe$%E

)CG .t**,-.(#6ID#
zz D9Sd3::<(92>(S9
AsxxSYY7FE1c$i# 1VE$q1+./01 a!! :s    D<zdict[Any, Any]_field_cachec                  |    e Zd ZdZefdZd Zd Zd Zd Z	d Z
d Zdd
ZddZd Zd Zd ZeZd Zd Zd Zd Zy	)r$   z2Multivariate distributed rational function field. c                "   ddl m}  ||||      }|j                  }|j                  }|j                  }|j
                  }| j                  ||||f}t        j                  |      }|%t        j                  |       }||_        t        |      |_        ||_        t        dt         fd|i      |_        ||_        ||_        ||_        ||_        |j#                  |j$                        |_        |j#                  |j&                        |_        |j)                         |_        t-        |j                  |j*                        D ]<  \  }	}
t/        |	t0              s|	j2                  }t5        ||      r0t7        |||
       > |t        |<   |S )Nr   PolyRingFracElementr,   )sympy.polys.ringsrQ   r'   ngensr(   r)   __name__rM   getobject__new___hash_tuplehash_hashringtyperR   dtypezeroone_gensr%   zip
isinstancer   r1   hasattrsetattr)clsr'   r(   r)   rQ   r\   rT   rY   objsymbol	generatorr1   s               r+   rX   zFracField.__new__k   sL   ./,,



||WeVUC{+;..%C)CO[)CICH][NWcNKCI!CKCICJCIyy+CHii)CGyy{CH%(chh%? 6!	ff-!;;D"3-T956 ),L%
r-   c                    t        | j                  j                  D cg c]  }| j                  |       c}      S c c}w )z(Return a list of polynomial generators. )r@   r\   r%   r^   selfgens     r+   ra   zFracField._gens   s+    $))..B3tzz#BCCBs   =c                H    | j                   | j                  | j                  fS N)r'   r(   r)   rl   s    r+   __getnewargs__zFracField.__getnewargs__   s    dkk4::66r-   c                    | j                   S ro   )r[   rp   s    r+   __hash__zFracField.__hash__   s    zzr-   c                    t        || j                        r)| j                  j                  |j	                               S t        d| j                  d|d      )Nzexpected a , got z instead)rc   r^   r\   indexto_poly
ValueErrorrk   s     r+   rv   zFracField.index   s=    c4::&99??3;;=11

3OPPr-   c                    t        |t              xr] | j                  | j                  | j                  | j
                  f|j                  |j                  |j                  |j
                  fk(  S ro   )rc   r$   r'   rT   r(   r)   rl   others     r+   __eq__zFracField.__eq__   sV    %+ D\\4::t{{DJJ?]]EKKu{{CD	Dr-   c                    | |k(   S ro    rz   s     r+   __ne__zFracField.__ne__   s    5=  r-   Nc                &    | j                  ||      S ro   )r^   rl   numerdenoms      r+   raw_newzFracField.raw_new   s    zz%''r-   c                ~    || j                   j                  }|j                  |      \  }}| j                  ||      S ro   )r\   r`   cancelr   r   s      r+   newzFracField.new   s6    =$))--%||E*u||E5))r-   c                8    | j                   j                  |      S ro   )r(   convert)rl   elements     r+   
domain_newzFracField.domain_new   s    {{""7++r-   c                   	 | j                  | j                  j                  |            S # t        $ r | j                  }|j
                  s|j                  r| j                  }|j                         }|j                  |      }|j                  |j                  |            }|j                  |j                  |            }| j                  ||      cY S  w xY wro   )r   r\   
ground_newr   r(   is_Fieldhas_assoc_Field	get_fieldr   r   r   r   )rl   r   r(   r\   ground_fieldr   r   s          r+   r   zFracField.ground_new   s    	88DII009:: 	[[F??v'='=yy%//1&..w7(:(:7(CD(:(:7(CD||E511	s   ), B,CCc                X   t        |t              r| |j                  k(  r|S t        | j                  t              r4| j                  j                  |j                  k(  r| j                  |      S t        | j                  t              rB| j                  j                  j                         |j                  k(  r| j                  |      S t        d      t        |t              r|j                         \  }}t        | j                  t              r?|j                  | j                  j                  k(  r| j                  j                  |      }nt        | j                  t              rM|j                  | j                  j                  j                         k(  r| j                  j                  |      }n|j                  | j                        }| j                  j                  |      }| j                  ||      S t        |t              rLt!        |      dk(  r>t#        t%        | j                  j&                  |            \  }}| j)                  ||      S t        |t*              rt        d      t        |t,              r| j/                  |      S | j                  |      S )N
conversionr6   parsing)rc   rR   r,   r(   r   r   r   r\   to_fieldNotImplementedErrorr   clear_denomsto_ringset_ringr   r@   r>   r7   r8   ring_newr   strr   	from_expr)rl   r   r   r   s       r+   	field_newzFracField.field_new   s   g{+w}}$$++}5!!W]]2w//DKK8  ))+w}}<w//),77-"//1LE5$++~6

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

dkk//7799		,,U3tyy1II((/E<<u--'CLA,=DII$6$6 @ALE588E5))%%i00&>>'**??7++r-   c                    | j                   t        d j                         D              fd |      S )Nc              3  x   K   | ]2  }|j                   st        |t              r||j                         f 4 y wro   )is_Powrc   r   as_base_exp).0rm   s     r+   	<genexpr>z*FracField._rebuild_expr.<locals>.<genexpr>   s3      7CzzZW5 S__./ 7s   8:c           	     p   	j                  |       }||S | j                  r-t        t        t	        t        | j                                    S | j                  r-t        t        t	        t        | j                                    S | j                  st        | t        t        f      r| j                         \  }}
D ]?  \  }\  }}||k(  st        ||      dk(  s	j                  |      t        ||z        z  c S  |j                   rQ|t"        j$                  ur? |      t        |      z  S 	j                  d| z        d	j                  d| z        z  S 	 j'                  |       S # t(        $ r; j*                  s-j,                  r!j/                         j'                  |       cY S  w xY w)Nr      )rV   is_Addr   r   r7   r8   argsis_Mulr   r   rc   r   r   r   r   int
is_Integerr   Oner   r   r   r   r   )rE   ri   berm   bgeg_rebuildr(   mappingpowerss          r+   r   z)FracField._rebuild_expr.<locals>._rebuild   sq   D)I$  c4Hdii(@#ABBc4Hdii(@#ABB
4'4 A'')1%+ ;MC"bQw3q":?&{{3/QrT::; <<AQUUN#A;A..QtV$0QtV,,,~~d++! 6+A+A!++-55d;;	s    E1 1A F53F5)r(   r@   keys)rl   rE   r   r   r(   r   s     `@@@r+   _rebuild_exprzFracField._rebuild_expr   s9     77<<> 7 7	8 ~r-   c                    t        t        t        | j                  | j                                    }	 | j                  t        |      |      }| j                  |      S # t        $ r t        d| d|      w xY w)Nz=expected an expression convertible to a rational function in ru   )
dictr7   rb   r'   r%   r   r   r   r   rx   )rl   rE   r   fracs       r+   r   zFracField.from_expr  sq    tCdii89:	(%%gdmW=D >>$''  	wjnptuvv	ws   A   A;c                    t        |       S ro   r   rp   s    r+   	to_domainzFracField.to_domain  s    T""r-   c                ^    ddl m}  || j                  | j                  | j                        S )Nr   rP   )rS   rQ   r'   r(   r)   )rl   rQ   s     r+   r   zFracField.to_ring  s     .dkk4::>>r-   ro   )rU   
__module____qualname____doc__r   rX   ra   rq   rs   rv   r|   r   r   r   r   r   r   __call__r   r   r   r   r~   r-   r+   r$   r$   h   se    <,/ $LD7QD
!(*
, #,J H!F(#?r-   r$   c                      e Zd Z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 Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d'd$Z&d'd%Z'd'd&Z(y)(rR   z=Element of multivariate distributed rational function field. Nc                    |!| j                   j                  j                  }n|st        d      || _        || _        y )Nzzero denominator)r,   r\   r`   ZeroDivisionErrorr   r   r   s      r+   __init__zFracElement.__init__!  s7    =JJOO''E#$677

r-   c                &    | j                  ||      S ro   )	__class__fr   r   s      r+   r   zFracElement.raw_new*  s    {{5%((r-   c                >     | j                   |j                  |       S ro   )r   r   r   s      r+   r   zFracElement.new,  s    qyy%,,u-..r-   c                N    | j                   dk7  rt        d      | j                  S )Nr   zf.denom should be 1)r   rx   r   r   s    r+   rw   zFracElement.to_poly/  s"    77a<233wwr-   c                6    | j                   j                         S ro   )r,   r   rp   s    r+   parentzFracElement.parent4  s    zz##%%r-   c                H    | j                   | j                  | j                  fS ro   )r,   r   r   rp   s    r+   rq   zFracElement.__getnewargs__7  s    

DJJ

33r-   c                    | j                   }|3t        | j                  | j                  | j                  f      x| _         }|S ro   )r[   rZ   r,   r   r   )rl   r[   s     r+   rs   zFracElement.__hash__<  s9    

=!%tzz4::tzz&J!KKDJr-   c                    | j                  | j                  j                         | j                  j                               S ro   )r   r   copyr   rp   s    r+   r   zFracElement.copyB  s)    ||DJJOO-tzz/@AAr-   c                    | j                   |k(  r| S |j                  }| j                  j                  |      }| j                  j                  |      }|j                  ||      S ro   )r,   r\   r   r   r   r   )rl   	new_fieldnew_ringr   r   s        r+   	set_fieldzFracElement.set_fieldE  sU    ::"K ~~HJJ''1EJJ''1E==..r-   c                h     | j                   j                  |  | j                  j                  | z  S ro   )r   as_exprr   )rl   r'   s     r+   r   zFracElement.as_exprN  s0    !tzz!!7+,>DJJ,>,>,HHHr-   c                8   t        |t              rM| j                  |j                  k(  r4| j                  |j                  k(  xr | j                  |j                  k(  S | j                  |k(  xr- | j                  | j                  j
                  j                  k(  S ro   )rc   rR   r,   r   r   r\   r`   r   gs     r+   r|   zFracElement.__eq__Q  sj    a%!''QWW*<77agg%<!''QWW*<<77a<?AGGqww||/?/?$??r-   c                    | |k(   S ro   r~   r   s     r+   r   zFracElement.__ne__W  s    6zr-   c                ,    t        | j                        S ro   )boolr   r   s    r+   __bool__zFracElement.__bool__Z  s    AGG}r-   c                j    | j                   j                         | j                  j                         fS ro   )r   sort_keyr   rp   s    r+   r   zFracElement.sort_key]  s'    

##%tzz':':'<==r-   c                    t        || j                  j                        r% || j                         |j                               S t        S ro   )rc   r,   r^   r   NotImplemented)f1f2ops      r+   _cmpzFracElement._cmp`  s3    b"((..)bkkmR[[]33!!r-   c                .    | j                  |t              S ro   )r   r   r   r   s     r+   __lt__zFracElement.__lt__f      wwr2r-   c                .    | j                  |t              S ro   )r   r	   r   s     r+   __le__zFracElement.__le__h  r   r-   c                .    | j                  |t              S ro   )r   r
   r   s     r+   __gt__zFracElement.__gt__j  r   r-   c                .    | j                  |t              S ro   )r   r   r   s     r+   __ge__zFracElement.__ge__l  r   r-   c                N    | j                  | j                  | j                        S z"Negate all coefficients in ``f``. r   r   r   r   s    r+   __pos__zFracElement.__pos__o  s    yy!''**r-   c                P    | j                  | j                   | j                        S r   r   r   s    r+   __neg__zFracElement.__neg__s  s    yy!''177++r-   c                X   | j                   j                  }	 |j                  |      }d|d fS # t        $ rr |j                  sc|j
                  rW|j                         }	 |j                  |      }d|j                  |      |j                  |      fcY S # t        $ r Y Y yw xY wY yw xY w)Nr   )r   NN)	r,   r(   r   r   r   r   r   r   r   )rl   r   r(   r   s       r+   _extract_groundzFracElement._extract_groundw  s    ""	$nnW-G gt##  	!??v'='=%//1X*227;G |11':L<N<Nw<WWW &  !
 !	!s3   . 1B) B1#B)	B#B)"B##B)(B)c                   | j                   }|s| S | s|S t        ||j                        r| j                  |j                  k(  r3| j	                  | j
                  |j
                  z   | j                        S | j	                  | j
                  |j                  z  | j                  |j
                  z  z   | j                  |j                  z        S t        ||j                  j                        r6| j	                  | j
                  | j                  |z  z   | j                        S t        |t              rt        |j                  t              r$|j                  j                   |j                   k(  rnt        |j                   j                  t              r4|j                   j                  j                   |k(  r|j                  |       S t        S t        |t              rOt        |j                  t              r$|j                  j                  |j                  k(  rn|j                  |       S | j                  |      S )z(Add rational functions ``f`` and ``g``. )r,   rc   r^   r   r   r   r\   rR   r(   r   __radd__r   r   r   r   r   r,   s      r+   __add__zFracElement.__add__  s   HH5;;'ww!''!uuQWWqww.88uuQWWQWW_qwwqww>PP5::++,5517719,agg66![)ellM:u||?Q?QUVU\U\?\>177>>CWCW[`C`::a=())A{+ellN;@Q@QUVU[U[@[::a=(zz!}r-   c                   t        || j                  j                  j                        r6| j	                  | j
                  | j                  |z  z   | j                        S | j                  |      \  }}}|dk(  r6| j	                  | j
                  | j                  |z  z   | j                        S |st        S | j	                  | j
                  |z  | j                  |z  z   | j                  |z        S Nr   	rc   r,   r\   r^   r   r   r   r   r   r   cr   g_numerg_denoms        r+   r   zFracElement.__radd__  s    a++,5517719,agg66 003GW7551777?2AGG<<!!551777?:AGGGOLLr-   c                   | j                   }|s| S | s| S t        ||j                        r| j                  |j                  k(  r3| j	                  | j
                  |j
                  z
  | j                        S | j	                  | j
                  |j                  z  | j                  |j
                  z  z
  | j                  |j                  z        S t        ||j                  j                        r6| j	                  | j
                  | j                  |z  z
  | j                        S t        |t              rt        |j                  t              r$|j                  j                   |j                   k(  rnt        |j                   j                  t              r4|j                   j                  j                   |k(  r|j                  |       S t        S t        |t              rOt        |j                  t              r$|j                  j                  |j                  k(  rn|j                  |       S | j                  |      \  }}}|dk(  r6| j	                  | j
                  | j                  |z  z
  | j                        S |st        S | j	                  | j
                  |z  | j                  |z  z
  | j                  |z        S )z-Subtract rational functions ``f`` and ``g``. r   )r,   rc   r^   r   r   r   r\   rR   r(   r   __rsub__r   r   r   r   r   r   r,   r   r  r  s         r+   __sub__zFracElement.__sub__  s   H2I5;;'ww!''!uuQWWqww.88uuQWWQWW_qwwqww>PP5::++,5517719,agg66![)ellM:u||?Q?QUVU\U\?\>177>>CWCW[`C`::a=())A{+ellN;@Q@QUVU[U[@[::a=( 003GW7551777?2AGG<<!!551777?:AGGGOLLr-   c                   t        || j                  j                  j                        r7| j	                  | j
                   | j                  |z  z   | j                        S | j                  |      \  }}}|dk(  r7| j	                  | j
                   | j                  |z  z   | j                        S |st        S | j	                  | j
                   |z  | j                  |z  z   | j                  |z        S r   r   r   s        r+   r  zFracElement.__rsub__  s    a++,55!''AGGAI-qww77 003GW755!''AGGGO3QWW==!!55!''')AGGGO;QWWW_MMr-   c                   | j                   }| r|s|j                  S t        ||j                        r@| j	                  | j
                  |j
                  z  | j                  |j                  z        S t        ||j                  j                        r)| j	                  | j
                  |z  | j                        S t        |t              rt        |j                  t              r$|j                  j                   |j                   k(  rnt        |j                   j                  t              r4|j                   j                  j                   |k(  r|j                  |       S t        S t        |t              rOt        |j                  t              r$|j                  j                  |j                  k(  rn|j                  |       S | j                  |      S )z-Multiply rational functions ``f`` and ``g``. )r,   r_   rc   r^   r   r   r   r\   rR   r(   r   __rmul__r   r   r   r   s      r+   __mul__zFracElement.__mul__  s@   ::5;;'55!''!''/::5::++,55AGG,,![)ellM:u||?Q?QUVU\U\?\>177>>CWCW[`C`::a=())A{+ellN;@Q@QUVU[U[@[::a=(zz!}r-   c                   t        || j                  j                  j                        r)| j	                  | j
                  |z  | j                        S | j                  |      \  }}}|dk(  r)| j	                  | j
                  |z  | j                        S |st        S | j	                  | j
                  |z  | j                  |z        S r   r   r   s        r+   r	  zFracElement.__rmul__  s    a++,55AGG,, 003GW755!''22!!55!'''/::r-   c                l   | j                   }|st        t        ||j                        r@| j	                  | j
                  |j                  z  | j                  |j
                  z        S t        ||j                  j                        r)| j	                  | j
                  | j                  |z        S t        |t              rt        |j                  t              r$|j                  j                   |j                   k(  rnt        |j                   j                  t              r4|j                   j                  j                   |k(  r|j                  |       S t        S t        |t              rOt        |j                  t              r$|j                  j                  |j                  k(  rn|j                  |       S | j                  |      \  }}}|dk(  r)| j	                  | j
                  | j                  |z        S |st        S | j	                  | j
                  |z  | j                  |z        S )z0Computes quotient of fractions ``f`` and ``g``. r   )r,   r   rc   r^   r   r   r   r\   rR   r(   r   __rtruediv__r   r   r   r   r  s         r+   __truediv__zFracElement.__truediv__  s   ##5;;'55!''!''/::5::++,55!''!),,![)ellM:u||?Q?QUVU\U\?\>177>>CWCW[`C`>>!,,))A{+ellN;@Q@QUVU[U[@[>>!,, 003GW755!'''/22!!55!'''/::r-   c                   | st         t        || j                  j                  j                        r)| j                  | j                  |z  | j                        S | j                  |      \  }}}|dk(  r)| j                  | j                  |z  | j                        S |st        S | j                  | j                  |z  | j                  |z        S r   )
r   rc   r,   r\   r^   r   r   r   r   r   r   s        r+   r  zFracElement.__rtruediv__2  s    ##177<<--.55AGG,, 003GW755!''22!!55!'''/::r-   c                    |dk\  r,| j                  | j                  |z  | j                  |z        S | st        | j                  | j                  | z  | j                  | z        S )z+Raise ``f`` to a non-negative power ``n``. r   )r   r   r   r   )r   ns     r+   __pow__zFracElement.__pow__A  sX    699QWWaZ!44##99QWWqb[!''A2+66r-   c                    |j                         }| j                  | j                  j                  |      | j                  z  | j                  | j                  j                  |      z  z
  | j                  dz        S )a  Computes 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   )rw   r   r   diffr   )r   xs     r+   r  zFracElement.diffJ  sX     IIKuuQWW\\!_QWW,qwwqww||A/FFQR
SSr-   c                $   dt        |      cxk  r| j                  j                  k  r;n n8| j                  t	        t        | j                  j                  |                  S t        d| j                  j                  dt        |            )Nr   z expected at least 1 and at most z values, got )r>   r,   rT   evaluater7   rb   r%   rx   )r   r<   s     r+   r   zFracElement.__call__[  sb    s6{+aggmm+::d3qww||V#<=>>TUT[T[TaTacfgmcnoppr-   c                   t        |t              r]|[|D cg c]  \  }}|j                         |f }}}| j                  j	                  |      | j
                  j	                  |      }}nH|j                         }| j                  j	                  ||      | j
                  j	                  ||      }}|j                  j                         }|j                  ||      S c c}}w ro   )	rc   r7   rw   r   r  r   r\   r   r   )r   r  aXr   r   r,   s          r+   r  zFracElement.evaluatea  s    a19/02tq!199;"2A277++A.0@0@0C5E		A77++Aq11773C3CAq3I5E

##%yy&& 3s   C"c                   t        |t              r]|[|D cg c]  \  }}|j                         |f }}}| j                  j	                  |      | j
                  j	                  |      }}nH|j                         }| j                  j	                  ||      | j
                  j	                  ||      }}| j                  ||      S c c}}w ro   )rc   r7   rw   r   subsr   r   )r   r  r  r  r   r   s         r+   r  zFracElement.subsl  s    a19/02tq!199;"2A277<<?AGGLLO5E		A77<<1-qww||Aq/A5EuuUE"" 3s   Cc                    t         ro   )r   )r   r  r  s      r+   composezFracElement.composev  s    !!r-   ro   ))rU   r   r   r   r   r   r   rw   r   rq   r[   rs   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r	  r  r  r  r  r   r  r  r  r~   r-   r+   rR   rR     s    G)/
&4 EB/I@>"+,$(>M$MLN4;;B;7T"q	'#"r-   rR   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   rS   r   sympy.printing.defaultsr   sympy.utilitiesr   sympy.utilities.iterablesr    sympy.utilities.magicr!   r,   r/   r3   rL   rM   __annotations__r$   rR   r~   r-   r+   <module>r7     s    ' "   - -    # " $ 3 : ; ; = 4 % 1 1 : ) 3 " 1 )!$ # #
 "% ! !
 "%   2 2h  "n !t? t?lY"-+ Y"r-   