o
    8Va˗                     @   s  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZE d dlFmGZG d dlHmIZImJZJ d dlKmLZLmMZMmNZN d dlOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z] dd Z^d	d
 Z_dd Z`dd Zadd ZbeNdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd  Zjd!d" ZkeNd#d$ Zld%d& Zmd'd( Znd)d* Zod+d, Zpd-d. Zqd/d0 Zrd1d2 Zsd3d4 Ztd5d6 Zud7d8 Zvd9d: ZweLd;d< Zxd=d> Zyd?d@ ZzdAdB Z{dCdD Z|dEdF Z}dGdH Z~dIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZeNdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf ZeMdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr ZeLdsdt ZeLdudv Zdwdx Zdydz Zd{d| Zd}d~ ZdS )    )CAbsacosAddasinatanBasicbinomial
besselsimpcoscosh	count_opscschdiffEEqerfexp	exp_polarexpandexpand_multinomialfactor	factorialFloatFunctiongammaGoldenRatiohyper	hypersimpIIntegral	integrateKroneckerDeltalog
logcombineLtMatrixMatrixSymbolMul	nsimplifyoopi	PiecewisePolyposifyradRationalSseparatevarssignsimpsimplifysignsinsincsinhsolvesqrtSumSymbolsymbolssympifytanzooAndGtGeLeOr)_keep_coeff)	unchanged)nthrootinversecombine)XFAILslow_both_exp_pow)xyztabcdefghinc                   C   s4   t tddttdd    d dk sJ d S )NgQ@g    @@g333333'@   grfa@g-q=)absr3   r5   r.   evalf r]   r]   D/usr/lib/python3/dist-packages/sympy/simplify/tests/test_simplify.pytest_issue_7263   s
    r_   c                  C   sH   t d} tt| |  t| ksJ ttt| tt| ks"J d S )NrL   )r;   r3   r   r   rL   r]   r]   r^   test_factorial_simplify   s   $ra   c               
   C   s\  t d\	} }}}}}}}}td}	tdd ttt| |  t t t fD s(J d|  d|  }
|
| | | |  ks<J t|
| | | |  ksJJ |d |d  dt | |d   }
t|
|
ksdJ dd|   ddd|     dd|    }
t|
d	ksJ d
|  |d  d|d   d| d  |  | | d  }
t|
d| ksJ |  | | | d |d   | | d | d   }
t|
d| ksJ | | |  |  }
t|
d| ksJ |	| ||	|   |	|  }
t|
d| ksJ dd| t|t |   t }
t|
tt|  d t|  d ksJ t	d| d d  | 
| }
t|
d| d d  ks6J t	| | d d|   d  | 
| }
t|
| | d d|   d  ks[J td}	td| ||d   | g| |||d   gg }t|td	|	g d |	 d| ||d    |d |||d   d| ||d       d	ksJ |  ||t   ||  |t   |t |t   t|  |t   }	t|	|t|  |t  ksJ |  |d d  d|d  | d d  t| d |d  d   | d d t| d |d      t| d |d    | d| d  t| d  |d  | d  |d  d  t| t| d |d  d   | d t| d  |d  | d  |d  d  t| t| d d  | d |d     | d t| d  d |d d   t| d  |d  | d  |d  d  t| | d d  t| d  d |d d  | |  |d  |   t| d  |d  | d  |d  d  t| d  |d  | d  |d  d   t|  tt| d  d |d d   | d |d      t| d  |d  | d  |d  d  t| t| d |d     | d| d  t| d  |d  | d  |d  d  t| t| d |d  d   | d t| d  |d  | d  |d  d  t| t| d d  | d |d     | d t| d  d |d d   t| d  |d  | d  |d  d  t| | d d  | t| d  d |d d   |  |d  |   t| t| d  |d  | d  |d  d   t| d  d |d d  t| d  |d  | d  |d  d  t|  tt| d  d |d d   | d |d      t| d  |d  | d  |d  d  t| t| d |d     |t| d  d |d d   |  | t| d  |d  | d  |d  d  t| t| d |d   |d d   d|  | t| d  |d  | d  |d  d  t| t| d |d  d    | | t| d  d |d d   t| d  |d  | d  |d  d  t| |d d  | t| d  d |d d   | d  | |  t| t| d  |d  | d  |d  d   tt| d  d |d d   | d |d      t| t| d |d     || d d  d|  | | d d  t| d |d  d   d|  | t| d |d      t| d |d     || d d  |d d  |  | t| d  |d  | d  |d  d  t| t| d |d   |d d   d|  | t| d  |d  | d  |d  d  t| t| d |d  d    | | t| d  d |d d   t| d  |d  | d  |d  d  t| |d d  | t| d  d |d d   | d  | |  t| t| d  |d  | d  |d  d   tt| d  d |d d   | d |d      t| tt| d  d |d d   | d |d     | t| d  d |d d   t| d  |d  | d  |d  d  t|d  td | d d  | d |d   |d d    | t| d  d |d d   t| d  |d  | d  |d  d  t|d  td | d d  | d |d   |d d    }t|d|  td | d |d    ks J tdttdtdks0J t ddd\}}t|| ||  || ||  ksMJ t|d||    | | | |  ksbJ t|d|  d|   ||  ||  ksyJ ttdtd tdksJ ttd|  td t| ksJ ttg g | t| ksJ d S )Nzx,y,z,k,n,m,w,s,ArU   c                 s   s    | ]	}t ||kV  qd S Nr3   ).0tmpr]   r]   r^   	<genexpr>#   s    z%test_simplify_expr.<locals>.<genexpr>   rZ         r   z/((-1/2)*Boole(True)*Boole(False)-1)*Boole(True)z(2 + Boole(True)*Boole(False))z-Boole(True)/2zA,BFcommutative   )r<   r   allr   r   r)   r3   r*   r
   r    r   r;   r%   invrO   rP   r9   r5   r'   r=   r"   r   r   )rL   rM   rN   krY   mwsArU   rT   exprBr]   r]   r^   test_simplify_expr   s.  .$(82 ,$&8D
B"H& 
(
6(
(@:
.
(

(
(2$(L04RLF
4( 0L.
(

.!
**."&"ry   c                  C   s   t t tt  tt  d } t t tt  tt  d }t t	 tt
  tt  d }t| ||gt ttdd}t|t tt tt  tt	  tt  tt	  tt  tt t tt t	  tt t
  tt t
  tt t  tt t	   kszJ d S )Nrg   Frc   )rL   rP   rM   rQ   rN   rR   rS   rT   rU   rV   rW   rX   r8   r3   )Zf_1Zf_2Zf_3Z	solutionsr]   r]   r^   test_issue_3557   s   
.Frz   c               	   C   s\  t ttd ttd  dksJ t ttd tt tks"J t ttd ttd  tttt  dt ks>J t tttd ttd  tttt ttdks\J tddd} t tt|   td|   ksrJ tt	 t t
tt	 tdd ttd  dt    ttt
tt	 tdd  dtt   dtt  t	t t
tt	 tdd ttd  dt    dtt    t
t td  dt   tt	t  ttt	 ttt
tt	 d  dtt   d  t
tt	 d  dtt   }t |dtd	d  tt	 tt ksJ t ddt  d dt ks,J d S )
NrZ   rg   ncFrm   rh   rl   ri   )r3   r5   rL   r
   r   r   r   r<   r   r*   r   r/   rO   r   r9   )r{   ansr]   r]   r^   test_simplify_other   sB   $ 8( N

0


(
.&r~   c                  C   s~   t tt} ttt}t| | ttksJ tttddgddggtt dtd gtdt dggks=J d S )Nr   rl   rg   )r
   rL   Z_eval_rewrite_as_expr>   r3   r5   r   r%   )ZcosAsExpZtanAsExpr]   r]   r^   test_simplify_complex   s   "r   c                  C   sN   g d} | D ]}t |}tt|ddt|ksJ t|td|us$J qd S )N)za(1/2 - sqrt(3)*I/2)*(sqrt(21)/2 + 5/2)**(1/3) + 1/((1/2 - sqrt(3)*I/2)*(sqrt(21)/2 + 5/2)**(1/3))za1/((1/2 + sqrt(3)*I/2)*(sqrt(21)/2 + 5/2)**(1/3)) + (1/2 + sqrt(3)*I/2)*(sqrt(21)/2 + 5/2)**(1/3)z8-(sqrt(21)/2 + 5/2)**(1/3) - 1/(sqrt(21)/2 + 5/2)**(1/3)rg   )Zratio)r0   r   r3   r)   )rootsrr]   r]   r^   test_simplify_ratio   s   r   c                  C   s   dd } dd }t d t tt d  tt d   }| t|| d| |ks(J |t||d||ks6J ttt d tt d  d}| t|| d| |ksSJ |t||d||ksaJ d S )Nc                 S   s   t t| S rb   )lenstrrw   r]   r]   r^   <lambda>   s    z'test_simplify_measure.<locals>.<lambda>c                 S   s
   t |  S rb   )r   r   r]   r]   r^   r      s   
 rg   rZ   )Zmeasure)rL   r5   r
   r3   r   )Zmeasure1Zmeasure2rw   Zexpr2r]   r]   r^   test_simplify_measure   s   $ r   c                  C   st   dt  dt  } t| dddt t  ksJ t| d ddt t  ks$J t| dd| ks.J tddddks8J d S )NrZ          @TrationalFz0.9 - 0.8 - 0.1r   )rL   rM   r3   r   r]   r]   r^   test_simplify_rational   s
   r   c                   C   s>   t ttddttdd dt ttdd ksJ d S )Nrl   rZ   r|   rg   )r3   r   r/   r   r]   r]   r]   r^   test_simplify_issue_1308   s   r   c                  C   sX   t ttt  tt t ksJ tddd} t | | |    | | |    ks*J d S )NrY   Frm   )r3   r   r   r<   )rY   r]   r]   r^   test_issue_5652   s   $(r   c                  C   sd   t d} t d}| | d d|  |d  d|d   d| d  |   }t|dd|  ks0J d S )NrL   rM   rZ   rj   ri   rg   rk   )r;   r3   )rL   rM   rT   r]   r]   r^   test_simplify_fail1   s   8r   c                  C   s  t ddtd  dtdd ksJ dtd dtd  td td } t t| d d| ks4J t dd	td  d
dtd ksGJ t dd	td  d
dtd ksZJ dtd d dtd  dtd  }t |d
dtd td ksJ dtd td td
 } tt t| d
 d
| ksJ dtd dtd  dtd  } t t| d
 d
d| ksJ dtd dtd  dtd  } t t| d d| ksJ t t| d d| ksJ d S )NZ   "      ri   rg   rZ   ro   )         irl   i(  
   ix  i
  ih        i  )rG   r9   r   )qrw   r]   r]   r^   test_nthroot   s   &(&&("$$r   c                  C   s|   dt d t d tjd  } t| d }t|d| ksJ dt d t d tjd  } t| d }t|d| ks<J d S )Nrg   rZ   ri   l      Fx:^V r   l       73Me')r9   r0   Oner   rG   )r   pr]   r]   r^   test_nthroot1   s   r   c            
      C   s<  t d\} }}}td| |  | d|  | |  d|  | ||  ks&J t| | | | |  | | d|  ks<J tt|  | t|  | |  t|  | d|  ksXJ t| |d  t|  | t|  t|  | t||d   t|  ks~J t| t| |  | t|   | dt|  t|  ksJ t| |d  | jsJ td|  | | |  | d |d  ksJ t|t t||   t|  |t| t|  t| t|  t ksJ t| | | |  |d  d|   d | d d ksJ tddd}tt|d | |d   |td|   ks#J tt||d | |d    |t|d|    ks@J tt||d | |d    dd|t| td|   ksaJ tt| | jsmJ tt| | ddt| t| ksJ td|  d | ddd	d
d| d|  d ||iksJ td|  d | d| gd	d
|| d|  d iksJ td|  d | dg d	d
d| d|  d ||iksJ td|  d | ddd
d| d|  d ||iksJ td|  d | dd d	d
|d|  d  iks
J tdddd u sJ td|  | ddd	d u s%J td|  | ddd u s4J td|  | dd d	d
d|  | iksJJ t ddd\}}t|||  d| | kscJ t| | |  | d|  kstJ t	d}t|| | ||   || | ||   ksJ | dt
dd||   }t||ksJ tt| | }|t| t| kr|jsJ tdd tdd  d }t| | }	t|	}|	js|jr|t| t| ksJ tt| | | }|t| t| t| ksJ tt| | | t| | | ksJ d S )Nzx,y,z,nrZ   rg   r   TpositiveZforcer]   )dictr<   Zcoeff)r   ri   zn,mFrm   rU   )r<   r1   r*   r5   r   is_Powr
   r;   r9   r   r   r[   Zis_Mul)
rL   rM   rN   rY   r   rs   rU   eqru   rP   r]   r]   r^   test_separatevars   sr   <,8*<, (:2:"
*




 ,""2"*".r   c                  C   s$  t d\} }}tdt| t|  t|  t| t| d t|d  ks)J td|  t| | t|  t|t|  | t| t|  | t|  t| | d t|d  t|d   kshJ t ddd\} }tdt| t|  t| |  t| d t|d  ksJ d S )Nzx,y,zrg   x,yTr   )r<   r1   r"   r   )rL   rM   rN   r]   r]   r^   !test_separatevars_advanced_factor=  s"   &,
 "r   c                  C   s  t ddd\} }tt|||d ksJ tt|d |d u s"J tdt| |d|d  ks3J td| t|d  |d|d d  ksJJ tt| ||| | |d  ks\J tt| d ||| | d |d  ksrJ d| d t| td| d  }t||tjd| d dd	|  d
|d     ksJ dd| d td| d   }t|||tj |d d| d  d| d   ksJ t| |d|  t| }t||||  |d d  ksJ d S )Nzn,kTZintegerrg   rZ   rh   r   ri      r   rl   )r<   r   r   r   r0   Half)rY   rr   Ztermr]   r]   r^   test_hypersimpI  s   ".$,$8 8&r   c                  C   s  t d} 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tddks3J tdt dtd d	 ksCJ tdtd d
 tgtd	 ksUJ td	t tgd	t d	 kseJ tttt tdd ddtdkszJ tt	ttdd ddtdksJ ttt
dddd	t  tgttttd	 t  ksJ td	td	t
d t  tdksJ ttddtddksJ ttddtddksJ tdddtddksJ tdddtddksJ tdddd d	tdd ksJ t| d! dd"tj|  ksJ td#|  dd"tdd|  ks&J ttd dd"td$ks7J ttd%ttd	gttd	 d& ksMJ ttd%dttd	gt d
 td	 tdd
 kslJ t| d' | d ksyJ ttd( td) ksJ ttd( dd"td( ksJ ttd* d+t ksJ ttd,td	  td	 d-  dtd	 d.   trJ | d/ }|jrt| d/ dksJ td0d1dd2tddksJ td0ddd2tddksJ td3d1dd2td4dks J td3ddd2td4dksJ td5ddd2td5ksJ td6ddd2td7ks+J td8ddd2td9ks9J td:td;dksEJ td<ddtddksSJ td=ddtddksaJ td>ddtd?d@ksoJ tdAddtdBd@ks}J ttdCtddDksJ tdEdd"dksJ tdF}t t|| f}|D ]}t|t }t||ksJ t||  | | ksJ qtdGddHdItdGksJ ttd)|  dHdJd)td)|  ksJ d S )KNrL   r   rl   rg   g@   r   r   rZ   rh   ri   FZevaluatez1/2 - sqrt(3)*I/2zsqrt(sqrt(5)/8 + 5/8)1z1/4z49/17 + 8*I/17g{Gz?)	tolerance   r   gMbP?ic  q   g1ZGU?g-C6?gr(?i{  i  T)r   Zfull      ?r   g
@z109861228866811/100000000000000gAk?r         @g      Y@d   gHz>i g      g      g      g        gk}
@g?)r   r   gRTU@   !   g
ףp=@@   gzGB@(   g33333ciig?gɿg镲q?iW  i  g镲q̿ig:0yU>ig9(L67infgQUU?exact)r   rational_conversion)r   )r;   r(   r/   r   r9   r   r*   r   r=   r5   r   r0   r   r"   rY   r   r   rN   Zatomsr   r)   r4   r\   )rL   rT   r   ZinfsZzir}   r]   r]   r^   test_nsimplify`  s    $ (
 $
,
*4r   c                  C   s   t d} t| tjksJ d S )NzE1/(1 - (-1)**(2/3) - (-1)**(1/3)) + 1/(1 + (-1)**(2/3) + (-1)**(1/3)))r=   r(   r0   r   )re   r]   r]   r^   test_issue_9448  s   r   c                  C   s   t d} t d}t d}t d}t|  |  | | ksJ t|  | |  | ks,J t| | | | ks8J t| |  |  | ksFJ t|  d t|  ksSJ ttddtu s^J t| |  | |  ||  ||  kstJ d S )NrL   rM   rP   rQ   r   )r;   r3   r?   r/   )rL   rM   rP   rQ   r]   r]   r^   test_extract_minus_sign  s   0r   c                  C   s  t d} t d}td}td}t|| | || |  || | || |   dks2J td||  || |  t|| d |  dksNJ ttd||  | || | || d   dksjJ t|| | ||| ||  dksJ d S )NrL   rM   rU   rV   r   rZ   rg   )r;   r   r3   r   )rL   rM   rU   rV   r]   r]   r^   	test_diff  s   D880r   c                  C   sN  t d\} }td}t ddd\}}tddd}tt| dt|  t| dt|  ks0J tt| dt|  dd	t| |d  ksHJ t|t| t| |t| t| ks`J t|t| |t|   t|| |t|   ks|J t|t| t| t|| | ksJ tt| t| t| t| ksJ tt|t|  t|t|  ksJ ttd
t| |t|  tt|| |d  tt|d ||  fv sJ ttt| t| t| dd	tt| | | ksJ tdt t|  dd	dt t|  ksJ t| d t|  t| | |  dd	| d t| |  | |  ks?J tt| d t| t| dd	t||t| d   ks`J t| | t| d |d   t|  t| t| tdd  t|d   dd	| | t| d |d   t| |  t| tdd  |tdd   ksJ tt	t| |  t
t| |   dd	t
t| |  t	t| |   ksJ tdt| t| t|  t| t| t|t|d  t|  t||  ks
J tdt| dt|  t|d |d  ks%J t| |d  td td | |d  td ksBJ t| | t| |  | td  | | t|d  ksbJ tt| td td|  ksuJ tt| tt| }t||ksJ | d|di}tt| t| |||ksJ d S )Nr   rP   zz,wTr   rQ   realrZ   r   rk   rh   ri   rg   ro   r   )r<   r;   r#   r"   r
   r   r9   r*   r/   r   r   r[   subs)rL   rM   rP   rN   rt   rQ   r   repsr]   r]   r^   test_logcombine_1  s\   0008,((4
"
.&
"
<
D
*"
.&
6:@&.r   c                  C   sf   t ttd ttd  t t} t| dd| ksJ t| dtt  dd| ttd  ks1J d S )NrZ   ri   Tr   )r   r5   rL   r
   r#   r"   )rX   r]   r]   r^   test_logcombine_complex_coeff  s
   "r   c                  C   s   t ddd\} }ttdtd ttddddksJ tt| t| t| | ks/J tttddddtd ttddddksIJ d S )	Nr   Tr   ri   rZ   Fr   rh   )r<   r#   r"   r/   rL   rM   r]   r]   r^   test_issue_5950  s   *$r   c                     s  ddl m}  tt| tddd tddd dksJ td	|  \}}t| |t|  ks4J tt| d	|  gd
