U
    	Ç-e(  ã                   @   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s8t‚| j| jd ksLt‚| j|jks\t‚| j|jkslt‚| j|jks|t‚| j|jksŒt‚d S )Núx,yúx,y,zr   é   )r   r   r	   ÚxÚgensÚAssertionErrorÚy)ÚF1ÚF2ÚF3© r   ú^/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/polys/tests/test_fields.pyÚtest_FracField___init__   s    r   c                  C   s"   t dtƒ\} }}}t| ƒst‚d S ©Nr   ©r   r   Úhashr   ©ÚFr   r   Úzr   r   r   Útest_FracField___hash__   s    r%   c                   C   sJ  t dtƒd t dtƒd ks t‚t dtƒd t dtƒd ks@t‚t dtƒd t dtƒd ks`t‚t dtƒd t dtƒd k	s€t‚t dtƒd t dtƒd ks t‚t dtƒd t dtƒd k	sÀt‚t dtƒd t dtƒd ksàt‚t dtƒd t dtƒd k	st‚t dtƒd t dtƒd ks$t‚t dtƒd t dtƒd k	sFt‚d S )Nr   r   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sŽt	‚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sDt	‚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t	‚d S )Nr   r   é   é   é   é   )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&t‚d S r   r    r"   r   r   r   Útest_FracElement___hash__A   s    r/   c                  C   sP   t dtƒ\} }}}|| d | }| ¡ }||ks6t‚d|jd< ||ksLt‚d S )Nr   r'   é   )r   r   r   )r   r   Úcopyr   Únumer)r#   r   r   r$   ÚfÚgr   r   r   Útest_FracElement_copyE   s    
r5   c                     s  t dtƒ\} }}}d|d  | || |  d|d  d  ‰| j\‰ }}dˆ d  | ˆ | |  d|d  d  }ˆ|ks‚t‚ˆ ¡ |ks’t‚tdƒ\‰ }}dˆ d  | ˆ | |  d|d  d  }ˆ|ksØt‚ˆ ˆ ||¡|ksît‚tt‡ ‡fdd„ƒ d S )Nr   r'   r(   r0   r   c                      s
   ˆ  ˆ ¡S ©N)Úas_exprr   ©ÚXr3   r   r   Ú<lambda>_   ó    z*test_FracElement_as_expr.<locals>.<lambda>)r   r   r   r   r7   r
   Ú
ValueError)r#   r   r   r$   ÚYÚZr4   r   r8   r   Útest_FracElement_as_exprO   s    ,,,r?   c                     s"  t dƒ\‰} }tˆ| |ftƒ\‰ }}}ˆ  d¡}|dkrDt|ˆ jƒsHt‚ˆ  tddƒ¡}|ˆ dƒd krtt|ˆ jƒsxt‚ˆ  ˆ¡}||kr–t|ˆ jƒsšt‚ˆ  tddƒˆ ¡}||tddƒ krÌt|ˆ jƒsÐt‚ˆ  dˆ ¡}|d| kröt|ˆ jƒsút‚ˆ  ˆ|  | ¡}||| | kr,t|ˆ jƒs0t‚ˆ  ˆ|  | ¡}||| | krbt|ˆ jƒsft‚ˆ  ˆ|  | ˆ|   ˆ ¡}||| | ||  | kr°t|ˆ jƒs´t‚ˆ  ˆ|  | ˆ|   ˆ ˆ|  d  ¡}||| | ||  | || d  krt|ˆ jƒst‚ˆ  ˆd |  | ˆd | d   d ¡}||d | | |d |d   d kr|t|ˆ jƒs€t‚tt	‡ ‡fdd„ƒ tt	‡ ‡fdd„ƒ ttdˆ   
¡  dˆ  ¡tƒsÐt‚ttˆd   
¡  ˆd	 ¡tƒsöt‚ttttddƒƒ  
¡  t¡tƒst‚d S )
Nr   r   r'   r0   r(   c                      s   ˆ   dˆ ¡S )Nr(   )Ú	from_exprr   ©r#   r   r   r   r:   ƒ   r;   z,test_FracElement_from_expr.<locals>.<lambda>c                      s   ˆ   dˆ tdƒ ¡S )Nr0   r(   )r@   r   r   rA   r   r   r:   „   r;   iúÿÿÿ)r   r   r   r@   Ú
isinstanceZdtyper   r   r
   r<   Ú	get_fieldÚconvertr   r   r   )r   r$   r9   r=   r>   r3   r   rA   r   Útest_FracElement_from_expra   sB    
 
