o
    GZŽh&  ã                   @   sD  d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZmZ ddlmZ dd	lmZmZ dd
l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#d$„ Z&d%d&„ Z'd'd(„ Z(d)d*„ Z)d+d,„ Z*ed-d.„ ƒZ+d/d0„ Z,d1d2„ Z-d3d4„ Z.d5d6„ Z/d7S )8z Test sparse rational functions. é    )ÚfieldÚsfieldÚ	FracFieldÚFracElement)Úring)ÚZZÚQQ)Úlex)ÚraisesÚXFAIL)ÚsymbolsÚE)ÚRational)ÚexpÚlog)Úsqrtc                  C   s   t dttƒ} t dttƒ}t dttƒ}| j| jd ksJ ‚| j| jd ks&J ‚| j|jks.J ‚| j|jks6J ‚| j|jks>J ‚| j|jksFJ ‚d S )Núx,yúx,y,zr   é   )r   r   r	   ÚxÚgensÚy)ÚF1ÚF2ÚF3© r   úL/var/www/auris/lib/python3.10/site-packages/sympy/polys/tests/test_fields.pyÚtest_FracField___init__   s   r   c                  C   s"   t dtƒ\} }}}t| ƒsJ ‚d S ©Nr   ©r   r   Úhash©ÚFr   r   Úzr   r   r   Útest_FracField___hash__   s   r$   c                   C   s¤   t dtƒd t dtƒd ksJ ‚t dtƒd t dtƒd ks J ‚t dtƒd t dtƒd ks0J ‚t dtƒd t dtƒd ks@J ‚t dtƒd t dtƒd ksPJ ‚d S )Nr   r   r   )r   r   r   r   r   r   r   Útest_FracField___eq__   s
       $r%   c            	      C   s  t dƒ} tttt| ƒƒt| ƒfttƒ}|j\}}}tt| ƒtt| ƒd tt| ƒd ƒd  ƒd  t| ƒd  ƒ||d |d  | fksGJ ‚t| td|  ƒt| ƒ| t	ddƒ fttƒ}|j\}}}}t| d t| ƒ d| d   td|  t| ƒd  ƒ | d  ƒ|d|j
d  | |j
| |  d| |  |d  fks¡J ‚t| t| ƒt| t| ƒ ƒfttƒ}|j\}}}t| d | | t| ƒ t	ddƒ   d| t| ƒd    ƒ||j
|d  |j
|  |d  ||  |j
d |d  | |j
|d  |   fksJ ‚d S )Nr   r   é   é   é   é   )r   r   r   r   r   r	   r   r   r   r   r   r   )	r   r"   ÚeZexexÚexÚ_ZlgZx3Zsrtr   r   r   Útest_sfield%   s$   >ÿ*>6ÿ"8(&ÿÿr-   c                  C   s*   t dtƒ\} }}}t|| | ƒsJ ‚d S r   r   r!   r   r   r   Útest_FracElement___hash__8   s   r.   c                  C   sP   t dtƒ\} }}}|| d | }| ¡ }||ksJ ‚d|jd< ||ks&J ‚d S )Nr   r&   é   )r   r   r   )r   r   ÚcopyÚnumer)r"   r   r   r#   ÚfÚgr   r   r   Útest_FracElement_copy<   s   
r4   c                     s  t dtƒ\} }}}d|d  | || |  d|d  d  ‰| j\‰ }}dˆ d  | ˆ | |  d|d  d  }ˆ|ksAJ ‚ˆ ¡ |ksIJ ‚tdƒ\‰ }}dˆ d  | ˆ | |  d|d  d  }ˆ|kslJ ‚ˆ ˆ ||¡|kswJ ‚tt‡ ‡fdd„ƒ d S )Nr   r&   r'   r/   r   c                      s
   ˆ  ˆ ¡S ©N)Úas_exprr   ©ÚXr2   r   r   Ú<lambda>V   ó   
 z*test_FracElement_as_expr.<locals>.<lambda>)r   r   r   r6   r
   Ú