ksBJ td} tddd}tddd}| ||g}t|\} t|dkseJ  fdd|D |ksrJ tt	td	|  t
 d t
d	df dksJ tttd	| |  d |d	df dksJ tddd}t|\}}|ji ddddddddddddddddddddddd dd!dd"dd#dd$dd%dddd&ksJ d S )'Nr   r`   r   Tr   rY   negativez(_x + n + p, {_x: x})rg   z([_x, _x + 1], {_x: x})rL   z
[_x, n, p]c                    s   g | ]}|  qS r]   )r   )rd   rt   r   r]   r^   
<listcomp>  s    ztest_posify.<locals>.<listcomp>ri   z3Integral(1/_x, (y, 1, 3)) + Integral(_y, (y, 1, 3))zSum(_x**(-n), (n, 1, 3))rr   )finiter   ZzeroFZ	imaginarynonpositivern   Z	hermitianr   ZnonzeroZnonnegativer   complexr   ZinfiniteZextended_realZextended_negativeZextended_nonnegativeZextended_nonpositive)Zextended_nonzeroZextended_positive)	sympy.abcrL   r   r-   r;   r"   r   r   r<   r   rM   r:   Zassumptions0)rL   r   Zrepr   rY   ZorigZmodifiedrr   r]   r   r^   test_posify  sv   

 
&&r   c                  C   sP   ddl m} m} td}td|  d||  d|  d||   dks&J d S )Nr   r   rU   rh   ro   rZ   ri   )r   rL   rM   r   r3   rL   rM   rU   r]   r]   r^   test_issue_4194  s   8r   c                   C   s<   t td td  dksJ t td td  dksJ d S )Nr   rZ   r   )r3   rL   r]   r]   r]   r^   test_simplify_float_vs_integer&  s    r   c                  C   s  t d t  tjt dt  fksJ t d t jddtjt d t fks(J tt d t   tjtt dt   fks?J tt d t  jddtjtt d t  fksXJ t ddt    dt  d d   dt t d d  fksvJ ddt   dt ddt     dt dt td   d fksJ ddt   d  ddt  d d fksJ ddt   dt   dttddt  d dt  fksJ d	d
t   dt ddt     dd
t  dt td   d	 fksJ d	t dt   dt  ddt     dt td  fksJ d	t dt   dt  ddt    d  dt d td d  fks5J td  dtd fksDJ tj dtfksPJ t dt  } |  d| fksaJ tjdt    t	dddt   fkswJ t	dddt    t	ddt	ddt  fksJ t	dddt    t	ddt	ddt  fksJ ddt d   ddtd  fksJ ddt d   ddt
tjdt dd fksJ d	t	dd  dd	t	dd fksJ d	t	dd  d	d	t	dd fksJ ttt	d	d dt  tt	dd dd t	dddt  dt  d
t  fks/J dt	dd dt	dd td  jddddt	dd tdtd  fksYJ d S )NrZ   F)clearri      rg   ro   rh   r   r   r   y   rl   r   r   r   r   r      T)Zradical)rL   rM   Zas_content_primitiver0   r   r   rE   Infinityr)   r/   r'   r   rN   r9   r   r]   r]   r^   test_as_content_primitive.  sd   &*.2"" "&
*



