a
     ¬<bé7  ã                   @   s€  d dl mZ d dlmZ d dlmZmZmZmZm	Z	 d dl
mZ d dlmZmZ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 d d
l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'm(Z(m)Z)m*Z* dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0dd„ Z1dd„ Z2d d!„ Z3d"d#„ Z4d$d%„ Z5d&d'„ Z6d(d)„ Z7d*d+„ Z8d,d-„ Z9d.d/„ Z:d0d1„ Z;d2d3„ Z<d4S )5é    )ÚFunction)ÚMul)ÚEÚIÚRationalÚooÚpi)ÚS)ÚDummyÚSymbolÚsymbols)ÚexpÚlog)ÚrootÚsqrt)Úsin)Úgamma)Úhyper)ÚMatrixSymbol)Ú	powdenestÚpowsimp)ÚsignsimpÚsimplify)ÚStr)ÚxÚyÚzÚaÚbc                  C   sä
  t dƒ\} }}}tdƒ}td|  d|    d|    ƒdks@J ‚td|  d|    d|    ƒdkshJ ‚t|d|  d|    d|    ƒƒ|d|  d|    d|    ƒks°J ‚t|d|  d|    d|    ƒdd	|dƒksäJ ‚t| ƒt|ƒ t| ƒt|ƒ ks
