o
    jg£  ć                   @   s   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
mZmZ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mZ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& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dlImJZJ d dlKmLZL d dlMmNZNmOZO d dlPmQZQmRZR d dlSmTZTmUZU d dlVmWZW d dlXmYZYmZZZ d dl[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe d dlfmgZg d d lhmiZimjZjmkZk d d!llmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZz d"d# Z{d$d% Z|d&d' Z}d(d) Z~d*d+ Zekd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zekd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZeidVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Z dndo Z”dpdq Z¢drds Z£ekdtdu Z¤dvdw Z„dxdy Z¦dzd{ Z§d|d} ZØd~d Z©dd ZŖejdd Z«dd Z¬dd Z­dd Z®dd ZÆdd Z°eidd Z±eid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¦S )§é    )ŚSum)ŚAdd)ŚBasic)Ś	unchanged)Ś	count_opsŚdiffŚexpandŚexpand_multinomialŚFunctionŚ
Derivative)ŚMulŚ_keep_coeff)ŚGoldenRatio)ŚEŚFloatŚIŚooŚpiŚRationalŚzoo)ŚEqŚLtŚGtŚGeŚLe)ŚS)ŚSymbolŚsymbols)Śsympify)ŚbinomialŚ	factorial)ŚAbsŚsign)ŚexpŚ	exp_polarŚlog)ŚcoshŚcschŚsinh)Śsqrt)Ś	Piecewise)ŚacosŚasinŚatanŚcosŚsinŚsincŚtan)Śerf)Śgamma)Śhyper)ŚKroneckerDelta)Śrad)ŚIntegralŚ	integrate)ŚAndŚOr)ŚMatrixŚeye)ŚMatrixSymbol)ŚfactorŚPoly)
Ś
besselsimpŚ	hypersimpŚinversecombineŚ
logcombineŚ	nsimplifyŚnthrootŚposifyŚseparatevarsŚsignsimpŚsimplify)Śsolve)Ś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 )NgėQø„@g    @ŗ@g333333'@é   gr²fa@gź-q=)ŚabsrI   r/   r6   Śevalf© r_   r_   śZ/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/simplify/tests/test_simplify.pyŚtest_issue_7263%   s
    ’’ra   c                  C   sH   t d} tt| |  t| ksJ ttt| tt| ks"J d S )NrN   )r   rI   r    r3   ©rN   r_   r_   r`   Śtest_factorial_simplify*   s   $rc   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sJ d