,

*
*** 
* r   c                  C   s   t t  d  t t d   } tt| dtju sJ tt d tdt  ks'J ttt  tt  ks3J ttt  ddtdt t ddksFJ d S )Nrg   r   Fr   rl   )rL   r2   r   r0   truer   rM   r'   )rT   r]   r]   r^   test_signsimpZ  s
   *r   c                  C   s  ddl m} m}m}m}m} ttt t	 t
 d |t
tttt	 d   | t
tks/J ttt t	 t d |tdtt ttt	 d   | tdtt ksXJ ttdtt	 ttdd  ttt	 d  tt t	 t d  |tddttttt	 d   |tttttt	 d   d | tttttt ksJ t|tddttd|t tt	tt  ksJ t|tttt t	 d  tt t	 t d | tt ksJ |dt ttt  tt
tdtt	 | ddtt tt
  d ksJ ttd td| dt t | ddt  t | ddt  t  td|dt t |ddt  t |ddt  t    d tt| ddt  td | ddt  td   t|ddt  td |ddt  td      td d	 t| dt t t|dt t    dksJ td
td  t| tdddt d| tdddt   | tdddt   t|tdddt d|tdddt   |tdddt     d ttd| tdddt  d d| tdddt  d   td|tdddt  d d|tdddt  d      d
td  tdd t| tdddt  t|tdddt     dksYJ t| td t| td t dt | tt t  dksyJ t| td t| td t | tt dt t | tt t ksJ ttd | tt td | td t  | td t dt t | td t td | td t  td | td t  dt | td t  | td t ksJ d S )Nr   besseljbesselir   cosine_transformbesselyrZ   rg   rh   rl   rk   r      Q   r   ri   	   r   )sympyr   r   r   r   r   r	   r   r   r*   rM   rN   r   rP   r9   rL   r/   r
   rO   r5   rQ   r   r]   r]   r^   test_besselsimpb  s   2:D",