ValueError)r"   r   r   r#   ÚYÚZr3   r   r7   r   Útest_FracElement_as_exprF   s   ,,,r>   c                     sþ  t dƒ\‰} }tˆ| |ftƒ\‰ }}}ˆ  d¡}|dkr!ˆ  |¡s#J ‚ˆ  tddƒ¡}|ˆ dƒd kr8ˆ  |¡s:J ‚ˆ  ˆ¡}||krHˆ  |¡sJJ ‚ˆ  tddƒˆ ¡}||tddƒ krbˆ  |¡sdJ ‚ˆ  dˆ ¡}|d| krvˆ  |¡sxJ ‚ˆ  ˆ|  | ¡}||| | krŽˆ  |¡sJ ‚ˆ  ˆ|  | ¡}||| | kr¦ˆ  |¡s¨J ‚ˆ  ˆ|  | ˆ|   ˆ ¡}||| | ||  | krÊˆ  |¡sÌJ ‚ˆ  ˆ|  | ˆ|   ˆ ˆ|  d  ¡}||| | ||  | || d  krúˆ  |¡süJ ‚ˆ  ˆd |  | ˆd | d   d ¡}||d | | |d |d   d kr,ˆ  |¡s.J ‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ ttdˆ   	¡  
dˆ  ¡tƒsVJ ‚ttˆd   	¡  
ˆd	 ¡tƒsiJ ‚ttttddƒƒ  	¡  
t¡tƒs}J ‚d S )
Nr   r   r&   r/   r'   c                      s   ˆ   dˆ ¡S )Nr'   )Ú	from_exprr   ©r"   r   r   r   r9   z   s    z,test_FracElement_from_expr.<locals>.<lambda>c                      s   ˆ   dˆ tdƒ ¡S )Nr/   r'   )r?   r   r   r@   r   r   r9   {   s    iúÿÿÿ)r   r   r   r?   Z
is_elementr   r
   r;   Ú
isinstanceÚ	get_fieldÚconvertr   r   r   )r   r#   r8   r<   r=   r2   r   r@   r   Útest_FracElement_from_exprX   sB   

 **6*:
ÿ
ÿÿrD   c                  C   s¶  t dƒ\} }}t | |¡}| |¡}|| | ƒ}|j| |¡| | ƒks&J ‚|j ¡ || | ƒgks4J ‚|j| |¡dƒks@J ‚t | |¡}| |¡}|| | ƒ}|j| |¡| | ƒks_J ‚|j ¡ || | ƒgksmJ ‚|j| |¡dƒksyJ ‚||| | ƒƒ}|j| |¡| | ƒksJ ‚|j ¡ || | ƒgksJ ‚|j| |¡dƒks©J ‚||| | ƒƒ}|j| |¡| | ƒks¿J ‚|j ¡ || | ƒgksÍJ ‚|j| |¡dƒksÙJ ‚d S )Nza b xr   )r   r   Z
frac_fieldr1   Z	poly_ringZcoeffsÚdenom)ÚaÚbr   r   r   Úfracr   ZF4r   r   r   Útest_FracField_nested…   s*   

rI   c                  C   s4  t dtƒ\} }}| dƒd|   k r$d|d    k r$d|d  k s'J ‚ J ‚| dƒd|   krCd|d    krCd|d  ksFJ ‚ J ‚d| d|   k rgd|   k rg||   k rgd|d  k sjJ ‚ J ‚d| d|   kr‹d|   kr‹||   kr‹d|d  ksŽJ ‚ J ‚d|d  d|d    krªd|   krª| dƒks­J ‚ J ‚d|d  d|d    krÉd|   krÉ| dƒksÌJ ‚ J ‚d|d  ||   kríd|   kríd|   kríd| ksðJ ‚ J ‚d|d  ||   krd|   krd|   krd| ksJ ‚ J ‚d S )Nr   r   r'   r&   éùÿÿÿ)r   r   ©r"   r   r   r   r   r   Útest_FracElement__lt_le_gt_ge__    s   >>HH>>HTrL   c                  C   sP   t dtƒ\} }}d| d | }d| d | }| |ksJ ‚| |ks&J ‚d S )Nr   r/   é	   rJ   )r   r   )r"   r   r   r2   r3   r   r   r   Útest_FracElement___neg__¯   s
   rN   c                  C   sÖ  t dtƒ\} }}d| d| }}|| ||   kr&|| ||  ks)J ‚ J ‚|| jjd  | jjd |   krBd| ksEJ ‚ J ‚t dtƒ\} }}|d d| ksWJ ‚|tddƒ tddƒ|   krrd| d d ksuJ ‚ J ‚t dtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œks¡J ‚t|jƒd|| d