|  |d  d|d   d| d  |  | | d  }
t|
d| ks¦J |  | | | d |d   | | d | d   }
t|
d| ksÉJ | | |  |  }
t|
d| ksŪJ |	| ||	|   |	|  }
t|
d| ksóJ 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sÆJ |  ||t   ||  |t   |t |t   t|  |t   }	t|	|t|  |t  ksįJ |  |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sJ ttd|  td t| ksJ ttg g | t| ks¬J d S )Nzx,y,z,k,n,m,w,s,ArW   c                 s   s    | ]	}t ||kV  qd S ©N©rI   )Ś.0Śtmpr_   r_   r`   Ś	<genexpr>5   s    z%test_simplify_expr.<locals>.<genexpr>é   r\   é   é   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   rI   r   r.   r8   r   r   r;   ŚinvrQ   rR   r)   r/   r   r   r%   r4   r#   )rN   rO   rP   Śkr[   ŚmŚwŚsŚArW   rV   ŚexprŚBr_   r_   r`   Śtest_simplify_expr1   s.  .$(82 ,$&8D’
’B"H’’&’’’’ ’’’’’
’(’’
’’6’(’’ž’
’’żž(śś’ś’@’:
’’’.’’’’’
’’’’(’’
’
’(’’ž’
’’żž(ś’śłų2’’’’’’$’’’’’(’’’’L’’’ž0żž’ūśń4’’’ė’R’L’’F’’
’4’(’’ ’žž’ś0śźL’’.’ć
’(’
’’
’’ā.!
’**."&"r{   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 )Nri   Fre   )rN   rR   rO   rS   rP   rT   rU   rV   rW   rX   rY   rZ   rJ   rI   )Śf_1Śf_2Śf_3Ś	solutionsr_   r_   r`   Śtest_issue_3557   s   
.F’’r   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 )
Nr\   ri   ŚncFro   éż’’’rj   rn   rk   )rI   r/   rN   r.   r3   r    r   r   r   r   r#   r   rQ   r2   r)   )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   rn   ri   )r.   rN   Ś_eval_rewrite_as_expr1   rI   r/   r#   r;   )ŚcosAsExpŚ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)ri   )Śratio)r   r   rI   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 rd   )ŚlenŚstr©ry   r_   r_   r`   Ś<lambda>Ķ   s    z'test_simplify_measure.<locals>.<lambda>c                 S   s
   t |  S rd   )r   r   r_   r_   r`   r   Ī   s   
 ri   r\   )Śmeasure)rN   r/   r.   rI   r   )Śmeasure1Śmeasure2ry   Ś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 )Nr\   ē       @T©ŚrationalFz0.9 - 0.8 - 0.1r   )rN   rO   rI   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 )Nrn   r\   r   ri   )rI   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 )Nr[   Fro   )rI   r   r#   r   ©r[   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 )NrN   rO   r\   rl   rk   ri   rm   )r   rI   )rN   rO   rV   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sJ dtd dtd  dtd  } t t| d
 d
d| ks¼J dtd dtd  dtd  } t t| d d| ksŪJ t t| d d| ksčJ d S )NéZ   é"   é   rk   ri   r\   rq   é)   é   é   i×’’’rn   i(  é
   ix  i
  ih  é   é   i  )rE   r)   r	   )Śqry   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 )Nri   r\   rk   l      Fµx:^V r£   l       ©7§3Me')r)   r   ŚOner	   rE   )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sJ t| |d  | js©J td|  | | |  | d |d  ksæJ t|t t||   t|  |t| t|  t| t|  t ksēJ 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sJ td|  d | ddd	d
d| d|  d ||iksJ td|  d | d| gd	d
|| d|  d iks¹J td|  d | dg d	d
d| d|  d ||iksÕJ td|  d | ddd
d| d|  d ||iksšJ 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sJ | dt
dd||   }t||ks¦J tt| | }|t| t| kr½|jsæJ tdd tdd  d }t| | }	t|	}|	jsź|jrź|t| t| ksģJ tt| | | }|t| t| t| ksJ tt| | | t| | | ksJ d S )Nzx,y,z,nr\   ri   rŖ   T©Śpositive©Śforcer_   )Śdictr   Ścoeff)r°   rk   zn,mFro   rW   )r   rG   r   r/   r#   Śis_Powr.   r   r)   r
   r4   r]   Śis_Mul)
rN   rO   rP   r[   rŖ   ru   rW   Śeqrw   rR   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sJ d S )Nzx,y,zri   śx,yTr¬   )r   rG   r%   r#   ©rN   rO   rP   r_   r_   r`   Ś!test_separatevars_advanced_factorO  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s J dd| d td| d   }t|||tj |d d| d  d| d   ksĢJ t| |d|  t| }t||||  |d d  ksźJ d S )Nzn,kT©Śintegerri   r\   rj   r£   rk   é   r¦   rn   )r   rA   r    r   r   ŚHalf)r[   rt   Śtermr_   r_   r`   Śtest_hypersimp[  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sJ ttt
dddd	t  tgttttd	 t  ks«J td	td	t
d t  tdksæJ ttddtddksĢJ ttddtddksŁJ tdddtddksęJ tdddtddksóJ 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sJ ttd( dd"td( ksJ ttd* d+t ks¢J ttd,td	  td	 d-  dtd	 d.    t”rĄJ | d/ }|jrŃt| d/ dksÓJ td0d1dd2tddksāJ td0ddd2tddksńJ 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sJ tdEdd"dksJ tdF}t t|| f}|D ]}t|t }t||ksµJ t||  | | ksĀJ q¤tdGddHdItdGksŅJ tt d)”|  dHdJ d)”t d)”|  ksźJ d S )KNrN   r   rn   ri   g@é   r¤   r£   r\   rj   rk   F©Śevaluatez1/2 - sqrt(3)*I/2zsqrt(sqrt(5)/8 + 5/8)Ś1z1/4z49/17 + 8*I/17g{®Gįz?)Ś	toleranceé   r    gü©ńŅMbP?ic  éq   g¾¤1ZGUÕ?g-Cėā6?grł¢(ō?i{  ių  T)rĆ   Śfullē      ą?r   g«ŖŖŖŖŖ
@z109861228866811/100000000000000g² A²kŃ?r¦   ē      @g      Y@éd   gHÆ¼ņ×z>i g      Ąg      Ąg      ųæē        g©kķ}ŖŖ
@g¹?)rĆ   r   gR×ŚūTU@é   é!   g
×£p=Ŗ@@é   gįz®GįB@é(   g33333ciĄių’’gÉ?gÉægāé²qĢ?iW  i  gāé²qĢæi©ū’’g:0āyU>išśg9(£żL67ŚinfgŚĮQUUÕ?Śexact)r   Śrational_conversion)rŃ   )r   rD   r   r   r)   r#   r   r   r   r/   r-   r   r¼   r%   r[   r   r>   rP   Śatomsr²   r   r"   r^   )rN   rV   rĻ   ŚinfsŚzir   r_   r_   r`   Śtest_nsimplifyr  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   rD   r   r¼   )rg   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 )NrN   rO   rR   rS   r   éū’’’)r   rI   r   r   )rN   rO   rR   rS   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sJ d S )NrN   rO   rW   rX   r   r\   ri   )r   r
   rI   r   )rN   rO   rW   rX   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sJ tt| t| t| t| ks¦J tt|t|  t|t|  ksŗJ ttd