,$0.
NB:D
@J8hr   c                  C   s   t t t  tt t   } tt d tt d  }tt t t t  }t| }t|}t|}tt| t |k f|dft|t |k f|dfksHJ d S )NrZ   T)rL   rM   r5   r
   r   r3   r+   )Ze1Ze2Ze3s1s2Zs3r]   r]   r^   test_Piecewise  s   r   c                  C   s.   G dd dt } | dd}t|dksJ d S )Nc                   @   s   e Zd Zdd ZdS )ztest_polymorphism.<locals>.Ac                 [   s   t jS rb   )r0   r   )rL   kwargsr]   r]   r^   _eval_simplify  s   z+test_polymorphism.<locals>.A._eval_simplifyN)__name__
__module____qualname__r   r]   r]   r]   r^   rv     s    rv   r   rZ   rg   )r   r3   )rv   rP   r]   r]   r^   test_polymorphism  s   
r   c                  C   s8   t ddd\} }}}ttt|  t|   ksJ d S )Nzn1 n2 n3 n4Tr   )r<   r3   r   r9   )Zn1Zn2Zn3Zn4r]   r]   r^   test_issue_from_PR1599  s   $r   c                  C   sx   t dt  dt  d  } t| t d t dt   d ksJ t|  dt d  dt  t  dt   dt  ks:J d S )NrZ   rg   rh   )rL   rM   r3   r   r   r]   r]   r^   test_issue_6811  s
   $