J ‚tt| ƒt|ƒ ƒt| | ƒks0J ‚tt| ƒt|ƒ d|   d|  ƒdt | |  ksjJ ‚tt| ƒt|ƒ d|   d|  d
dt| | ƒd| |   ks°J ‚tt| ƒt|ƒ tdƒ t| ƒ t|ƒ d|  d|   ƒtd|  | ƒt| ƒ t|ƒ d| |   ksJ ‚ttt| ƒt|ƒ ƒƒtt| ƒt|ƒ ƒksPJ ‚ttt| ƒt|ƒ ƒdd	tt| | ƒƒks‚J ‚t| d | |  ƒ| d|  ks¨J ‚tdtttƒ  tt ƒ d
dddtdt ƒ tt ƒ ksìJ ‚tdtttƒ  tt ƒ dd	dtdt ƒ tt ƒ ks.J ‚tdtttƒ  tt ƒ ƒdtdt ƒ tt ƒ kslJ ‚tdtttƒ  tt ƒ d
ddtdt ƒ tt ƒ ks®J ‚tdtttƒ  tt ƒ dddtttƒ  tt ƒ ksðJ ‚t ddd\} }tddd}t|| ||  |   ƒ| | ks4J ‚t| | | |  || |    || | |  || |     dd	| | | | | |   ks’J ‚tddd|   |   dd	ddd|   |   ksÈJ ‚tddd|   |   dd	d| d|    ksúJ ‚tt|  t|  ƒt|  t| ƒ ƒ  ƒdd
dt|  t|  ƒt|  t| ƒ ƒ  ƒksVJ ‚tt|  t|  ƒt|  t| ƒ ƒ  ƒdd
dt|  t|  ƒt|  t| ƒ ƒ  ƒks²J ‚t| | d|  dd
d| | d|  ksâJ ‚t| d |d  | dd
d| d |d  | ksJ ‚tt| ƒdt| ƒt|ƒ   dd	t| ƒdt| | ƒ  ks\J ‚t| |||  ||    dd	| ||| |    ks–J ‚t||  ||  |  dd	|| |  |  ksÈJ ‚t| ||  ||  |   dd	| || |  |   ksJ ‚t ddd}td|  tdƒ |  ƒd|  dtdƒ  ks@J ‚td| tdƒ | ƒ|dtdƒ  ksnJ ‚tdd|   ƒd|  ksŒJ ‚tdd|   ƒdd|   ks®J ‚t ddd}tdd|  ƒdksÔJ ‚td|   ƒd|  ksðJ ‚tdd|   dddksJ ‚t ddd\}}}|t }	||	 ||	  ||	  }
t|
ƒ||t  ||t   ||t   ksrJ ‚|d }	||	 ||	  ||	  }
t|
ƒd| | | | |d   ks¾J ‚d| | }	||	 ||	  ||	  }
t|
ƒdd|	  | | | |	  k	sJ ‚| tt	ddƒ  }t|ƒj|j  k	rJtt	ddƒ k	sPn J ‚tdd|   ƒd|  k	snJ ‚tt|d ƒƒt|d ƒk	sJ ‚t
dd„ tdƒD ƒŽ }t|ƒ|k	r¼|j	sÀJ ‚tdd „ t| t ƒt| d ƒfD ƒƒ	sìJ ‚ttttt d ƒtddƒ ƒƒd!k
sJ ‚td"|   ƒd"|   k
s6J ‚tddt  t ƒtdƒd t k
s`J ‚td|  ƒd td#|  ƒd  }t|ƒ|k
s’J ‚t| d |d  | |d  t	ddƒ  ƒ| | | |d  t	d$dƒ  k
sàJ ‚d S )%Nzx,y,z,nÚfé   é   é   éüÿÿÿéþÿÿÿT©Údeepr   ©Úcombine)r(   r&   Úbaseúx,y)ZnonnegativeÚn©ÚrealF)r&   r(   é   Úp©ZpositiveéÿÿÿÿÚi©Úinteger©Úforcezw n m©Únegativec                 S   s   g | ]}t td dƒ‘qS )T)Z	imaginary)r   r
   )Ú.0r2   © r:   úq/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/simplify/tests/test_powsimp.pyÚ
<listcomp>g   ó    z test_powsimp.<locals>.<listcomp>c                 s   s   | ]}t |ƒ|kV  qd S )N©r   )r9   Úer:   r:   r;   Ú	<genexpr>j   r=   ztest_powsimp.<locals>.<genexpr>z(-1)**(2/3)gš™™™™™¹?g       @é   )r   r   r   r   r   r   r   r   r   r   r   ÚrangeÚis_MulÚallr   Ústrr   r   r   r   )r   r   r   r+   r   r/   r2   ÚwÚmr?   ÚexÚeqr:   r:   r;   Útest_powsimp   s¾    ((ÿÿ4&&:&ÿ
:*ÿ
22&"ÿ
 ÿ
> ÿ
 ÿ
(>ÿ
62(ÿ$þ
(ÿ$þ
08"ÿ
:2:2."2,,0",,* (ÿrJ   c                  C   s¢  t t t ttt ƒ ƒttt ƒ ks,J ‚t t t t t  ttt ƒ ttt ƒ ƒttt ƒttt ƒ ksxJ ‚tddd} | dttji}t |  t | t  ƒ 	|¡dt  	|¡ksÀJ ‚t |  t | t  ƒ 	|¡| d  t  	|¡ksôJ ‚tddd}| dttji}t | t |t  ƒ 	|¡dt  	ttj¡ ksDJ ‚t | t |t  ƒ 	|¡|d  t  	|¡kszJ ‚t t tt  }t |ƒ|ksžJ ‚d S )	Nr/   Tr0   r!   r1   r+   r7   r$   )
r   r   r   r   r   r   r   r	   ÚHalfÚsubs)r/   Zrepsr+   rI   r:   r:   r;   Útest_powsimp_negated_base~   s    ,L.466rM   c                  C   sÎ  t dƒ\} }}t ddd\}}}t||  ||  dd|| |  ksHJ ‚t||  ||  dd||  ||  kstJ ‚t||  ||  dd|| |  ksœJ ‚t||  ||   dd||  ||   ksÈJ ‚t||  ||   dd||  ||   ksôJ ‚t||  ||   dd||  ||   ks"J ‚t||  ||   dd||  ||   ksPJ ‚t||  ||   dd||  ||   ks~J ‚t||  ||   dd||  ||   ks¬J ‚t||  ||  ||  dd|| | |  ksâJ ‚t||  ||  ||  dd||  ||  ||  ks J ‚t||  ||  ||  dd|| | |  ksVJ ‚t||  ||   ||   dd||  ||   ||   ks”J ‚t||  ||   ||   dd||  ||   ||   ksÒJ ‚t||  ||   ||   dd||  ||   ||   ksJ ‚t||  ||   ||   dd||  ||   ||   ksNJ ‚t||  ||   ||   dd||  ||   ||   ksŒJ ‚t||  ||   ||   dd||  ||   ||   ksÊJ ‚d S )	Nzx,y,zzA B CF©ZcommutativerD   r'   r)   r   ©r   r   )r   r   r   ÚAÚBÚCr:   r:   r;   Útest_powsimp_ncŽ   s(    (,(,,....6>6>>>>>rS   c                   C   s4   t ddt  dt  ƒdtdt  d  ks0J ‚d S )Né   r!   é   r.   r    )r   r   r   r:   r:   r:   r;   Útest_issue_6440«   s    rV   c                  C   sâ  t dƒ\} }t ddd\}}t ddd\}}t| ƒ| ks<J ‚t| d| ttddƒ  d|     ƒ| d| ttddƒ  d|     ksˆJ ‚ttttddƒ ƒd|   ƒsªJ ‚t| ttddƒ  d|   ƒ| ttddƒ  d|   ksæJ ‚ttd|  tdƒ ƒƒdd|   ksJ ‚tt|d ƒƒ|ks*J ‚|d|  |d	|   }t|ƒ||d  d|  ksdJ ‚t| |  ||  ƒs~J ‚ttd| t| ƒ ƒƒ| d|  ks¨J ‚tt|ttƒttƒ  ƒƒtt | ksÖJ ‚ttdttƒttƒ  ƒƒtd td  ksJ ‚t| d|  d|  |  ƒ| d|  d|  |  ksBJ ‚t| d|  d|  |  dd
| d| |  |  ks|J ‚t| ttddƒ  d| |  |  ƒ| ttddƒ  d| |  |  ksÊJ ‚t| d|  |d	|   t dd
| |d  d| t  ksJ ‚t|d|  |d	|   | ƒ||d  d| |  ksJJ ‚|dt  d|  |  }t|ƒ|kstJ ‚| d |d	  t | |  }t|ƒ|ks¢J ‚| d |d	  t | |  d }t|ƒ| d |d	  t d|  |  ksðJ ‚t| d |d	  t | |  dd
| |d  dt |  |  ks6J ‚t| d |d	  t | |  d dd
| |d  dt |  |  ks€J ‚t| d |d  | ƒ| |d  d|  ks²J ‚t ddd\} }t| d |d  | ƒ| |d  d|  ksôJ ‚t| |tddƒ  ||d   d|  ƒ| td	dƒ | |d  ks>J ‚tt| d|  |d|   ƒƒ| |d  | kstJ ‚td	|  ƒdd|   ks’J ‚td	|  | ƒdd|  |  ks¸J ‚td	|  | ƒdd|   | ksÞJ ‚d S )Nr*   zp qTr0   zi,jr3   r!   r.   r    r5   é   )	r   r   r   r   r   r   r   r   r   )r   r   r/   Úqr2   ÚjrI   r?   r:   r:   r;   Útest_powdenest¯   sT    L"<*"*.2::$ ÿ
B> ."ÿ
&ÿ
22J6&rZ   c                  C   sÄ   t ddd\} }}t dƒ\}}}t| | | | ƒ| | ||  ||  ksPJ ‚t| | ||  | ƒ| ||  |||   ks„J ‚t| | | ||  | ƒ| || |  ||d   ksÀJ ‚d S )Núx y zT©Zpolarza b cr!   )r   r   )r   r   r   r   r   Úcr:   r:   r;   Útest_powdenest_polarÝ   s
    04r^   c                  C   sV   t tƒtddtƒ t d } t| ƒtt tƒ tddtƒ d ksDJ ‚| jd u sRJ ‚d S )Nr:   r!   )r   r   r   r   r   Zis_positive)Úargr:   r:   r;   Útest_issue_5805å   s    (r`   c                  C   s>   t dddƒ} t| dd}|| ks$J ‚|jd tdƒks:J ‚d S )NÚMé
   Tr%   r   )r   r   Úargsr   )ra   Úexprr:   r:   r;   Ú(test_issue_9324_powsimp_on_matrix_symbolë   s    re   c                  C   sÈ   dt dƒ dt dt dƒ d ƒ  t t dƒ d tj ƒ } tdd„ t |  ¡ ¡D ƒŽ dks`J ‚t|  ¡ ƒdkstJ ‚t| ƒdks„J ‚tt dt dƒ ƒt dt dƒ ƒ d ƒdks´J ‚t| ƒdksÄJ ‚d S )	Néûÿÿÿr!   é   c                 S   s   g | ]}t |ƒ‘qS r:   r>   )r9   r   r:   r:   r;   r<   ô   r=   z#test_issue_6367.<locals>.<listcomp>r   r.   r"   )r   r	   rK   r   Z	make_argsÚnormalr   r   )r   r:   r:   r;   Útest_issue_6367ò   s    <$0ri   c                  C   s^  ddl m}  ddlm} tdƒ\}}}tddd\}}}| dƒd	|  |d	t t | ƒks`J ‚t|| ||  ƒ|| | ks„J ‚|| d
