a
     ¬<b~  ć                   @   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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 s0J d S )NgėQø„@g    @ŗ@g333333'@é   gr²fa@gź-q=)ŚabsrI   r/   r6   Śevalf© r_   r_   śr/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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sDJ d S )NrN   )r   rI   r    r3   ©rN   r_   r_   r`   Śtest_factorial_simplify*   s    rc   c               
   C   sf  t d\	} }}}}}}}}td}	tdd ttt| |  t t t fD sPJ d|  d|  }
|
| | | |  ksxJ t|
| | | |  ksJ |d |d  dt | |d   }
t|
|
ksČJ dd|   ddd|     dd|    }
t|
d	ksJ d
|  |d  d|d   d| d  |  | | d  }
t|
d| ksPJ |  | | | 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svJ 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shJ |  ||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sJJ tdttdtdksjJ t ddd\}}t|| ||  || ||  ks¤J t|d||    | | | |  ksĪJ t|d|  d|   ||  ||  ksüJ ttdtd tdksJ ttd|  td t| ksDJ ttg g | t| ksbJ 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   ó    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sōJ d S )Nrj   Fre   )rN   rR   rO   rS   rP   rT   rU   rV   rW   rX   rY   rZ   rJ   rI   )Zf_1Zf_2Zf_3Z	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sDJ 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säJ 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s6J t ddt  d dt ksXJ d S )
Nr\   rj   ŚncFrp   éż’’’rk   ro   rl   )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s4J tttddgddggtt dtd gtdt dggkszJ d S )Nr   ro   rj   )r.   rN   Z_eval_rewrite_as_expr1   rI   r/   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s4J 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)rj   )Z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sPJ |t||d||kslJ ttt d tt d  d}| t|| d| |ks¦J |t||d||ksĀJ d S )Nc                 S   s   t t| S rd   )ŚlenŚstr©rz   r_   r_   r`   Ś<lambda>Ķ   ri   z'test_simplify_measure.<locals>.<lambda>c                 S   s
   t |  S rd   )r   r   r_   r_   r`   r   Ī   ri   rj   r\   )Zmeasure)rN   r/   r.   rI   r   )Zmeasure1Zmeasure2rz   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sHJ t| dd| ks\J tddddkspJ 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 )Nro   r\   r   rj   )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sTJ d S )Nr[   Frp   )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s`J d S )NrN   rO   r\   rm   rl   rj   rn   )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shJ t dd	td  d
dtd ksJ t dd	td  d
dtd ks“J 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   é"   é   rl   rj   r\   rr   é)   é   é   i×’’’ro   i(  é
   ix  i
  ih  é   é   i  )rE   r)   r	   )Śqrz   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sxJ d S )Nrj   r\   rl   l      Fµx:^V r   l       ©7§3Me')r)   r   ŚOner	   rE   )r   Śpr_   r_   r`   Śtest_nthroot1  s    r   c            
      C   sD  t d\} }}}td| |  | d|  | |  d|  | ||  ksLJ t| | | | |  | | d|  ksxJ tt|  | t|  | |  t|  | d|  ks°J t| |d  t|  | t|  t|  | t||d   t|  ksüJ t| t| |  | t|   | dt|  t|  ks:J t| |d  | jsVJ 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sNJ tt||d | |d    |t|d|    ksJ tt||d | |d    dd|t| td|   ksŹJ tt| | jsāJ tt| | ddt| t| ksJ td|  d | ddd	d
d| d|  d ||iksDJ td|  d | d| gd	d
|| d|  d ikszJ 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 s2J td|  | ddd	d u sRJ td|  | ddd u spJ td|  | dd d	d
d|  | iksJ t ddd\}}t|||  d| | ksĪJ t| | |  | d|  ksšJ t	d}t|| | ||   || | ||   ks*J | dt
dd||   }t||ksTJ 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\   rj   r   T©Śpositive©Śforcer_   )Śdictr   Zcoeff)r¤   rl   zn,mFrp   rW   )r   rG   r   r/   r#   Śis_Powr.   r   r)   r
   r4   r]   Zis_Mul)