&r   c                     s   t tttt  t tttt  tttt tttt g} ttt tt t tt ttg}td  fdd| D |ksGJ d S )NrU   c                    s   g | ]}t  |jd  qS )r   )r3   args)rd   ZeirU   r]   r^   r     s    z#test_issue_6920.<locals>.<listcomp>)r
   rL   r   r5   r   r7   r   r   )rT   okr]   r   r^   test_issue_6920  s   $(r   c               	   C   s   ddl m} m} t| tttdd | |kfdt |d  d| d   df dtt|  tdd | |kfdt |d  d| d   df   dt |   td| |kfd	ksZJ d S )
Nr   r   Rrh   ri   iTrZ   rl   r   T)r   r   r   r3   r+   r*   r/   r   r]   r]   r^   test_issue_7001  s   
r   c                  C   sH   t td ttd  } d}t| |dd}|tjusJ t|s"J d S )NrZ   Fr   )r
   rL   r5   r$   r0   r   r3   )ZlhsZrhsrT   r]   r]   r^    test_inequality_no_auto_simplify  s
   r   c                  C   sd  ddl m} m} |ddksJ |dt dksJ tddks"J tdt dks,J t| d | d| d   dks@J |ddksHJ |dt dksRJ tddksZJ tdt dksdJ |ddkslJ |dt dksvJ tddks~J tdt dksJ td	}||dksJ ||t dksJ t|dksJ t|t dksJ d S )