"$$0*<*<ÿ
ÿ
ÿrE   c                  C   sÂ  t dƒ\} }}t | |¡}| |¡}|| | ƒ}|j| |¡| | ƒksLt‚|j ¡ || | ƒgksht‚|j| |¡dƒks€t‚t | |¡}| |¡}|| | ƒ}|j| |¡| | ƒks¾t‚|j ¡ || | ƒgksÚt‚|j| |¡dƒksòt‚||| | ƒƒ}|j| |¡| | ƒks t‚|j ¡ || | ƒgks>t‚|j| |¡dƒksXt‚||| | ƒƒ}|j| |¡| | ƒks†t‚|j ¡ || | ƒgks¤t‚|j| |¡dƒks¾t‚d S )Nza b xr   )r   r   Z
frac_fieldr2   Z	poly_ringr   ZcoeffsÚdenom)ÚaÚbr   r   r   Úfracr   ZF4r   r   r   Útest_FracField_nestedŽ   s*    

rJ   c                  C   s@  t dtƒ\} }}| dƒd|   k rFd|d    k rFd|d  k sLn t‚| dƒd|   kr‚d|d    kr‚d|d  ksˆn t‚d| d|   k rÈd|   k rÈ||   k rÈd|d  k sÎn t‚d| d|   krd|   kr||   krd|d  ksn t‚d|d  d|d    krXd|   krX| dƒks^n t‚d|d  d|d    kršd|   krš| dƒks n t‚d|d  ||   krèd|   krèd|   krèd| ksîn t‚d|d  ||   kr6d|   kr6d|   kr6d| ks<n t‚d S )Nr   r   r(   r'   éùÿÿÿ)r   r   r   ©r#   r   r   r   r   r   Útest_FracElement__lt_le_gt_ge__©   s    <<FNBBNrM   c                  C   sP   t dtƒ\} }}d| d | }d| d | }| |ks>t‚| |ksLt‚d S )Nr   r0   é	   rK   )r   r   r   )r#   r   r   r3   r4   r   r   r   Útest_FracElement___neg__¸   s
    rO   c                  C   sØ  t dtƒ\} }}d| d|  }}|| ||   krJ|| ||  ksPn t‚|| jjd  | jjd |   kr€d| ks†n t‚t dtƒ\} }}|d d| ksªt‚|tddƒ tddƒ|   krÞd| d d ksän t‚t dtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œks>t‚t|jƒd|| d