t| |t|  tt|| |d  tt|d ||  fv säJ 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s°J tt	t| |  t
t| |   dd	t
t| |  t	t| |   ksŪJ 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sJ | d|di}tt| t|  |”| |”ks„J d S )Nr¶   rR   zz,wTr¬   rS   ©Śrealr\   r®   rm   rj   rk   ri   rq   r   )r   r   rC   r%   r.   r   r)   r   r   r3   r+   r]   Śsubs)rN   rO   rR   rP   rv   rS   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 )Nr\   rk   Tr®   )r7   r/   rN   r.   rC   r%   )rZ   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¬   rk   r\   FrĄ   rj   )r   rC   r%   r   ©rN   rO   r_   r_   r`   Śtest_issue_5950  s   *$’rį   c                     sŅ  t d} tt| tddd tddd dksJ td|  \}}t| ”  |”t|  ks2J tt| d|  gd	ks@J t ddd}t ddd}| ||g}t|\} t|d
ks_J  fdd|D |kslJ tttd|  t d tddf ” dksJ tt	td| |  d |ddf ” dksJ 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sēJ d S )&NrN   rŖ   Tr¬   r[   ©Śnegativez(_x + n + p, {_x: x})ri   z([_x, _x + 1], {_x: x})z
[_x, n, p]c                    s   g | ]}|   ”qS r_   )rÜ   )rf   rv   ©rŻ   r_   r`   Ś
<listcomp>  s    ztest_posify.<locals>.<listcomp>r   rk   z3Integral(1/_x, (y, 1, 3)) + Integral(_y, (y, 1, 3))zSum(_x**(-n), (n, 1, 3))rt   )Śfiniter­   ŚzeroFŚ	imaginaryŚnonpositiverp   Ś	hermitianrŪ   ŚnonzeroŚnonnegativerć   Ścomplexrę   ŚinfiniteŚextended_realŚextended_negativeŚextended_nonnegativeŚextended_nonpositive)Śextended_nonzeroŚextended_positive)r   r   rF   r   r%   r   rÜ   r7   rO   r   Śassumptions0)rN   r“   ŚreprŖ   r[   ŚorigŚmodifiedrt   r_   rä   r`   Śtest_posify  st   
’
ž’ż 
&’&’’’’’’žžžžżżżüüūrł   c                  C   s@   t d} tdt d| t  dt d| t   dksJ d S )NrW   rj   rq   r\   rk   )r
   rI   rN   rO   ©rW   r_   r_   r`   Śtest_issue_41940  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   r\   r   )rI   rN   r_   r_   r_   r`   Śtest_simplify_float_vs_integer6  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sJ ddt   d  ” ddt  d d fks®J ddt   dt   ” dttddt  d dt  fksĶJ d	d
t   dt ddt     ” dd
t  dt td   d	 fksńJ 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sJ t	dddt    ” t	ddt	ddt  fks«J ddt d   ” ddtd  fksĄJ ddt d   ” ddt
tjdt dd fksŪJ d	t	dd  ” dd	t	dd fksšJ 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 )Nr\   F)Śclearrk   é   ri   rq   rj   r£   r¤   rĖ   éy   rn   rĄ   r    rĒ   r»   rČ   é   T)Śradical)rN   rO   Śas_content_primitiver   r¼   r©   r   ŚInfinityr   r   r   r   rP   r)   ©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 )Nri   r   FrĄ   rn   )rN   rH   r   r   Śtruer!   rO   r   )rV   r_   r_   r`   Śtest_signsimpj  s
   *r  c                  C   sī  ddl m} m}m} ddlm} ttt t	 t
 d | t