Nr   )Numbercancelg+=g      ?r   ig#B;g0.++z1e-1000)r   r   r   r   r3   r   )r   r   rU   r]   r]   r^   test_issue_9398  s&   (r   c                  C   s4   t ddd} | d | d  d }t||ksJ d S )NMr   )r   r   )r   rh   i  )r&   r3   )r   rT   r]   r]   r^   test_issue_9324_simplify  s   r   c                  C   s~   ddl m} m} tddd}tddd}tdd tdD }| d}|j| | }t|| 	||||id	ks=J d S )
Nr   )Identitytracevri   rg   rv   c                 S   s   g | ]}|d  qS rg   r]   )rd   rX   r]   r]   r^   r         z,test_issue_9817_simplify.<locals>.<listcomp>r   )
sympy.matrices.expressionsr   r   r&   r%   rangeTr3   Zas_explicitZxreplace)r   r   r  rv   rL   XZ	quadraticr]   r]   r^   test_issue_9817_simplify  s   *r  c                  C   s4   t d} t| ttd | ttd ksJ d S )NrL   rg   )r;   r3   r   r6   r`   r]   r]   r^   test_issue_13474  s   ,r	  c                     s  t d\} }td G  fdddt}t| | | | ks$J t| | | ks0J t| | dd| ks>J t| t| d t| d  dddksVJ t| | |dd| | |ksjJ ttt| ssJ ttt| tt| ksJ tdttd	|   ddd
|  ksJ ttt	| tt	| ksJ ttt	| dd| ksJ tt	t| dd| ksJ ttt	| ddd| td ksJ ttt	| ddddd| td ksJ d S )Nzx, yrV   c                       s   e Zd Zd fdd	ZdS )z)test_simplify_function_inverse.<locals>.frg   c                    s    S rb   r]   )selfZargindexrV   r]   r^   inverse  s   z1test_simplify_function_inverse.<locals>.f.inverseNr  )r   r   r   r  r]   r  r]   r^   rU     s    rU   T)r  rZ   rg   ri   ro   Fr   )
r<   r   r3   rH   r5   r
   rF   r   r"   r   r   r]   r  r^   test_simplify_function_inverse  s     0( ( &.r  c                  C   s  ddl m}  | dt dt d  tdt d  dfksJ | dt dt d  d tdt d  tddfks;J | dt dt d  d ttdt d  td tdd fks]J | tdd tddfksmJ | dtd d tdtjfksJ | tdtdtd fksJ | tjttjtfksJ | tj	 ttj	t fksJ | dtj	d  tt
d	t d fksJ d S )
Nr   clear_coefficientsrh   ro   ri   rZ   rg      r|   )sympy.simplify.simplifyr  rM   rL   r/   r9   r0   r   r   ZPir*   r  r]   r]   r^   test_clear_coefficients  s   0:D &,r  c                     s  ddl m ddlmm  ddlm ddlm t	ddd\} }}}t
d	td
}td}td}td}| |||||||itdd tdd i fddd!fdd	}|| | |  | |  | | | | d  | | | d | d  || | | | d  |  | d || d | |  | |  | | | d  | | | d  dd |||  |d  |  |d  |  |d  || |d  d   || | | d  | | d  | | d  | | |  d | d   || d | | d  | | d  | | d  | d | | d  d  || d | | d  | | d  | |  | d || d  d  | d   || | |  | | | |  |  | |  | | d | | | d    || | |  | | |  | |  | | | | d | d  ||d | d  | | d  | |  || d | |d  ||d  |  d  | d | | d  | | d  | | d  | | d  || d  d  | | d  | | d  }	tdD ]	}
|	| | 9 }	q||	| d || d  d  || d  d  | | d   || | |  | d | | |  | d dd  || | || d  | | || d   |d | d |d  | d | |d   d  | d  }	|	d| d ks`J dd  dd  ksqJ d S )"Nr   )nc_simplify)MatPowr   )Pow)reduceza b c dFrm   rL   rv   rx   CDc                 S   s   | | S rb   r]   r   r]   r]   r^   r   *      z"test_nc_simplify.<locals>.<lambda>c                 S   s   | | S rb   r]   r   r]   r]   r^   r   *  r  c                    sn   | v r|  S t | r| jd | jd S t | ttfr1| j fdd| jD S |   S )Nr   rg   c                    s   g | ]} |qS r]   r]   )rd   rP   )
_to_matrixr]   r^   r   2  r  z8test_nc_simplify.<locals>._to_matrix.<locals>.<listcomp>)
isinstancer   r   r'   funcr   )r   r  r  r  funcsr  substrL   r]   r^   r  ,  s   
 z$test_nc_simplify.<locals>._to_matrixTc                    s\   | |d|ks
