o
    ª3Ihˆ  ã                   @   s¨   d dl mZ d dlmZmZmZ d dlmZmZm	Z	 d dl
mZmZ dd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    )Úraises)ÚZZÚQQÚring)ÚPuiseuxRingÚPuiseuxPolyÚpuiseux_ring©ÚxÚyc                  C   sÎ   t dtƒ\} }t tgtƒ\}}t| tƒsJ ‚t|tƒsJ ‚| |ks#J ‚||ks)J ‚| tdtƒks2J ‚| ttgtƒks<J ‚| tdtƒksEJ ‚| tdtƒksNJ ‚| tdtƒksWJ ‚| tks]J ‚t| ƒdkseJ ‚d S )Nr
   r   úx, yzPuiseuxRing((x,), QQ))r   r   r
   Ú
isinstancer   r   r   Ústr)ÚRÚpxÚR2Úpx2© r   ú^/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sympy/polys/tests/test_puiseux.pyÚtest_puiseux_ring   s   r   c                  C   sÒ   t dtƒ\} }}tdtƒ\}}}|jtksJ ‚|jttfks J ‚|j||fks)J ‚|jdks0J ‚|j	| ks7J ‚|j
t| j
|ƒksBJ ‚|jt| j|ƒksMJ ‚|j| j  krZdks]J ‚ J ‚| dd¡dksgJ ‚d S )Nr   é   )r   r   ©é   r   )é   é   )r   é   )r   r   r   ÚdomainÚsymbolsr
   r   ÚgensÚngensÚ	poly_ringÚzeror   ÚoneÚ
zero_monomÚmonomial_mul©ÚR1Úpx1Úpy1r   r   Úpy2r   r   r   Útest_puiseux_ring_attributes   s    r*   c                  C   sž  t dtƒ\} }}tdtƒ\}}}|ddiƒd| |d  ks J ‚||ƒ|ks(J ‚|dƒ|jks1J ‚|tddƒƒtddƒ|j ksBJ ‚| |¡|ksKJ ‚| |¡|ksTJ ‚| dtdƒi¡d| |d  ksgJ ‚| tddƒdftdƒi¡d|tddƒ  |d  ks„J ‚| d¡d|j ksJ ‚| d¡tdƒks›J ‚t | d¡¡s¥J ‚| 	d¡d|j ks±J ‚t
| 	d¡tƒs»J ‚| |¡dksÄJ ‚| |¡dksÍJ ‚d S )Nr   r   r   r   r   r   )r   r   r   r"   Ú	from_polyÚ	from_dictÚfrom_intÚ
domain_newÚof_typeÚ
ground_newr   r   Úindexr%   r   r   r   Útest_puiseux_ring_methods+   s"    "&:r2   c                  C   sÀ   t dtƒ\} }tdtƒ\}}t||ƒ|ksJ ‚|j |ksJ ‚| ¡ | ¡   kr-tks0J ‚ J ‚||ks6J ‚|j|d   krDdksGJ ‚ J ‚||ksMJ ‚|dksSJ ‚|tddƒ |ks^J ‚d S )Nr
   r   r   g       @r   )r   r   r   r   Úas_exprr
   r"   )r&   r'   r   r   r   r   r   Útest_puiseux_poly?   s   $"r4   c                  C   s  t dtƒ\} }|d d | |d|    kr!| dddœƒks$J ‚ J ‚|tddƒ d |tddƒ   krC| tddƒfdiƒksFJ ‚ J ‚|tddƒ d |tddƒ    krg| tddƒ fdiƒksjJ ‚ J ‚|tddƒ tddƒ |tddƒ   krŒ| tddƒfdiƒksJ ‚ J ‚|tddƒ d |  kr¥| d	diƒks¨J ‚ J ‚|tddƒ |tddƒ  |tddƒ   krÌ| tddƒfdiƒksÏJ ‚ J ‚d| |d  |  krä| d	diƒksçJ ‚ J ‚d|tddƒ  |tddƒ  d  kr| d
diƒks	J ‚ J ‚d S )Nr
   r   r   ©©r   ©éÿÿÿÿr   r   éþÿÿÿé   r6   ©r   )r   r   ©r   r
   r   r   r   Útest_puiseux_poly_normalizationL   s   :DHJ2N0Hr=   c                     sP  t dtƒ\} }| ¡ dgksJ ‚t|ƒdgksJ ‚|d d  ¡ ddgks'J ‚| dddœƒ ¡ ddgks6J ‚| tdd	ƒfdiƒ ¡ tdd	ƒfgksKJ ‚| tdd	ƒ fdiƒ ¡ tdd	ƒ fgksbJ ‚|tdd