tttt	 d   |t
tks1J ttt t	 t d | tdtt ttt	 d   |tdtt ksZJ 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s°J t| tddttdtt tt	tt  ksĢJ t| tttt t	 d  tt t	 t d |tt ksīJ |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s§J 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s[J t|td t|td t dt |tt t  dks{J t|td t|td t |tt dt t |tt t ks J 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sõJ d S )Nr   )ŚbesseliŚbesseljŚbessely)Ścosine_transformr\   ri   rj   rn   rm   r£   é   éQ   r×   rk   é	   r    )Śsympy.functions.special.besselr  r	  r
  Śsympy.integrals.transformsr  r@   r#   r   r   rO   rP   r$   rR   r)   rN   r   r.   r&   rQ   r/   rS   )r  r	  r
  r  r_   r_   r`   Śtest_besselsimpr  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 )Nr\   T)rN   rO   r/   r.   r   rI   r*   )Śe1Śe2Śe3Śs1Śs2Śs3r_   r_   r`   Śtest_Piecewise  s   ’r  c                  C   s6   G dd dt } | tdt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 rd   )r   r©   )rN   Śkwargsr_   r_   r`   Ś_eval_simplify£  s   z+test_polymorphism.<locals>.A._eval_simplifyN)Ś__name__Ś
__module__Ś__qualname__r  r_   r_   r_   r`   rx   ¢  s    rx   r£   r\   ri   )r   r   rI   )rx   rR   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   rI   r   r)   )Śn1Śn2Śn3Ś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 )Nr\   ri   rj   )rN   rO   rI   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 )NrW   c                    s   g | ]}t  |jd  qS )r   )rI   Śargs)rf   Śeirś   r_   r`   rå   ½  s    z#test_issue_6920.<locals>.<listcomp>)r.   rN   r   r/   r&   r(   r#   r
   )rV   Ś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   ŚRrj   rk   ių’’’Tr\   rn   ©r   T)Ś	sympy.abcr   r*  rI   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 )Nr\   FrĄ   )r.   rN   r/   r   r   r  rI   )ŚlhsŚrhsrV   r_   r_   r`   Ś test_inequality_no_auto_simplifyČ  s
   r0  c                  C   sl  ddl m}  ddlm} |ddksJ |dt dksJ tddks&J tdt dks0J t| d | d| d   ” dksDJ |ddksLJ |dt dksVJ tddks^J tdt dkshJ |d	dkspJ |d	t dkszJ td	dksJ td	t dksJ td
}||dksJ ||t dks¢J t|dksŖJ t|t dks“J d S )Nr   )ŚNumber)Ścancelg+”=g      š?r¤   iņ’’’g#B”Ē;g0ä.’++z1e-1000)Śsympy.core.numbersr1  Śsympy.polys.polytoolsr2  r   rI   r   )r1  r2  rW   r_   r_   r`   Śtest_issue_9398Ń  s(   (r5  c                  C   s4   t ddd} | d | d  d }t||ksJ d S )NŚMr¤   )r   r   )r£   rj   i  )r=   rI   )r6  rV   r_   r_   r`   Śtest_issue_9324_simplifyš  s   r7  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Śvrk   ri   rx   c                 S   s   g | ]}|d  qS ©ri   r_   )rf   rZ   r_   r_   r`   rå   ż  ó    z,test_issue_9817_simplify.<locals>.<listcomp>r»   )
Śsympy.matrices.expressionsr8  r9  r=   r;   ŚrangeŚTrI   Śas_explicitŚxreplace)r8  r9  r:  rx   rN   ŚXŚ	quadraticr_   r_   r`   Śtest_issue_9817_simplifyö  s   *rD  c                  C   s4   t d} t| ttd | ttd ksJ d S )NrN   ri   )r   rI   r'   r0   rb   r_   r_   r`   Śtest_issue_13474  s   ,rE  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sJ tdttd	|   ddd
|  ksJ ttt	| tt	| ks§J ttt	| dd| ksµJ tt	t| dd| ksĆJ ttt	| ddd| td ksÖJ ttt	| ddddd| td ksėJ d S )Nzx, yrX   c                       s   e Zd Zd fdd	ZdS )z)test_simplify_function_inverse.<locals>.fri   c                    s    S rd   r_   )ŚselfŚargindex©rX   r_   r`   Śinverse  s   z1test_simplify_function_inverse.<locals>.f.inverseNr;  )r  r  r  rI  r_   rH  r_   r`   rW     s    rW   T)rI  r\   ri   rk   rq   FrĄ   )
r   r
   rI   rB   r/   r.   r   r,   r%   r#   )rN   rO   rW   r_   rH  r`   Śtest_simplify_function_inverse  s     0( ( &.rJ  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sJ | tdtdtd fksJ | tjttjtfksJ | tj	 ttj	t fks«J | dtj	d  tt