J t | t |ksJ |r* |jdd} | |d|ks,J d S d S )NdeepF)Z
inv_expand)r   doit)rw   Z
simplifiedr   matrixZm_simp)r  r  r]   r^   _check6  s   z test_nc_simplify.<locals>._checkri   rZ   rk   rg   rl   )r"  rh   r|   r   ro   r  )TT)r  r  r  r  r   Z
sympy.corer  	functoolsr  r<   r;   r&   r   r'   r  )rP   rQ   rR   rS   rv   rx   r  r  r#  rw   _r]   )	r   r  r  r  r  r  r  r  rL   r^   test_nc_simplify  sD   
B">>BFJN>&*`:.*8&r&  c                  C   s   t ttt  tdtf} tt tt tdtf }ttt t}td t d }t| | || ks3J t| |ks;J t||ksCJ t|ddtttt ksRJ d S )Nrg   rZ   F)r!  )r:   rN   rL   rM   rP   r   r3   )rv   Zanewrx   Zbdor]   r]   r^   test_issue_15965S  s   "r'  c                   C   sT   t ttt ttt ksJ t ttddt   ttddt   ks(J d S )NrZ   ri   )r3   r
   rL   r   r]   r]   r]   r^   test_issue_17137^  s    4r(  c                  C   s  t ddd} t ddd}tt| d dt| |}| |ks!J tt| d dt| d}| t| dks9J tt| d | d t| d}| t| dksSJ ttt| | d t| d	}| t| d	ksmJ tt| d | d t| d}| tjksJ tt|| d t| d}| tt|dt| dksJ tt|d dt|| d t| d}| tt|dt| dksJ tt|d dt|d| d  t| d}| tt|dt| dksJ tt|d dt|| d t| d}| tjks