rN   rO   rP   r[   r   rv   rW   Śeqrx   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sRJ td|  t| | t|  t|t|  | t| t|  | t|  t| | d t|d  t|d   ksŠJ t ddd\} }tdt| t|  t| |  t| d t|d  ks"J d S )Nzx,y,zrj   ś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 sDJ tdt| |d|d  ksfJ td| t|d  |d|d d  ksJ tt| ||| | |d  ksøJ tt| d ||| | d |d  ksäJ d| d t| td| d  }t||tjd| d dd	|  d
|d     ksBJ 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©Śintegerrj   r\   rk   r   rl   é   r   ro   )r   rA   r    r   r   ŚHalf)r[   ru   Ztermr_   r_   r`   Śtest_hypersimp[  s    ".$,$: :r®   c                  C   sę  t d} tddksJ tddks(J tddks8J td|  d|  ksPJ tdtddksfJ tdt dtd d	 ksJ tdtd d
 tgtd	 ksŖJ td	t tgd	t d	 ksŹJ tttt tdd ddtdksōJ 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sZJ 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s6J td#|  dd"tdd|  ksZJ ttd ” dd"td$ks|J ttd%ttd	gttd	 d& ksØJ ttd% d”ttd	gt d
 td	 tdd
 ksęJ t| d' | d ks J ttd( td) ksJ ttd( dd"td( ks8J ttd* d+t ksRJ 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sHJ td6ddd2td7ksdJ td8ddd2td9ksJ t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td?d@ksģJ 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sxJ t||  | | ksVJ qVtdGddHdItdGks²J tt d)”|  dHdJ d)”t d)”|  ksāJ d S )KNrN   r   ro   rj   g@é   r   r   r\   rk   rl   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        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   Zatomsr„   r   r"   r^   )rN   rV   r¾   ZinfsZzir   r_   r_   r`   Śtest_nsimplifyr  s     $ ’’
’
*’
 $’
,’
*’’
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sXJ t| | | | kspJ t| |  |  | ksJ t|  d t|  ks¦J ttddtu s¼J t| |  | |  ||  ||  ksčJ d S )NrN   rO   rR   rS   r   éū’’’)r   rI   r   r   )rN   rO   rR   rS   r_   r_   r`   Śtest_extract_minus_sign»  s    rÄ   c                  C   s  t d} t d}td}td}t||  | ”||  | ” ||  | ”||  | ”  dksdJ td||  ||  | ” t|| d |  dksJ ttd||  | ||  | ”|| d   dksŌJ t||  | |”||  || ” dksJ d S )NrN   rO   rW   rX   r   r\   rj   )r   r
   rI   r   )rN   rO   rW   rX   r_   r_   r`   Ś	test_diffÉ  s    D88rÅ   c                  C   sV  t d\} }td}t ddd\}}tddd}tt| dt|  t| dt|  ks`J tt| dt|  dd	t| |d  ksJ 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sPJ tt|t|  t|t|  kszJ 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shJ 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sRJ t| |d  td td | |d  td ksJ t| | t| |  | td  | | t|d  ksĢJ tt| td td|  ksņJ tt| tt| }t||ksJ | d|di}tt| t|  |”| |”ksRJ d S )NrØ   rR   zz,wTr    rS   ©Śrealr\   r¢   rn   rk   rl   rj   rr   r   )r   r   rC   r%   r.   r   r)   r   r   r3   r+   r]   Śsubs)rN   rO   rR   rP   rw   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s6J t| dtt  dd| ttd  ksbJ d S )Nr\   rl   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sJ d S )	NrØ   Tr    rl   r\   Fr°   rk   )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s4J td|  \}}t| ”  |”t|  ksdJ 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sŲJ 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
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})rj   z([_x, _x + 1], {_x: x})z
[_x, n, p]c                    s   g | ]}|   ”qS r_   )rČ   )rf   rw   ©rÉ   r_   r`   Ś
<listcomp>  ri   ztest_posify.<locals>.<listcomp>r   rl   z3Integral(1/_x, (y, 1, 3)) + Integral(_y, (y, 1, 3))zSum(_x**(-n), (n, 1, 3))ru   )ŚfiniteF)r”   ZzeroZ	imaginaryŚnonpositiverq   Z	hermitianrĒ   ZnonzeroZnonnegativerĻ   ŚcomplexrŅ   ZinfiniteZextended_realZextended_negativeZextended_nonnegativeZextended_nonpositiveZextended_nonzeroZextended_positive)r   r   rF   r   r%   r   rČ   r7   rO   r   Zassumptions0)rN   r¦   Śrepr   r[   ŚorigŚmodifiedru   r_   rŠ   r`   Śtest_posify  sD    
’
ž’ż 
&’
&’


ūrŲ   c                  C   s@   t d} tdt d| t  dt d| t   dks<J d S )NrW   rk   rr   r\   rl   )r
   rI   rN   rO   ©rW   r_   r_   r`   Śtest_issue_41940  s    rŚ   c                   C   s<   t td td  dksJ t td td  dks8J 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sPJ 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s°J t ddt    dt  d d   ” dt t d d  fksģJ ddt   dt ddt     ” dt dt td   d fks2J 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srJ td  ” dtd fksJ tj ” dtfksØJ t dt  } |  ” d| fksŹJ tjdt    ” t	dddt   fksöJ 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sfJ dt	dd dt	dd td  jddddt	dd tdtd  fksŗJ d S )Nr\   F)Śclearrl   é   rj   rr   rk   r   r   rŗ   éy   ro   r°   r   r·   r¬   rø   é   T)Śradical)rN   rO   Z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 s2J tt d tdt  ksNJ ttt  tt  ksfJ ttt  ddtdt t ddksJ d S )Nrj   r   Fr°   ro   )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sbJ ttt t	 t d | tdtt ttt	 d   |tdtt ks“J 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sbJ 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s2J 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sTJ 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sFJ 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\   rj   rk   ro   rn   r   é   éQ   rĆ   rl   é	   r   )Zsympy.functions.special.besselrę   rē   rč   Z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sJ d S )Nr\   T)rN   rO   r/   r.   r   rI   r*   )Śe1Śe2Ze3Śs1Śs2Zs3r_   r_   r`   Śtest_Piecewise  s    ’rņ   c                  C   s6   G dd dt } | tdtd}t|dks2J 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`   ry   ¢  s   ry   r   r\   rj   )r   r   rI   )ry   rR   r_   r_   r`   Śtest_polymorphism”  s    rų   c                  C   s8   t ddd\} }}}ttt|  t|   ks4J d S )Nzn1 n2 n3 n4TrĪ   )r   rI   r   r)   )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stJ d S )Nr\   rj   rk   )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sJ d S )NrW   c                    s   g | ]}t  |jd  qS )r   )rI   Śargs)rf   ŚeirŁ   r_   r`   rŃ   ½  ri   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s“J d S )
