o
    oÇ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   úq/var/www/html/construction_image-detection-poc/venv/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   sD  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s0J ‚t dtƒd t dtƒd us@J ‚t dtƒd t dtƒd ksPJ ‚t dtƒd t dtƒd us`J ‚t dtƒd t dtƒd kspJ ‚t dtƒd t dtƒd us€J ‚t dtƒd t dtƒd ksJ ‚t dtƒd t dtƒd us J ‚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"   ÚeÚexexÚexÚ_ÚlgÚx3Úsrtr   r   r   Útest_sfield.   s$   >ÿ*>6ÿ"8(&ÿÿr1   c                  C   s*   t dtƒ\} }}}t|| | ƒsJ ‚d S r   r   r!   r   r   r   Útest_FracElement___hash__A   s   r2   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_copyE   s   
r8   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'   r3   r   c                      s
   ˆ  ˆ ¡S ©N)Úas_exprr   ©ÚXr6   r   r   Ú<lambda>_   ó   
 z*test_FracElement_as_expr.<locals>.<lambda>)r   r   r   r:   r
   Ú
ValueError)r"   r   r   r#   ÚYÚZr7   r   r;   r   Útest_FracElement_as_exprO   s   ,,,rB   c                     s  t dƒ\‰} }tˆ| |ftƒ\‰ }}}ˆ  d¡}|dkr"t|ˆ jƒs$J ‚ˆ  tddƒ¡}|ˆ dƒd kr:t|ˆ jƒs<J ‚ˆ  ˆ¡}||krKt|ˆ jƒsMJ ‚ˆ  tddƒˆ ¡}||tddƒ krft|ˆ jƒshJ ‚ˆ  dˆ ¡}|d| kr{t|ˆ jƒs}J ‚ˆ  ˆ|  | ¡}||| | kr”t|ˆ jƒs–J ‚ˆ  ˆ|  | ¡}||| | kr­t|ˆ jƒs¯J ‚ˆ  ˆ|  | ˆ|   ˆ ¡}||| | ||  | krÒt|ˆ jƒsÔJ ‚ˆ  ˆ|  | ˆ|   ˆ ˆ|  d  ¡}||| | ||  | || d  krt|ˆ jƒsJ ‚ˆ  ˆd |  | ˆd | d   d ¡}||d | | |d |d   d kr8t|ˆ jƒs:J ‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ ttdˆ   	¡  
dˆ  ¡tƒsbJ ‚ttˆd   	¡  
ˆd	 ¡tƒsuJ ‚ttttddƒƒ  	¡  
t¡tƒs‰J ‚d S )
Nr   r   r&   r3   r'   c                      s   ˆ   dˆ ¡S )Nr'   )Ú	from_exprr   ©r"   r   r   r   r=   ƒ   s    z,test_FracElement_from_expr.<locals>.<lambda>c                      s   ˆ   dˆ tdƒ ¡S )Nr3   r'   )rC   r   r   rD   r   r   r=   „   s    iúÿÿÿ)r   r   r   rC   Ú
isinstanceÚdtyper   r
   r?   Ú	get_fieldÚconvertr   r   r   )r   r#   r<   r@   rA   r6   r   rD   r   Útest_FracElement_from_expra   sB   
 
"  ,*<*<
ÿ
ÿÿrI   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   Ú
frac_fieldr5   Ú	poly_ringÚcoeffsÚdenom)ÚaÚbr   r   r   Úfracr   ÚF4r   r   r   Útest_FracField_nestedŽ   s*   

rR   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rU   c                  C   sP   t dtƒ\} }}d| d | }d| d | }| |ksJ ‚| |ks&J ‚d S )Nr   r3   é	   rS   )r   r   )r"   r   r   r6   r7   r   r   r   Útest_FracElement___neg__¸   s
   rW   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&   r3   úu,vúx,y,z,t©)r   r   r   r   ©r   r   r   r   ©)r   r   r   r   r[   ©r   r   r   r   r   Údictr5   rM   ©r"   r   r   r6   r7   ÚFuvÚuÚvÚFxyztr#   ÚtÚRuvr   r   r   Útest_FracElement___add__Á   s"   08< rf   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&   r3   rX   rY   éÿÿÿÿrZ   r\   r]   r_   r   r   r   Útest_FracElement___sub__Û   s"   4>"rh   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&   r3   rX   rY   )©r   r   r   r   r[   rg   ))r   r   r   r   )r   r   r   r   r[   )	r   r   r   r   r   r   r^   r5   rM   r_   r   r   r   Útest_FracElement___mul__õ   s"   ,8:0$0*rj   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&   r3   rg   c                      s   ˆ d S ©Nr   r   r   ©r   r   r   r=     s    z.test_FracElement___truediv__.<locals>.<lambda>c                      s   dˆ ˆ   S ©Nr   r   r   rl   r   r   r=     ó    c                      s   ˆ ˆ ˆ   S r9   r   r   rl   r   r   r=     rn   rX   rY   r[   ri   )r   r   r   r   r   r   r
   ÚZeroDivisionErrorr^   r5   rM   )r"   r   r6   r7   r`   ra   rb   rc   r#   rd   re   r   rl   r   Útest_FracElement___truediv__  s4   4> rp   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 )Nrq   r   r   rl   r   r   r=   @  rn   z*test_FracElement___pow__.<locals>.<lambda>)r   r   r
   ro   )r"   r   r6   r7   r   rl   r   Útest_FracElement___pow__5  s   $rr   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   2rt   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   ©r6   r   r   r=   N  rn   z+test_FracElement___call__.<locals>.<lambda>)r   r   rE   r   r
   ro   )r"   r   r   r#   Úrr   ru   r   Útest_FracElement___call__G  s
   rw   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 rk   )Úevaluater   ©r6   r#   r   r   r=   V  rn   z+test_FracElement_evaluate.<locals>.<lambda>)r   r   ry   r   r#   r
   ro   )r"   r   r   ÚFyzr   rz   r   Útest_FracElement_evaluateP  s
    r|   c                     sZ   t dtƒ\} }}‰|d d|  ˆ ‰ ˆ  |d¡d| ˆ ks!J ‚tt‡ ‡fdd„ƒ d S )Nr   r'   r&   r   c                      rx   rk   )Úsubsr   rz   r   r   r=   ]  rn   z'test_FracElement_subs.<locals>.<lambda>)r   r   r}   r
   ro   rT   r   rz   r   Útest_FracElement_subsX  s   r~   c                   C   s   d S r9   r   r   r   r   r   Útest_FracElement_compose_  s   r   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 )NrN   zx y zr   r   c                      s
   ˆ   d¡S rm   ©Úindexr   )r"   r   r   r=   h  r>   z&test_FracField_index.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r9   r€   r   ©r"   rN   r   r   r=   i  r>   )r   r   r   r   r
   r?   )r   r   r#   r   r‚   r   Útest_FracField_indexb  s   rƒ   N)0Ú__doc__Úsympy.polys.fieldsr   r   r   r   Úsympy.polys.ringsr   Úsympy.polys.domainsr   r   Úsympy.polys.orderingsr	   Úsympy.testing.pytestr
   r   Ú
sympy.corer   r   Úsympy.core.numbersr   Ú&sympy.functions.elementary.exponentialr   r   Ú(sympy.functions.elementary.miscellaneousr   r   r$   r%   r1   r2   r8   rB   rI   rR   rU   rW   rf   rh   rj   rp   rr   rt   rw   r|   r~   r   rƒ   r   r   r   r   Ú<module>   sB    
-	&