J d S )
NrL   Tr   rM   rZ   rh   ri   rg   r   )r;   r@   r   rC   r3   r5   r0   false)rL   rM   rw   r]   r]   r^   test_issue_21869c  s(   "&"*"&r*  c                  C   s2   t ttddf} | dksJ t| tju sJ d S )Nrg   r   )r   rL   r3   r0   ZZero)rN   r]   r]   r^   test_issue_7971  s   r+  c                
   C   sZ   t dttd d  ddtdt tdtddt   t   d d  ks+J d S )NrZ   rg   r"   rl   rh   )r3   r   r   rewriter*   r"   r9   r]   r]   r]   r^   test_issue_17141_slow  s   *r-  c               	   C   s  t tdtt  tdtdt tdtd     ksJ t tt d ttd  tdtd d td tdtd d  d  td d  ksOJ t dttd  dtdt tdtd   d d  ksoJ dttd d  } t | | ksJ d S )Nrg   rZ   rh      )r3   rL   r   r   r*   r"   r9   )r   r]   r]   r^   test_issue_17141  s   <>@r/  c                     s  t d\} }t t | | | |ksJ t d| d|ks$J t | d | dks2J t d|t d| dksEJ t d| tdt|dfd  d|  d| ksbJ t d| d| dksrJ tdddt d d dksJ td	d	 fd
d}t|d t dd ddgd dd dgdd ddgddd dggksJ d S )Nzi jr   rg   rZ   r   rY   Tr   rh   c                    s   | |kr ||  S dS )Nr   r]   )rX   jKrY   r]   r^   r     s    z.test_simplify_kroneckerdelta.<locals>.<lambda>)r<   r!   r3   r,  r+   r   r;   r%   )rX   r0  r   r]   r1  r^   test_simplify_kroneckerdelta  s    &:  "r3  c                   C   s`   t ttttd  dtt ksJ t dttd d td   dttd  ks.J d S )NrZ   rg   r   )r3   r[   rL   r   r]   r]   r]   r^   test_issue_17292  s   (8r4  c                  C   s4   t ttd dttd} t| ttdksJ d S )NrZ   rg   ri   )r@   rA   rY   r3   r   r]   r]   r^   test_issue_19822  s   r5  c                  C   s\   t ttdttd} t| ttdksJ t ttdttd} t| ttdks,J d S )Nri   )r@   rB   rL   rC   r3   r   r   r]   r]   r^   test_issue_18645  s   r6  c                  C   sP   t ddd} t ddd}tt| d| t| d| d }t|tjks&J d S )NrX   Tr   rY   rZ   rg   )r;   r@   r   rC   r3   r0   r)  )rX   rY   rw   r]   r]   r^   test_issue_18642  s   "r7  c                  C   s8   t ddd} t| d| dkB }t|t| dksJ d S )NrY   Tr   r   rg   )r;   r   r3   rB   )rY   rw   r]   r]   r^   test_issue_18389  s   r8  c                  C   s0   t ddd} tt| dk | dktjksJ d S )NrL   Tr   rg   )r;   r3   rD   r0   r   r`   r]   r]   r^   test_issue_8373  s   $r9  c                  C   s,   t ttdttd} t| tjksJ d S )Nrg   rZ   )r@   r   rL   r3   r0   r)  r   r]   r]   r^   test_issue_7950  s   r:  c                  C   s0  t tttt tksJ ttttd   } t tttd  |  td tttd t   t ks6J td ttd d  } t ttd d |  td td ttd d   d ksbJ td}ttt|td   } t tt|td  |  ttt|td   t |td  ksJ d S )Nri   rZ   rg   rU   )r3   r4   rL   r   r   )rT   rU   r]   r]   r^   test_issue_19484  s   <@Lr;  c                  C   s(   t d } | td   dksJ d S )Nzx**2rZ   r   )r,   r3   rL   )Z
polynomialr]   r]   r^   test_issue_19161  s   r<  N)r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   Zsympy.core.mulrE   Zsympy.core.exprrF   r  rG   rH   Zsympy.testing.pytestrI   rJ   rK   r   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r_   ra   ry   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r&  r'  r(  r*  r+  r-  r/  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r]   r]   r]   r^   <module>   s     
@a

	
AD*$
,#			
6