Nr   ©r   ŚRrk   rl   ių’’’Tr\   ro   ©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s8J t|sDJ d S )Nr\   Fr°   )r.   rN   r/   r   r   rä   rI   )ŚlhsŚrhsrV   r_   r_   r`   Ś test_inequality_no_auto_simplifyČ  s
    r  c                  C   sx  ddl m}  ddlm} |ddks(J |dt dks<J tddksLJ tdt dks`J t| d | d| d   ” dksJ |ddksJ |dt dks¬J tddks¼J tdt dksŠJ |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ks6J ||t dksLJ t|dks^J t|t dkstJ d S )Nr   )ŚNumber)Ścancelg+”=g      š?r   iņ’’’g#B”Ē;g0ä.’++z1e-1000)Śsympy.core.numbersr  Śsympy.polys.polytoolsr  r   rI   r   )r  r  rW   r_   r_   r`   Śtest_issue_9398Ń  s(    (r  c                  C   s4   t ddd} | d | d  d }t||ks0J d S )NŚMr   )r   r   )r   rk   i  )r=   rI   )r  rV   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szJ d S )
Nr   )ŚIdentityŚtraceŚvrl   rj   ry   c                 S   s   g | ]}|d  qS )rj   r_   )rf   rZ   r_   r_   r`   rŃ   ż  ri   z,test_issue_9817_simplify.<locals>.<listcomp>r¬   )
Śsympy.matrices.expressionsr  r  r=   r;   ŚrangeŚTrI   Zas_explicitZxreplace)r  r  r  ry   rN   ŚXZ	quadraticr_   r_   r`   Śtest_issue_9817_simplifyö  s    r  c                  C   s4   t d} t| ttd | ttd ks0J d S )NrN   rj   )r   rI   r'   r0   rb   r_   r_   r`   Śtest_issue_13474  s    r  c                     sč  t d\} }td G  fdddt}t| | | | ksHJ t| | | ks`J t| | dd| ks|J t| t| d t| d  dddks¬J t| | |dd| | |ksŌJ ttt| sęJ ttt| tt| ksJ tdttd	|   ddd
|  ks2J ttt	| tt	| ksTJ ttt	| dd| ksrJ 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>.frj   c                    s    S rd   r_   )ŚselfZargindex©rX   r_   r`   Śinverse  s    z1test_simplify_function_inverse.<locals>.f.inverseN)rj   )rõ   rö   r÷   r  r_   r  r_   r`   rW     s   rW   T)r  r\   rj   rl   rr   Fr°   )
r   r
   rI   rB   r/   r.   r   r,   r%   r#   )rN   rO   rW   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svJ | 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sŚJ | 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_coefficientsrk   rr   rl   r\   rj   é   r   )Śsympy.simplify.simplifyr  rO   rN   r   r)   r   r­   rį   Ś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sāJ d S )"Nr   )Śnc_simplify)ŚMatPowr  )ŚPow)Średuceza b c dFrp   rN   ry   r{   ŚCŚDc                 S   s   | | S rd   r_   rĢ   r_   r_   r`   r   <  ri   z"test_nc_simplify.<locals>.<lambda>c                 S   s   | | S rd   r_   rĢ   r_   r_   r`   r   <  ri   c                    sr   | v r|  S t | r4| jd | jd S t | ttfrb| j fdd| jD S |   S d S )Nr   rj   c                    s   g | ]} |qS r_   r_   )rf   rR   )Ś