œks¯J ‚tdtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œksÛJ ‚t|jƒd|| d
œkséJ ‚d S )Nr   r   r   r'   r&   r/   úu,vúx,y,z,t©)r   r   r   r   ©r   r   r   r   ©)r   r   r   r   rR   ©r   r   r   r   r   Údictr1   rE   ©r"   r   r   r2   r3   ÚFuvÚuÚvÚFxyztr#   ÚtÚRuvr   r   r   Útest_FracElement___add__¸   s"   08< r]   c                  C   sÈ  t dtƒ\} }}d| d| }}|| | | ||  ks J ‚|| jjd  | jjd |   kr7dks:J ‚ J ‚t dtƒ\} }}|d d|  ksMJ ‚|tddƒ tddƒ|    krid| d d kslJ ‚ J ‚t dtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œks˜J ‚t|jƒd| | d
œks§J ‚tdtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œksÓJ ‚t|jƒd| | d
œksâJ ‚d S )Nr   r   r   r&   r/   rO   rP   éÿÿÿÿrQ   rS   rT   rV   r   r   r   Útest_FracElement___sub__Ò   s"   4>"r_   c                  C   s  t dtƒ\} }}d| d| }}|| ||   kr$d||  ks'J ‚ J ‚|| jjd  | jjd |   kr@|d ksCJ ‚ J ‚t dtƒ\} }}|d d| ksUJ ‚|tddƒ tddƒ|   kro|tddƒ ksrJ ‚ J ‚t dtƒ\}}}t d|ƒ\}}}}	}
|d | | d |d |	 |
| |  d  }t|jƒ|d dd	œksªJ ‚t|jƒ|d | | d
dœks¼J ‚tdtƒ\}}}t d|ƒ\}}}}	}
|d | | d |d |	 |
| |  d  }t|jƒ|d dd	œksôJ ‚t|jƒ|d | | d
dœksJ ‚d S )Nr   r   r   r'   r&   r/   rO   rP   )©r   r   r   r   rR   r^   ))r   r   r   r   )r   r   r   r   rR   )	r   r   r   r   r   r   rU   r1   rE   rV   r   r   r   Útest_FracElement___mul__ì   s"   ,8:0$0*ra   c                     sT  t dtƒ\} ‰ }dˆ  d| }}|| |ˆ  ksJ ‚ˆ | jjd  | jjd ˆ    kr2dks5J ‚ J ‚t dtƒ\} ‰ }ˆ d dˆ  ksGJ ‚ˆ tddƒ tddƒˆ  d   krcˆ tddƒ ksfJ ‚ J ‚tt‡ fdd„ƒ tt‡ fd	d„ƒ tt‡ fd
d„ƒ t dtƒ\}}}t d|ƒ\}‰ }}}	|| ˆ |  }t|j	ƒd|| iks¨J ‚t|j
ƒddiks³J ‚ˆ | ||  }t|j	ƒddiksÆJ ‚t|j
ƒd|| iksÓJ ‚tdtƒ\}
}}t d|
ƒ\}‰ }}}	|| ˆ |  }t|j	ƒd|| iksúJ ‚t|j
ƒddiksJ ‚ˆ | ||  }t|j	ƒddiksJ ‚t|j
ƒd|| iks(J ‚d S )Nr   r   r   r&   r/   r^   c                      s   ˆ d S ©Nr   r   r   ©r   r   r   r9     s    z.test_FracElement___truediv__.<locals>.<lambda>c                      s   dˆ ˆ   S ©Nr   r   r   rc   r   r   r9     ó    c                      s   ˆ ˆ ˆ   S r5   r   r   rc   r   r   r9     re   rO   rP   rR   r`   )r   r   r   r   r   r   r
   ÚZeroDivisionErrorrU   r1   rE   )r"   r   r2   r3   rW   rX   rY   rZ   r#   r[   r\   r   rc   r   Útest_FracElement___truediv__  s4   4> rg   c                     s¨   t dtƒ\} ‰ }dˆ  d| }}|d dˆ d  ksJ ‚|d d|d  ks)J ‚|| d dˆ d |d   ks;J ‚|| d ˆ | d ksIJ ‚tt‡ fdd„ƒ d S )Nr   r   r&   éýÿÿÿc                      s   ˆ ˆ  d S )Nrh   r   r   rc   r   r   r9   7  re   z*test_FracElement___pow__.<locals>.<lambda>)r   r   r
   rf   )r"   r   r2   r3   r   rc   r   Útest_FracElement___pow__,  s   $ri   c                  C   sD   t dtƒ\} }}}|d | |d   |¡d| |d  ks J ‚d S )Nr   r'   r   )r   r   Údiffr!   r   r   r   Útest_FracElement_diff9  s   2rk   c                     s^   t dtƒ\} }}}|d d|  | ‰ ˆ dddƒ}|dkr"t|tƒr$J ‚tt‡ fdd„ƒ d S )Nr   r'   r&   r   r(   c                      s   ˆ dddƒS )Nr   r   r   r   ©r2   r   r   r9   E  re   z+test_FracElement___call__.<locals>.<lambda>)r   r   rA   r   r
   rf   )r"   r   r   r#   Úrr   rl   r   Útest_FracElement___call__>  s
   rn   c                     sl   t dtƒ\} }}‰t dtƒd }|d d|  ˆ ‰ ˆ  |d¡d|j |j ks*J ‚tt‡ ‡fdd„ƒ d S )Nr   zy,zr   r'   r&   c                      ó   ˆ   ˆd¡S rb   )Úevaluater   ©r2   r#   r   r   r9   M  re   z+test_FracElement_evaluate.<locals>.<lambda>)r   r   rp   r   r#   r
   rf   )r"   r   r   ZFyzr   rq   r   Útest_FracElement_evaluateG  s
    rr   c                     sZ   t dtƒ\} }}‰|d d|  ˆ ‰ ˆ  |d¡d| ˆ ks!J ‚tt‡ ‡fdd„ƒ d S )Nr   r'   r&   r   c                      ro   rb   )Úsubsr   rq   r   r   r9   T  re   z'test_FracElement_subs.<locals>.<lambda>)r   r   rs   r
   rf   rK   r   rq   r   Útest_FracElement_subsO  s   rt   c                   C   s   d S r5   r   r   r   r   r   Útest_FracElement_composeV  s   ru   c                     sh   t dƒ‰tdtƒ\‰ } }}ˆ  | ¡dksJ ‚ˆ  |¡dksJ ‚tt‡ fdd„ƒ tt‡ ‡fdd„ƒ d S )NrF   zx y zr   r   c                      s
   ˆ   d¡S rd   ©Úindexr   )r"   r   r   r9   _  r:   z&test_FracField_index.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r5   rv   r   ©r"   rF   r   r   r9   `  r:   )r   r   r   rw   r
   r;   )r   r   r#   r   rx   r   Útest_FracField_indexY  s   ry   N)0Ú__doc__Zsympy.polys.fieldsr   r   r   r   Zsympy.polys.ringsr   Zsympy.polys.domainsr   r   Zsympy.polys.orderingsr	   Zsympy.testing.pytestr
   r   Z
sympy.corer   r   Zsympy.core.numbersr   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   r   r$   r%   r-   r.   r4   r>   rD   rI   rL   rN   r]   r_   ra   rg   ri   rk   rn   rr   rt   ru   ry   r   r   r   r   Ú<module>   sB    
-	&