| |  d
ks J ‚d
| | ||  ksºJ ‚||ƒ||ƒ ||ƒ||ƒ ksÞJ ‚t||ƒ||ƒ ƒ||| ƒksJ ‚t||ƒ||ƒ ||  ||  ƒ||d
ƒ ||  ksBJ ‚t||ƒ||ƒ ||  ||  dd||| ƒ|||   ksˆJ ‚t||ƒ||ƒ |d	ƒ t|ƒ t|ƒ || ||   ƒ|||  t|ƒ|d	| | ƒ  t|ƒ ksöJ ‚tt||ƒ||ƒ ƒƒt||ƒ||ƒ ƒks(J ‚tt||ƒ||ƒ ƒddt||| ƒƒksZJ ‚d S )Nr   )Ú
polar_lift)Ú	exp_polarr[   zp q rTr\   r1   r!   r"   r   r'   r%   )	Z$sympy.functions.elementary.complexesrj   Ú&sympy.functions.elementary.exponentialrk   r   r   r   r   r   )rj   rk   r   r   r   r/   rX   Úrr:   r:   r;   Útest_powsimp_polarû   s6    ($$&"ÿ
&ÿ
6ÿ*þ
ÿ
ÿrn   c                  C   sº  t ttƒ } t| ƒ}ttt ƒt ƒ}t||  ƒt| ƒd ks@J ‚t|| d  ttƒ ƒttƒ|d  kslJ ‚t|t d  |d  t ƒ|d |d  ksœJ ‚t|t  |d  td  ƒ|d | ksÈJ ‚tt |d  td  ƒ|d ksìJ ‚tt |d  t ƒt t |d  ksJ ‚ttt ƒ|d  t ƒ|d ks<J ‚ttt ƒ|d  ttƒ ƒtt ƒttƒ |d  ksvJ ‚tttt ƒ|d  ttƒ tddƒtt ƒttƒd  |d  ks¾J ‚t|d | t d  t ƒ|d ksèJ ‚t t t } | t| ƒ }|jdu sJ ‚t|ƒt| ƒd ks*J ‚t tttddƒ ƒ }t|t|ƒ ƒt|ƒd ksbJ ‚t|d t|ƒ ƒt|ƒd ksˆJ ‚t|d tt|ƒƒ ƒtt|ƒƒd ks¶J ‚d S )	Nr.   r!   rA   é   F)ÚevaluateTé	   )r   r   r   r   r   rC   r   r   )r   r   r]   r:   r:   r;   Útest_issue_5728  s.    ,0,$*&:$ÿ
*"&rr   c                  C   sÜ   t ddd\} }}}tt| ƒt|ƒ t|ƒ ƒt t|  ƒ t| ƒ t| ƒ ksXJ ‚tt| dƒt|dƒ t|dƒ t|dƒ ƒdtddƒ  |  tddƒ  | tddƒ  | tddƒ  | tddƒ  ksØJ ‚d S )Nzn1 n2 n3 n4Tr7   r.   r1   r"   )r   r   r   r   r   r   )Zn1Zn2Zn3Zn4r:   r:   r;   Útest_issue_from_PR15992  s    "ÿ*ÿÿÿÿÿrs   c                  C   s  t ddd} t dddd}t ddd}d|d	 tj  d|td
d	ƒ tj   }td|d	  ƒt| kslJ ‚td|d	  ƒt| ksˆJ ‚td|td
d	ƒ  ƒt|  ks¬J ‚t|ƒd|d	 tj  d|td
d	ƒ tj   ksâJ ‚td| td
d	ƒ  ƒt |  ksJ ‚d S )Nr   Tr3   Úl)ZevenZnonzeror+   )Zoddr1   r!   r.   )r   r	   rK   r   r   r   )r   rt   r+   Ze_xr:   r:   r;   Útest_issue_10195;  s    *$$ÿru   c                   C   sV   t dt tddƒ ƒddtd   ks*J ‚t ddt  d ƒddtd   ksRJ ‚d S )Nr.   r!   r"   )r   r   r   r:   r:   r:   r;   Útest_issue_15709G  s    *rv   c                  C   sL   t ddd\} }t| | d ||  d  ƒ| | d ||  d  ksHJ ‚d S )Nzx yFrN   r!   rO   )r   r   r:   r:   r;   Útest_issue_11981L  s    rw   c                  C   sh   t ddd} d| d  td| d  ƒ }tt|ƒƒt|ƒ  kr^| d d tdƒd   ksdn J ‚d S )Nr   Tr,   r1   r!   r"   r.   )r   r   r   r   r	   )r   r?   r:   r:   r;   Útest_issue_17524Q  s    rx   c                  C   sÂ   t tttƒd ƒddttƒks$J ‚t ttjt  dt  ddtksJJ ‚ddlm}  dt	 }t
t| ƒtt|   tdt |   | }t | |ddddtt tdt   t
tƒ ks¾J ‚d S )Nr!   Tr5   r   )Úexpand_power_baser"   )r   r   r   r   r	   rK   r   Úsympy.core.functionry   r   r   r   r   )ry   r?   rd   r:   r:   r;   Útest_issue_19627W  s    $&,ÿr{   c                  C   s¼   t ddd\} }t| t |t  ƒ}td }| t|¡}|jsBJ ‚t| | ||  ƒ|ks^J ‚t ddd}tt| t|  ƒ}|d }| ||¡}|jsœJ ‚tt| t|  ƒ|ks¸J ‚d S )Nzp1, p2Tr0   r"   r2   r3   )r   r   r   rL   Zis_Powr   r   )Úp1Úp2Úrefr?   Zansr2   r:   r:   r;   Útest_issue_22546b  s    

r   N)=rz   r   Zsympy.core.mulr   Zsympy.core.numbersr   r   r   r   r   Zsympy.core.singletonr	   Zsympy.core.symbolr
   r   r   rl   r   r   Z(sympy.functions.elementary.miscellaneousr   r   Z(sympy.functions.elementary.trigonometricr   Z'sympy.functions.special.gamma_functionsr   Zsympy.functions.special.hyperr   Z"sympy.matrices.expressions.matexprr   Zsympy.simplify.powsimpr   r   Zsympy.simplify.simplifyr   r   r   Z	sympy.abcr   r   r   r   r   rJ   rM   rS   rV   rZ   r^   r`   re   ri   rn   rr   rs   ru   rv   rw   rx   r{   r   r:   r:   r:   r;   Ú<module>   s@   k.		