ƒ ‰ ˆ tdd
ƒf dksuJ ‚tt‡ fdd„ƒ ˆ  ¡ tdd
ƒfdiksŒJ ‚| ˆ  ¡ ƒˆ ks–J ‚t tdd
ƒfdi| ¡ˆ ks¦J ‚d S )Nr
   r6   r   r   ©r   r;   r5   r7   r   r   c                      s   ˆ d S )Nr6   r   r   ©Úpr   r   Ú<lambda>b   ó    z*test_puiseux_poly_monoms.<locals>.<lambda>)	r   r   ÚmonomsÚlistr   ÚKeyErrorÚto_dictr   r,   r<   r   r?   r   Útest_puiseux_poly_monomsX   s   *.$rG   c                  C   s”   t dtƒ\} }t|ƒdksJ ‚t|tddƒ ƒdksJ ‚td| ƒdks&J ‚td|d  d ƒdks4J ‚t| jƒdks=J ‚td| j ƒdksHJ ‚d S )	Nr
   r   r   zx**(1/2)zx**(-1)z
1 + 2*x**2Ú1Ú2)r   r   Úreprr"   r<   r   r   r   Útest_puiseux_poly_reprh   s   rK   c                  C   sÚ  t dtƒ\} }d| | |d|    kr| dddœƒks"J ‚ J ‚td| | ƒdks.J ‚d| d|  d|   krE| ddiƒksHJ ‚ J ‚td| d|  ƒdksVJ ‚|tddƒ |tddƒ  d|tddƒ    kr|| tddƒfdiƒksJ ‚ J ‚t|tddƒ |tddƒ  ƒdks“J ‚|tddƒ |tdd	ƒ  | tddƒfdtdd	ƒfdiƒks³J ‚t|tddƒ |tdd	ƒ  ƒd
ksÇJ ‚||tddƒ  | ddtddƒfdiƒksÞJ ‚t||tddƒ  ƒdksíJ ‚d|tddƒ  d|tdd	ƒ   | tddƒ fdtdd	ƒ fdiƒksJ ‚td|tddƒ  d|tdd	ƒ   ƒdks-J ‚d| |tddƒ  |tddƒ d|    krV| ddtddƒfdiƒksYJ ‚ J ‚td| |tddƒ  ƒdkskJ ‚d S )Nr
   r   r5   zx**(-1) + xr   r7   z	2*x**(-1)z
2*x**(1/2)r   zx**(1/3) + x**(1/2)r6   zx**(1/2) + xzx**(-1/2) + x**(-1/3)zx**(-1) + x**(1/2))r   r   rJ   r<   r   r   r   Útest_puiseux_poly_unifyr   s   64R(@(.N2X(rL   c                     sj  t dtƒ\} ‰ t dtƒ\}‰ˆ d d }|
 |ksJ ‚| dˆ d  ks&J ‚|| d|   kr;dˆ d  d ks>J ‚ J ‚|d d|   krQˆ d d ksTJ ‚ J ‚|tddƒ tddƒ|   krpˆ d tddƒ kssJ ‚ J ‚|| dks{J ‚|d d|   krŒˆ d ksJ ‚ J ‚|tddƒ tddƒ |   kr¬ˆ d tddƒ ks¯J ‚ J ‚d| | d   krÂˆ d  ksÅJ ‚ J ‚tddƒ| | tddƒ   krãˆ d  tddƒ ksæJ ‚ J ‚|| ˆ d dˆ d   d ksøJ ‚|d d|   kr	|ksJ ‚ J ‚d| |d   kr#dˆ d  d ks&J ‚ J ‚|tddƒ tddƒ|   krItddƒˆ d  tddƒ ksLJ ‚ J ‚ˆ tddƒ ˆ tddƒ  ˆ ks_J ‚tt‡ ‡fd	d
„ƒ tt‡ ‡fdd
„ƒ tt‡ ‡fdd
„ƒ tt‡ fdd
„ƒ tt‡ fdd
„ƒ tt‡ fdd
„ƒ tt‡ fdd
„ƒ tt‡ fdd
„ƒ tt‡ fdd
„ƒ d S )Nr
   r   r   r   r8   r   r   r   c                      s   ˆ ˆ S ©Nr   r   r	   r   r   rA   —   rB   z(test_puiseux_poly_arit.<locals>.<lambda>c                      s   ˆ ˆ S rM   r   r   r	   r   r   rA   ˜   rB   c                      s   ˆ ˆ S rM   r   r   r	   r   r   rA   ™   rB   c                      s   ˆ d  S rM   r   r   ©r
   r   r   rA   š   rB   c                      s   ˆ d  S rM   r   r   rN   r   r   rA   ›   rB   c                      s   ˆ d  S rM   r   r   rN   r   r   rA   œ   rB   c                      s   d ˆ  S rM   r   r   rN   r   r   rA      rB   c                      s   d ˆ  S rM   r   r   rN   r   r   rA   ž   rB   c                      s   d ˆ  S rM   r   r   rN   r   r   rA   Ÿ   rB   )r   r   r   Ú