_to_matrixr_   r`   rŃ   D  ri   z8test_nc_simplify.<locals>._to_matrix.<locals>.<listcomp>)Ś
isinstancerū   r   r   Śfuncr   )r  r"  r#  r'  Śfuncsr$  ŚsubstrN   r_   r`   r'  >  s    
 z$test_nc_simplify.<locals>._to_matrixTc                    sX   | |d|ksJ t | t |ks(J |rT |jdd} | |d|ksTJ d S )N©ŚdeepF)Z
inv_expand)r   Śdoit)rz   Z
simplifiedr-  ŚmatrixZm_simp)r'  r!  r_   r`   Ś_checkH  s
    z test_nc_simplify.<locals>._checkrl   r\   rn   rj   ro   )r/  rk   r   r   rr   r,  )TT)r  r!  r  r"  r  Ś
sympy.corer#  Ś	functoolsr$  r   r   r=   r   r   r  )rR   rS   rT   rU   ry   r{   r%  r&  r0  rz   Ś_r_   )	r  r"  r#  r'  r*  r!  r$  r+  rN   r`   Śtest_nc_simplify/  sD    
B">>BFJN>&*`:.*8r4  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sfJ t| |ksvJ t||ksJ t|ddtttt ks¤J d S )Nrj   r\   F)r.  )r   rP   rN   rO   rR   r7   rI   )ry   Zanewr{   Zbdor_   r_   r`   Śtest_issue_15965e  s    r5  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sPJ d S )Nr\   rl   )rI   r.   rN   r   r_   r_   r_   r`   Śtest_issue_17137p  s     r6  c                  C   s   t ddd} t ddd}tt| d dt| |}| ” |ksBJ tt| d dt| d}| ” t| dksrJ tt| d | d t| d}| ” t| dks¦J ttt| | d t| d	}| ” t| d	ksŚJ tt| d | d t| d}| ” tjksJ tt|| d t| d}| ” tt|dt| dksJJ 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\   rk   rl   rj   r   )r   r9   r   r   rI   r/   r   Śfalse)rN   rO   rz   r_   r_   r`   Śtest_issue_21869u  s(    $&$*$&r8  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 sBJ ttd} | tjur`| dksdJ d S )Nrj   r   )r7   rN   rI   r   ZZeror   )rP   r_   r_   r`   Śtest_issue_7971_21740  s    r9  c                
   C   sZ   t dttd d   d”dtdt tdtddt   t   d d  ksVJ d S )Nr\   rj   r%   ro   rk   )rI   r+   r   Śrewriter   r%   r)   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sJ t dttd  dtdt tdtd   d d  ksŽJ dttd d  } t | | ksJ d S )Nrj   r\   rk   é   )rI   rN   r+   r   r   r%   r)   )r   r_   r_   r`   Śtest_issue_17141¤  s    <>’@r=  c                     sī  t d\} }t t | | | |ks,J t d| d|ksHJ t | d | dksdJ t d| t” d| dksJ t d| tdt|dfd  d|  d| ksÄJ t d| d| dksäJ 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   rj   r\   r  r[   TrŖ   rk   c                    s   | |kr ||  S dS )Nr   r_   )rZ   Śj©ŚKr[   r_   r`   r   æ  ri   z.test_simplify_kroneckerdelta.<locals>.<lambda>)r   r5   rI   r:  r*   r   r   r;   r<   r   rį   ŚNaN)rZ   r>  r  r_   r?  r`   Śtest_simplify_kroneckerdelta®  s4    &: ""ż’
’
’’rB  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\   rj   r   )rI   r]   rN   r!   r_   r_   r_   r`   Śtest_issue_17292Ė  s    (rC  c                  C   s4   t ttd dttd} t| ttdks0J d S )Nr\   rj   rl   )r9   r   r[   rI   r   r_   r_   r`   Śtest_issue_19822Ń  s    rD  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sXJ d S )Nrl   )r9   r   rN   r   rI   r   r   r_   r_   r`   Śtest_issue_18645Ö  s    rE  c                  C   sP   t ddd} t ddd}tt| d| t| d| d }t|tjksLJ d S )NrZ   TrŖ   r[   r\   rj   )r   r9   r   r   rI   r   r7  )rZ   r[   rz   r_   r_   r`   Śtest_issue_18642Ż  s    "rF  c                  C   s8   t ddd} t| d| dkB }t|t| dks4J d S )Nr[   TrŖ   r   rj   )r   r   rI   r   )r[   rz   r_   r_   r`   Śtest_issue_18389å  s    rG  c                  C   s0   t ddd} tt| dk | dktjks,J d S )NrN   TrĘ   rj   )r   rI   r:   r   rä   rb   r_   r_   r`   Śtest_issue_8373ģ  s    rH  c                  C   s,   t ttdttd} t| tjks(J d S )Nrj   r\   )r9   r   rN   rI   r   r7  r   r_   r_   r`   Śtest_issue_7950ń  s    rI  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    rJ  c                  C   s2  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slJ td ttd d  } t ttd d |  td td ttd d   d ksÄJ 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 )Nrl   r\   rj   rW   )rI   r"   rN   r!   r
   )rV   rW   r_   r_   r`   Śtest_issue_19484ü  s    <@rK  c                  C   s(   t d ” } | td   ” dks$J d S )Nzx**2r\   r   )r?   rI   rN   )Z
polynomialr_   r_   r`   Śtest_issue_19161
  s    rL  c                  C   s6   t ddd} dtttt| f }| ” |ks2J d S )NrU   TrŖ   r\   )r   r   r/   rN   rI   )rU   rz   r_   r_   r`   Śtest_issue_22210  s    rM  N)¹Zsympy.concrete.summationsr   Zsympy.core.addr   Zsympy.core.basicr   Zsympy.core.exprr   Zsympy.core.functionr   r   r   r	   r
   r   Zsympy.core.mulr   r   r1  r   r	  r   r   r   r   r   r   r   Zsympy.core.relationalr   r   r   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Z(sympy.functions.combinatorial.factorialsr   r    Z$sympy.functions.elementary.complexesr!   r"   Z&sympy.functions.elementary.exponentialr#   r$   r%   Z%sympy.functions.elementary.hyperbolicr&   r'   r(   Z(sympy.functions.elementary.miscellaneousr)   Z$sympy.functions.elementary.piecewiser*   Z(sympy.functions.elementary.trigonometricr+   r,   r-   r.   r/   r0   r1   Z'sympy.functions.special.error_functionsr2   Z'sympy.functions.special.gamma_functionsr3   Zsympy.functions.special.hyperr4   Z(sympy.functions.special.tensor_functionsr5   Zsympy.geometry.polygonr6   Zsympy.integrals.integralsr7   r8   Zsympy.logic.boolalgr9   r:   Zsympy.matrices.denser;   r<   Z"sympy.matrices.expressions.matexprr=   r
  r>   r?   r  r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   Zsympy.solvers.solversrJ   Z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  r  r  r  r  r  r  r   r4  r5  r6  r8  r9  r;  r=  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  r_   r_   r_   r`   Ś<module>   sŹ    $$0@a

	
AD*#
,$			
6	