œks\t‚tdtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œks¶t‚t|jƒd|| d
œksÔt‚d S )Nr   r   r   r(   r'   r0   úu,vúx,y,z,t©)r   r   r   r   ©r   r   r   r   ©)r   r   r   r   rS   ©	r   r   r   r   r   r   Údictr2   rF   ©r#   r   r   r3   r4   ÚFuvÚuÚvÚFxyztr$   ÚtÚRuvr   r   r   Útest_FracElement___add__Á   s"    .6:r^   c                  C   sÌ  t dtƒ\} }}d| d|  }}|| | | ||  ks@t‚|| jjd  | jjd |   krldksrn t‚t dtƒ\} }}|d d|  ks˜t‚|tddƒ tddƒ|    krÎd| d d ksÔn t‚t dtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œks.t‚t|jƒd| | d
œksNt‚tdtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œks¨t‚t|jƒd| | d
œksÈt‚d S )Nr   r   r   r'   r0   rP   rQ   éÿÿÿÿrR   rT   rU   rW   r   r   r   Útest_FracElement___sub__Û   s"    2< r`   c                  C   s  t dtƒ\} }}d| d|  }}|| ||   krFd||  ksLn t‚|| jjd  | jjd |   kr||d ks‚n t‚t dtƒ\} }}|d d| ks¦t‚|tddƒ tddƒ|   krØ|tddƒ ksÞn t‚t dtƒ\}}}t d|ƒ\}}}}	}
|d | | d |d |	 |
| |  d  }t|jƒ|d dd	œksPt‚t|j	ƒ|d | | d
dœksvt‚tdtƒ\}}}t d|ƒ\}}}}	}
|d | | d |d |	 |
| |  d  }t|jƒ|d dd	œksèt‚t|j	ƒ|d | | d
dœkst‚d S )Nr   r   r   r(   r'   r0   rP   rQ   )©r   r   r   r   rS   r_   ))r   r   r   r   )r   r   r   r   rS   )
r   r   r   r   r   r   r   rV   r2   rF   rW   r   r   r   Útest_FracElement___mul__õ   s"    *680&0rb   c                     sZ  t dtƒ\} ‰ }dˆ  d|  }}|| |ˆ  ks6t‚ˆ | jjd  | jjd ˆ    krbdkshn t‚t dtƒ\} ‰ }ˆ d dˆ  ksŒt‚ˆ tddƒ tddƒˆ  d   krÂˆ tddƒ ksÈn t‚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sNt‚t	|jƒddiksft‚ˆ | ||  }t	|j
ƒddiksŽt‚t	|jƒd|| iksªt‚tdtƒ\}
}}t d|
ƒ\}‰ }}}	|| ˆ |  }t	|j
ƒd|| iksút‚t	|jƒddikst‚ˆ | ||  }t	|j
ƒddiks:t‚t	|jƒd|| iksVt‚d S )Nr   r   r   r'   r0   r_   c                      s   ˆ d S ©Nr   r   r   ©r   r   r   r:     r;   z.test_FracElement___truediv__.<locals>.<lambda>c                      s   dˆ ˆ   S ©Nr   r   r   rd   r   r   r:     r;   c                      s   ˆ ˆ ˆ   S r6   r   r   rd   r   r   r:     r;   rP   rQ   rS   ra   )r   r   r   r   r   r   r   r
   ÚZeroDivisionErrorrV   r2   rF   )r#   r   r3   r4   rX   rY   rZ   r[   r$   r\   r]   r   rd   r   Útest_FracElement___truediv__  s4    2<rg   c                     s¨   t dtƒ\} ‰ }dˆ  d|  }}|d dˆ d  ks:t‚|d d|d  ksRt‚|| d dˆ d |d   ksvt‚|| d ˆ | d ks’t‚tt‡ fdd„ƒ d S )Nr   r   r'   éýÿÿÿc                      s   ˆ ˆ  d S )Nrh   r   r   rd   r   r   r:   @  r;   z*test_FracElement___pow__.<locals>.<lambda>)r   r   r   r
   rf   )r#   r   r3   r4   r   rd   r   Útest_FracElement___pow__5  s    $ri   c                  C   sD   t dtƒ\} }}}|d | |d   |¡d| |d  ks@t‚d S )Nr   r(   r   )r   r   Údiffr   r"   r   r   r   Útest_FracElement_diffB  s    rk   c                     s^   t dtƒ\} }}}|d d|  | ‰ ˆ dddƒ}|dkrDt|tƒrHt‚tt‡ fdd„ƒ d S )Nr   r(   r'   r   r)   c                      s   ˆ dddƒS )Nr   r   r   r   ©r3   r   r   r:   N  r;   z+test_FracElement___call__.<locals>.<lambda>)r   r   rB   r   r   r
   rf   )r#   r   r   r$   Úrr   rl   r   Útest_FracElement___call__G  s
    rn   c                     sl   t dtƒ\} }}‰t dtƒd }|d d|  ˆ ‰ ˆ  |d¡d|j |j ksTt‚tt‡ ‡fdd„ƒ d S )Nr   zy,zr   r(   r'   c                      s   ˆ   ˆd¡S rc   )Úevaluater   ©r3   r$   r   r   r:   V  r;   z+test_FracElement_evaluate.<locals>.<lambda>)r   r   ro   r   r$   r   r
   rf   )r#   r   r   ZFyzr   rp   r   Útest_FracElement_evaluateP  s
     rq   c                     sZ   t dtƒ\} }}‰|d d|  ˆ ‰ ˆ  |d¡d| ˆ ksBt‚tt‡ ‡fdd„ƒ d S )Nr   r(   r'   r   c                      s   ˆ   ˆd¡S rc   )Úsubsr   rp   r   r   r:   ]  r;   z'test_FracElement_subs.<locals>.<lambda>)r   r   rr   r   r
   rf   rL   r   rp   r   Útest_FracElement_subsX  s    rs   c                   C   s   d S r6   r   r   r   r   r   Útest_FracElement_compose_  s    rt   c                     sh   t dƒ‰tdtƒ\‰ } }}ˆ  | ¡dks,t‚ˆ  |¡dks>t‚tt‡ fdd„ƒ tt‡ ‡fdd„ƒ d S )NrG   zx y zr   r   c                      s
   ˆ   d¡S re   ©Úindexr   )r#   r   r   r:   h  r;   z&test_FracField_index.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r6   ru   r   ©r#   rG   r   r   r:   i  r;   )r   r   r   rv   r   r
   r<   )r   r   r$   r   rw   r   Útest_FracField_indexb  s    rx   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/   r5   r?   rE   rJ   rM   rO   r^   r`   rb   rg   ri   rk   rn   rq   rs   rt   rx   r   r   r   r   Ú<module>   s@   
-	&