d	t d fksæJ d S )
Nr   ©Śclear_coefficientsrj   rq   rk   r\   ri   é   r   )Śsympy.simplify.simplifyrL  rO   rN   r   r)   r   r¼   r  ŚPir   rK  r_   r_   r`   Śtest_clear_coefficients#  s   0:D &,rP  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)ŚMatPowr8  )ŚPow)Średuceza b c dFro   rN   rx   rz   ŚCŚDc                 S   s   | | S rd   r_   rą   r_   r_   r`   r   <  ó    z"test_nc_simplify.<locals>.<lambda>c                 S   s   | | S rd   r_   rą   r_   r_   r`   r   <  rW  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   ri   c                    s   g | ]} |qS r_   r_   )rf   rR   )Ś
_to_matrixr_   r`   rå   D  r<  z8test_nc_simplify.<locals>._to_matrix.<locals>.<listcomp>)Ś
isinstancer%  r   r   Śfuncr   )r8  rR  rS  rX  ŚfuncsrT  ŚsubstrN   r_   r`   rX  >  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)Ś
inv_expand)r   Śdoit)ry   Ś
simplifiedr^  ŚmatrixŚm_simp)rX  rQ  r_   r`   Ś_checkH  s   žz test_nc_simplify.<locals>._checkrk   r\   rm   ri   rn   )rb  rj   r   r¤   rq   r]  )TT)rN  rQ  r=  rR  r8  Ś
sympy.corerS  Ś	functoolsrT  r   r   r=   r   r   r>  )rR   rS   rT   rU   rx   rz   rU  rV  rd  ry   Ś_r_   )	r8  rR  rS  rX  r[  rQ  rT  r\  rN   r`   Śtest_nc_simplify/  sD   
B">>BFJN>&*`:.*8&rh  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 )Nri   r\   F)r`  )r   rP   rN   rO   rR   r7   rI   )rx   Śanewrz   Śbdor_   r_   r`   Śtest_issue_15965e  s   "rk  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 )Nr\   rk   )rI   r.   rN   r   r_   r_   r_   r`   Śtest_issue_17137p  s    4rl  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sJ tt|| d t| d}| ” tt|dt| dks£J tt|d dt|| d t| d}| ” tt|dt| dksĒJ tt|d dt|d| d  t| d}| ” tt|dt| dksķJ tt|d dt|| d t| d}| ” tjks
J d S )
NrN   TrŚ   rO   r\   rj   rk   ri   r   )r   r9   r   r   rI   r/   r   Śfalse)rN   rO   ry   r_   r_   r`   Śtest_issue_21869u  s(   "&"*"&rn  c                  C   sh   t ttddf} | dksJ t| tju sJ ttjtju s!J ttd} | tjur0| dks2J d S )Nri   r   rŹ   )r7   rN   rI   r   ŚZeror   )rP   r_   r_   r`   Śtest_issue_7971_21740  s   rp  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 )Nr\   ri   r%   rn   rj   )rI   r+   r   Śrewriter   r%   r)   r_   r_   r_   r`   Śtest_issue_17141_slow  s   *’’’’rr  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sJ d S )Nri   r\   rj   é   )rI   rN   r+   r   r   r%   r)   )rŖ   r_   r_   r`   Śtest_issue_17141¤  s   <>’@rt  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sJ 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sÅJ ttdtd td tdggksŻJ tt	j
td td t	ju sńJ d S )Nzi jr   ri   r\   r+  r[   Tr¹   rj   c                    s   | |kr ||  S dS )Nr   r_   )rZ   Śj©ŚKr[   r_   r`   r   æ  s    z.test_simplify_kroneckerdelta.<locals>.<lambda>)r   r5   rI   rq  r*   r   r   r;   r<   r   r  ŚNaN)rZ   ru  r6  r_   rv  r`   Śtest_simplify_kroneckerdelta®  s4   &:  "ż’
’’’ry  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 )Nr\   ri   r£   )rI   r]   rN   r!   r_   r_   r_   r`   Śtest_issue_17292Ė  s   (8rz  c                  C   s4   t ttd dttd} t| ttdksJ d S )Nr\   ri   rk   )r9   r   r[   rI   r   r_   r_   r`   Śtest_issue_19822Ń  s   r{  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 )Nrk   )r9   r   rN   r   rI   r   r   r_   r_   r`   Śtest_issue_18645Ö  s   r|  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 )NrZ   Tr¹   r[   r\   ri   )r   r9   r   r   rI   r   rm  )rZ   r[   ry   r_   r_   r`   Śtest_issue_18642Ż  s   "r}  c                  C   s8   t ddd} t| d| dkB }t|t| dksJ d S )Nr[   Tr¹   r   ri   )r   r   rI   r   )r[   ry   r_   r_   r`   Śtest_issue_18389å  s   r~  c                  C   s0   t ddd} tt| dk | dktjksJ d S )NrN   TrŚ   ri   )r   rI   r:   r   r  rb   r_   r_   r`   Śtest_issue_8373ģ  s   $r  c                  C   s,   t ttdttd} t| tjksJ d S )Nri   r\   )r9   r   rN   rI   r   rm  r   r_   r_   r`   Śtest_issue_7950ń  s   r  c                  C   s$   t t d t } t| | ksJ d S ©Nr\   )r   r   r   rI   r   r_   r_   r`   Śtest_issue_22020ö  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sJ d S )Nrk   r\   ri   rW   )rI   r"   rN   r!   r
   )rV   rW   r_   r_   r`   Śtest_issue_19484ü  s   <@Lr  c                  C   sB   t ddd\} }}| ||d    ” | d| |  d ksJ d S )Nzx y zFro   r\   )r   rI   r·   r_   r_   r`   Śtest_issue_23543
  s   0r  c                     sĘ   dd   fddfdd} t d\}}tdd	}t| t|| t|d
  jdd}t| t|” d	”}||| t| || t|d
   |t|  |t|d
   tdd	 ksaJ d S )Nc                 S   s   t dt |  | t |   S r  )r)   r   r   r   r_   r_   r`   rW     s   ztest_issue_11004.<locals>.fc                    s    |  | | |  S rd   r_   ©r[   rt   rś   r_   r`   ru     s   ztest_issue_11004.<locals>.mc                    s    | |||   S rd   r_   r  )ru   r_   r`   rŖ     s   ztest_issue_11004.<locals>.pzN kz0.5rj   ri   Tr®   gśńņĻgķ?)r   r   r%   r[   r   rI   rÜ   )rŖ   ŚNrt   ŚhalfrP   r   r_   )rW   ru   r`   Śtest_issue_11004  s$   
