a
    Ÿ¬<b(  ã                   @   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s8J ‚| j| jd ksLJ ‚| j|jks\J ‚| j|jkslJ ‚| j|jks|J ‚| j|jksŒJ ‚d S )Núx,yúx,y,zr   é   )r   r   r	   ÚxÚgensÚy)ÚF1ÚF2ÚF3© r   úm/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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   sJ  t dtƒd t dtƒd ks J ‚t dtƒd t dtƒd u s@J ‚t dtƒd t dtƒd ks`J ‚t dtƒd t dtƒd us€J ‚t dtƒd t dtƒd ks J ‚t dtƒd t dtƒd usÀJ ‚t dtƒd t dtƒd ksàJ ‚t dtƒd t dtƒd usJ ‚t dtƒd t dtƒd ks$J ‚t dtƒd t dtƒd usFJ ‚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sŽJ ‚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sDJ ‚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__A   s    r.   c                  C   sP   t dtƒ\} }}}|| d | }| ¡ }||ks6J ‚d|jd< ||ksLJ ‚d S )Nr   r&   é   )r   r   r   )r   r   ÚcopyÚnumer)r"   r   r   r#   ÚfÚgr   r   r   Útest_FracElement_copyE   s    
r4   c                     s  t dtƒ\} }}}d|d  | || |  d|d  d  ‰| j\‰ }}dˆ d  | ˆ | |  d|d  d  }ˆ|ks‚J ‚ˆ ¡ |ks’J ‚tdƒ\‰ }}dˆ d  | ˆ | |  d|d  d  }ˆ|ksØJ ‚ˆ ˆ ||¡|ksîJ ‚tt‡ ‡fdd„ƒ d S )Nr   r&   r'   r/   r   c                      s
   ˆ  ˆ ¡S ©N)Úas_exprr   ©ÚXr2   r   r   Ú<lambda>_   ó    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_exprO   s    ,,,r>   c                     s"  t dƒ\‰} }tˆ| |ftƒ\‰ }}}ˆ  d¡}|dkrDt|ˆ jƒsHJ ‚ˆ  tddƒ¡}|ˆ dƒd krtt|ˆ jƒsxJ ‚ˆ  ˆ¡}||kr–t|ˆ jƒsšJ ‚ˆ  tddƒˆ ¡}||tddƒ krÌt|ˆ jƒsÐJ ‚ˆ  dˆ ¡}|d| kröt|ˆ jƒsúJ ‚ˆ  ˆ|  | ¡}||| | kr,t|ˆ jƒs0J ‚ˆ  ˆ|  | ¡}||| | krbt|ˆ jƒsfJ ‚ˆ  ˆ|  | ˆ|   ˆ ¡}||| | ||  | kr°t|ˆ jƒs´J ‚ˆ  ˆ|  | ˆ|   ˆ ˆ|  d  ¡}||| | ||  | || d  krt|ˆ jƒsJ ‚ˆ  ˆd |  | ˆd | d   d ¡}||d | | |d |d   d kr|t|ˆ jƒs€J ‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ ttdˆ   	¡  
dˆ  ¡tƒsÐJ ‚ttˆd   	¡  
ˆd	 ¡tƒsöJ ‚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   ƒ   r:   z,test_FracElement_from_expr.<locals>.<lambda>c                      s   ˆ   dˆ tdƒ ¡S )Nr/   r'   )r?   r   r   r@   r   r   r9   „   r:   iúÿÿÿ)r   r   r   r?   Ú
isinstanceZdtyper   r
   r;   Ú	get_fieldÚconvertr   r   r   )r   r#   r8   r<   r=   r2   r   r@   r   Útest_FracElement_from_expra   sB    
 
"$$0*<*<ÿ
ÿ
ÿrD   c                  C   sÂ  t dƒ\} }}t | |¡}| |¡}|| | ƒ}|j| |¡| | ƒksLJ ‚|j ¡ || | ƒgkshJ ‚|j| |¡dƒks€J ‚t | |¡}| |¡}|| | ƒ}|j| |¡| | ƒks¾J ‚|j ¡ || | ƒgksÚJ ‚|j| |¡dƒksòJ ‚||| | ƒƒ}|j| |¡| | ƒks J ‚|j ¡ || | ƒgks>J ‚|j| |¡dƒksXJ ‚||| | ƒƒ}|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   s@  t dtƒ\} }}| dƒd|   k rFd|d    k rFd|d  k sLn J ‚| dƒd|   kr‚d|d    kr‚d|d  ksˆn J ‚d| d|   k rÈd|   k rÈ||   k rÈd|d  k sÎn J ‚d| d|   krd|   kr||   krd|d  ksn J ‚d|d  d|d    krXd|   krX| dƒks^n J ‚d|d  d|d    kršd|   krš| dƒks n J ‚d|d  ||   krèd|   krèd|   krèd| ksîn J ‚d|d  ||   kr6d|   kr6d|   kr6d| ks<n J ‚d S )Nr   r   r'   r&   éùÿÿÿ)r   r   ©r"   r   r   r   r   r   Útest_FracElement__lt_le_gt_ge__©   s    <<FNBBNrL   c                  C   sP   t dtƒ\} }}d| d | }d| d | }| |ks>J ‚| |ksLJ ‚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rJ|| ||  ksPn J ‚|| jjd  | jjd |   kr€d| ks†n J ‚t dtƒ\} }}|d d| ksªJ ‚|tddƒ tddƒ|   krÞd| d d ksän 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"    .6:r]   c                  C   sÌ  t dtƒ\} }}d| d|  }}|| | | ||  ks@J ‚|| jjd  | jjd |   krldksrn J ‚t dtƒ\} }}|d d|  ks˜J ‚|tddƒ tddƒ|    krÎd| d d ksÔn J ‚t dtƒ\}}}t d|ƒ\}}}}	}
|| | |||   }t|jƒd|| d	œks.J ‚t|jƒd| | d
œksNJ ‚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"    2< r_   c                  C   s  t dtƒ\} }}d| d|  }}|| ||   krFd||  ksLn J ‚|| jjd  | jjd |   kr||d ks‚n J ‚t dtƒ\} }}|d d| ks¦J ‚|tddƒ tddƒ|   krØ|tddƒ ksÞn J ‚t dtƒ\}}}t d|ƒ\}}}}	}
|d | | d |d |	 |
| |  d  }t|jƒ|d dd	œksPJ ‚t|jƒ|d | | d
dœksvJ ‚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"    *680&0ra   c                     sZ  t dtƒ\} ‰ }dˆ  d|  }}|| |ˆ  ks6J ‚ˆ | jjd  | jjd ˆ    krbdkshn J ‚t dtƒ\} ‰ }ˆ d dˆ  ksŒJ ‚ˆ tddƒ tddƒˆ  d   krÂˆ tddƒ ksÈn 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sNJ ‚t|j
ƒddiksfJ ‚ˆ | ||  }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sVJ ‚d S )Nr   r   r   r&   r/   r^   c                      s   ˆ d S ©Nr   r   r   ©r   r   r   r9     r:   z.test_FracElement___truediv__.<locals>.<lambda>c                      s   dˆ ˆ   S ©Nr   r   r   rc   r   r   r9     r:   c                      s   ˆ ˆ ˆ   S r5   r   r   rc   r   r   r9     r:   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    2<rf   c                     s¨   t dtƒ\} ‰ }dˆ  d|  }}|d dˆ d  ks:J ‚|d d|d  ksRJ ‚|| d dˆ d |d   ksvJ ‚|| d ˆ | d ks’J ‚tt‡ fdd„ƒ d S )Nr   r   r&   éýÿÿÿc                      s   ˆ ˆ  d S )Nrg   r   r   rc   r   r   r9   @  r:   z*test_FracElement___pow__.<locals>.<lambda>)r   r   r
   re   )r"   r   r2   r3   r   rc   r   Útest_FracElement___pow__5  s    $rh   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_diffB  s    rj   c                     s^   t dtƒ\} }}}|d d|  | ‰ ˆ dddƒ}|dkrDt|tƒrHJ ‚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   N  r:   z+test_FracElement___call__.<locals>.<lambda>)r   r   rA   r   r
   re   )r"   r   r   r#   Úrr   rk   r   Útest_FracElement___call__G  s
    rm   c                     sl   t dtƒ\} }}‰t dtƒd }|d d|  ˆ ‰ ˆ  |d¡d|j |j ksTJ ‚tt‡ ‡fdd„ƒ d S )Nr   zy,zr   r'   r&   c                      s   ˆ   ˆd¡S rb   )Úevaluater   ©r2   r#   r   r   r9   V  r:   z+test_FracElement_evaluate.<locals>.<lambda>)r   r   rn   r   r#   r
   re   )r"   r   r   ZFyzr   ro   r   Útest_FracElement_evaluateP  s
     rp   c                     sZ   t dtƒ\} }}‰|d d|  ˆ ‰ ˆ  |d¡d| ˆ ksBJ ‚tt‡ ‡fdd„ƒ d S )Nr   r'   r&   r   c                      s   ˆ   ˆd¡S rb   )Úsubsr   ro   r   r   r9   ]  r:   z'test_FracElement_subs.<locals>.<lambda>)r   r   rq   r
   re   rK   r   ro   r   Útest_FracElement_subsX  s    rr   c                   C   s   d S r5   r   r   r   r   r   Útest_FracElement_compose_  s    rs   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   h  r:   z&test_FracField_index.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r5   rt   r   ©r"   rF   r   r   r9   i  r:   )r   r   r   ru   r
   r;   )r   r   r#   r   rv   r   Útest_FracField_indexb  s    rw   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   rf   rh   rj   rm   rp   rr   rs   rw   r   r   r   r   Ú<module>   s@   
-	&