ValueErrorÚ	TypeError)r   r   r@   r   r	   r   Útest_puiseux_poly_arit„   s6   0,>(@,B$(4L&rQ   c                     s¨  t dtƒ\} ‰t dtƒ\}‰ˆd d ‰ ˆ d ˆ ksJ ‚ˆ tddƒ dˆ    kr4dˆd  d ks7J ‚ J ‚ˆ ˆ ˆdˆ    krM| dddœƒksPJ ‚ J ‚dˆ dˆd    kre| ddiƒkshJ ‚ J ‚tddƒˆ tddƒˆd    kr˜ddˆ    kr˜dˆ d   kr˜| dtddƒiƒks›J ‚ J ‚tt‡ fdd	„ƒ tt‡fd
d	„ƒ tt‡fdd	„ƒ tt‡‡fdd	„ƒ tt‡fdd	„ƒ tt‡fdd	„ƒ d S )Nr
   r   r   r   r8   r5   r7   c                      s   ˆ d S )Nr   r   r   r?   r   r   rA   «   rB   z'test_puiseux_poly_div.<locals>.<lambda>c                      s   ˆ d ˆ d  S ©Nr   r   r   r   rN   r   r   rA   ¬   ó    c                      s   ˆ d ˆ d  S )Nr   r   r   rN   r   r   rA   ­   rS   c                      s   ˆ ˆ S rM   r   r   r	   r   r   rA   ®   rB   c                      s   ˆ d  S rM   r   r   rN   r   r   rA   ¯   rB   c                      s   d ˆ  S rM   r   r   rN   r   r   rA   °   rB   )r   r   r   ÚZeroDivisionErrorrO   rP   )r   r   r   )r@   r
   r   r   Útest_puiseux_poly_div¢   s   620frU   c                     s`  t dtƒ\} ‰ t dtƒ\}‰ˆ d d  kr| ddiƒks"J ‚ J ‚ˆ d ˆ   kr3| ddiƒks6J ‚ J ‚ˆ d ˆ ˆ    krI| ddiƒksLJ ‚ J ‚ˆ tddƒ | tddƒfdiƒks_J ‚ˆ d dˆ    krr| d	diƒksuJ ‚ J ‚ˆ tddƒ  dˆ tddƒ    kr–| tddƒ fdiƒks™J ‚ J ‚dˆ  d ddˆ     krÉtddƒˆ    krÉtddƒˆ d    krÉ| d	tddƒiƒksÌJ ‚ J ‚dˆ d  dˆ d
    krã| ddiƒksæJ ‚ J ‚dˆd  dˆd
    krþ|ddiƒksJ ‚ J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡fdd„ƒ d S )Nr
   r   r   r;   r6   r   r>   r8   r7   r9   )r9   c                      s   ˆ d  S rM   r   r   rN   r   r   rA   ¿   rB   z'test_puiseux_poly_pow.<locals>.<lambda>c                      s   ˆ d d S )Nr   r8   r   r   rN   r   r   rA   À   ó    c                      s   ˆ d t ddƒ S rR   ©r   r   rN   r   r   rA   Á   ó    c                      s   dˆ  t ddƒ S )Nr   r   rW   r   rN   r   r   rA   Â   rX   c                      s   dˆ  d S )Nr   r8   r   r   )Úxzr   r   rA   Ã   rV   )r   r   r   r   rP   rO   )r   ÚRzr   )r
   rY   r   Útest_puiseux_poly_pow³   s    ((,&,Hf46r[   c                  C   sò   t dtƒ\} }}|d d  |¡d| ksJ ‚|d d  |¡dks$J ‚|d |d   |¡d| ks5J ‚|tddƒ |tddƒ   |¡tddƒ|tddƒ   ksUJ ‚|| tddƒ  |¡tddƒ|tddƒ  |tddƒ   kswJ ‚d S )Nr   r   r   r   )r   r   Údiff)r   r
   r   r   r   r   Útest_puiseux_poly_diffÆ   s   "@Hr]   N)Úsympy.testing.pytestr   Úsympyr   r   r   Úsympy.polys.puiseuxr   r   r   Ú	sympy.abcr
   r   r   r*   r2   r4   r=   rG   rK   rL   rQ   rU   r[   r]   r   r   r   r   Ú<module>   s    