$’
žżü’r  c                  C   s(   t d ” } | td   ” dksJ d S )Nzx**2r\   r   )r?   rI   rN   )Ś
polynomialr_   r_   r`   Śtest_issue_19161(  s   r  c                  C   s6   t ddd} dtttt| f }| ” |ksJ d S )NrU   Tr¹   r\   )r   r   r/   rN   rI   )rU   ry   r_   r_   r`   Śtest_issue_22210-  s   r  c                  C   sĢ   t ddd\} }t ddd}td| ||  d| ||  ks"J t| | ||  | | ||  ks6J t ddd\} }t| | | | | ||  ksPJ t| | ||  t| | | ksdJ d S )Nzx yTro   ŚZFr\   r¬   )r   rI   r   )rN   rO   r  r_   r_   r`   Śtest_reduce_inverses_nc_pow3  s   (($,r  c                  C   sP   t ddd} dttd  |   ” | ksJ dttd  |   ” | ks&J d S )NrB  Fro   r\   rk   r   )r   r.   r   rI   )rB  r_   r_   r`   Śtest_nc_recursion_coeff<  s    $r  N)½Śsympy.concrete.summationsr   Śsympy.core.addr   Śsympy.core.basicr   Śsympy.core.exprr   Śsympy.core.functionr   r   r   r	   r
   r   Śsympy.core.mulr   r   re  r   r3  r   r   r   r   r   r   r   Śsympy.core.relationalr   r   r   r   r   Śsympy.core.singletonr   Śsympy.core.symbolr   r   Śsympy.core.sympifyr   Ś(sympy.functions.combinatorial.factorialsr   r    Ś$sympy.functions.elementary.complexesr!   r"   Ś&sympy.functions.elementary.exponentialr#   r$   r%   Ś%sympy.functions.elementary.hyperbolicr&   r'   r(   Ś(sympy.functions.elementary.miscellaneousr)   Ś$sympy.functions.elementary.piecewiser*   Ś(sympy.functions.elementary.trigonometricr+   r,   r-   r.   r/   r0   r1   Ś'sympy.functions.special.error_functionsr2   Ś'sympy.functions.special.gamma_functionsr3   Śsympy.functions.special.hyperr4   Ś(sympy.functions.special.tensor_functionsr5   Śsympy.geometry.polygonr6   Śsympy.integrals.integralsr7   r8   Śsympy.logic.boolalgr9   r:   Śsympy.matrices.denser;   r<   Ś"sympy.matrices.expressions.matexprr=   r4  r>   r?   rN  r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   Śsympy.solvers.solversrJ   Śsympy.testing.pytestrK   rL   rM   r,  rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   ra   rc   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  r5  r7  rD  rE  rJ  rP  rh  rk  rl  rn  rp  rr  rt  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r_   r_   r_   r`   Ś<module>   sŌ     $$0@a

	
AD*#
,$			
6	



	