o
    *ήcX                     @   s`  d dl mZ d dlmZ d dlmZ d dlmZmZ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 d dl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  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* dd Z+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd  Z2d!d" Z3d#d$ Z4e*d%d& Z5d'd( Z6d)d* Z7d+d, Z8d-d. Z9d/d0 Z:d1d2 Z;d3d4 Z<d5d6 Z=d7d8 Z>d9d: Z?d;d< Z@d=d> ZAd?d@ ZBdAdB ZCdCdD ZDdEdF ZEdGdH ZFdIdJ ZGdKdL ZHdMdN ZIdOdP ZJdQdR ZKe*dSdT ZLdUdV ZMdWdX ZNdYdZ ZOd[d\ ZPd]d^ ZQd_d` ZRdadb ZSdcdd ZTdedf ZUdgdh ZVdidj ZWdkS )l    )abc)Sum)Add)
DerivativeFunctiondiff)Mul)FloatIIntegerRationaloopi)S)SymbolWildsymbols)explog)sqrt)cossin)meijerg)Poly)collect)signsimp)XFAILc                  C   s   t d} ttd\}}}}}| }|| i ksJ || i ks"J |||| iks-J td}|||diks<J ||i ksEJ ||d d u sPJ d S )Nxabcpq      )r   mapr   matchmatchesr   )r   abcpqe r*   B/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_match.pytest_symbol   s   r,   c            	      C   s  t td\} }}}}t td\}}}|| }||| ||iks#J ||| ||iks0J d| }||| |diksAJ || | }||| | ||iksVJ ||| | ||ikseJ || | |  }||| |  | ||iks~J ||| | |  ||iksJ ||d u sJ ||| ||| |  iksJ ||| | |||  iksJ ||| | |||  iksJ d|  d }|d|  | |diksJ |d|  | || d iksJ |||  d |diksJ d S )Nxyabcpqrr       r      )r!   r   r   r"   	r   yr$   r%   r&   r'   r(   rr)   r*   r*   r+   test_add#   s*   """"""$r4   c            	      C   s  t td\} }}}}t td\}}}| | | }||| || | ||iks)J ||| d u s4J | | | |  }||| || | iksKJ ||| || | || | iks^J d|  d }||||  |d|| |dikswJ td}|| | |diksJ d S )Nr-   r.      r/   r    r   )r!   r   r   r"   r   r1   r*   r*   r+   
test_power@   s   "&&r6   c                  C   s  t d} t d}td}td}td}td}|d| |diks%J dd	|  d
  }|d||  |  |d	|d
iks@J dd	|  d
  }||||  |  |d|d	|d
iks]J d| d  }||||  |  |d|d|diksxJ d| d  }||||  |  |d|d|diksJ d	|  d
 }|||  | |d	|d
iksJ d	|  d
|  d }|||  ||  | |d	|d
|diksJ td| gd}d|  }|||  |diksJ |||  |diksJ d| d  }|||  |d|  iksJ |||  d u sJ d|  d d|   }||| d  ||   d|  |d|  iks6J ||| d  ||   d|  d u sLJ d S )Nr   r2   r'   r(   r3      r5   r0   r/   r   r    r$   exclude)r   r   r   r"   )r   r2   r'   r(   r3   r)   r$   r*   r*   r+   test_match_excludeS   s:   &***". 40r:   c                  C   sz  t td\} }}}}t td\}}d|  }|||  |diks"J ||| d u s-J ||||  |diks<J ||  | | }|||  ||| | iksUJ ||| |  ||| iksfJ || ||  }||| ||  ||iksJ | }|||  |diksJ t| }|| | t| |  |d|diksJ tt| |  }|t| || iksJ d S )Nr-   pqr/   r   r    )r!   r   r   r"   r   r
   r   )r   r2   r$   r%   r&   r'   r(   r)   r*   r*   r+   test_mul~   s"   """*r<   c            	      C   s  t d\} }t ddd\}}}t dtd\}}t dtdd\}}|| | || |d	i|| |d	ifv s5J || | | |||| i|||| ifv sLJ || |d u sWJ || || d u sdJ || | | d u sqJ || | | | d u sJ || | | | d u sJ || | | | | d u sJ || | d u sJ || | | d u sJ || ||||d	iksJ || || ||| |d	iksJ || | | |||| iksJ || | | | |||| | iksJ || | | | ||| || iksJ || | | | | ||| || | iks1J || |  d u s>J || |  | d u sMJ || | |||d
iks^J || | | ||| |d
ikssJ || |  | ||||  iksJ || |  | | ||||  | iksJ || |  | | ||| ||  iksJ || |  | | | ||| ||  | iksJ || | d u sJ || | | d u sJ || |d u sJ || || ||||iksJ || || ||||iksJ || || | ||||| i||| ||ifv s;J || | | d u sIJ || | | | d u sYJ || | | | d u siJ || | | | | d u s{J || |d u sJ || | || d u sJ || | | d u sJ || | | | d u sJ || | |d u sJ || | || |d	||||iksJ || | || |d	||||iksJ || | | | d u sJ || | | | | d u sJ || | | | | || ||||iks)J || | | | | || ||||iksAJ || | | | | | || | ||||iks]J || | | | | | || | ||||iksyJ || | | || iksJ || | | | d u sJ || | | d u sJ || | | | | || iksJ || | | | | d u sJ || | | | d u sJ || | | | | d u sJ || | | | | || ||iksJ || | | | | | || |d	i|| |d	ifv s#J || | | | | | d u s7J || | | || | | d u sMJ d S )Nx yA B CFcommutativezu vclszw zrB   r@   r    r   r   r#   )	r   r2   ABCuvwzr*   r*   r+   test_mul_noncommutative   s|   *."&",,4"*(008$$<  $  ,, $0088  ($ $,<(0rM   c                  C   s   t ddd\} }}t dtdd}|| | | | |  || iks#J || | | | | |  | || | iks<J || | | | | |  | d u sQJ || | | | | d u sbJ || | | | | d u ssJ d S )Nr>   Fr?   rK   rC   rE   rF   rG   rH   rK   r*   r*   r+    test_mul_noncommutative_mismatch   s   &2*"&rO   c                  C   s  t ddd\} }}t dtdd}| | | | |d  ||iks#J | |d  | |d  | |d  ||d iks>J | | | | | |d	  | ||d iksWJ | | |d
  | | |d
  ||iksnJ | || d
  | | || d
  | ||iksJ |d | | | d | | || iksJ |d | |d  | d | | d  || iksJ |d | |d	  | d | | d  d u sJ d S )Nr>   Fr?   rK   rC   r5   r0      r/   rD   rE   rN   r*   r*   r+   test_mul_noncommutative_pow   s   &62.6.66rQ   c                  C   s  t td\} }}t td\}}dt |t |diksJ | t |t || iks-J dt |t |diks<J | t |t || iksKJ | t || |t|| iks\J dt || |d|tiksmJ | |t  ||t  || ||iksJ d S )Nr   xyr    r5   )r!   r   r   r
   r"   )r$   r%   r&   r   r2   r*   r*   r+   test_complex   s   "".rS   c                  C   s   ddl m}  td}| d}td}td}td| }|}||t||  |d|diks1J ||| |d|td| iksDJ ||d u sMJ d S 	Nr   )WildFunctionr   gr'   r(   r   r    sympy.core.functionrU   r   r   r   r"   )rU   r   rV   r'   r(   fnotfr*   r*   r+   test_functions	  s   &&r[   c                  C   sf   ddl m}  td}| d}td}td}td| }|||||  |d|t|diks1J d S rT   rW   )rU   r   rV   r'   r(   rY   r*   r*   r+   test_functions_X1  s   .r\   c                  C   sB  t td\} }t td\}}| d |d || iksJ | d |d || iks,J | d |d || iks;J | t| |t| || ||iksPJ | | || || ||i|||| ifv sgJ | | || || ||i|||| ifv s~J | | d || |d|d| |  i|d| |  |difv sJ d S )NrR   r;   r    r0   )r!   r   r   r"   r   )r   r2   r'   r(   r*   r*   r+   test_interface#  s   *..Fr]   c                  C   s   t td\} }t td\}}tddd}t|| | }||||iks&J |d |d ||iks5J ||i ks>J d| || d usKJ d| d || | |d|diks`J d S )NrR   r;   rY   r    )nargsr0   rD   )r!   r   r   r   r   r"   )r   r2   r'   r(   rY   fdr*   r*   r+   test_derivative11  s   .r`   c                  C   s   t d} td}td| |gd}td| gd}|t| ||| | }t| |||d  }||d i}||||}|d u sCJ d S )NrY   r   r$   r8   r%   r5   )r   r   r   r   xreplacer#   )rY   r   r$   r%   patternexprd1d2r*   r*   r+   test_derivative_bug1?  s   rf   c                  C   s  t d} td}td| |gd}td| gd}t| ||}|t| ||i ks,J |t| |||d u s;J t| |||}|t| ||d u sQJ |t| |||i ks`J t| |||d  }||t| || | |d||d iksJ ||t| ||| | d u sJ t| ||||d  }||t| || | d u sJ ||t| ||| | |d||d iksJ d S )NrY   r   r$   r8   r%   r5   r    )r   r   r   r   r"   )rY   r   r$   r%   r)   r*   r*   r+   test_derivative2K  s    0&$6rg   c                  C   s   t d} t d}td}td}t|||| tt| |||d  t| ||d d  t| ||t||| d  }|| |||  }|t||  }|||| }|||  |t	ddikspJ d S )Nnlr   r'   r5   r/   rD   )
r   r   r   r   subsdoitr   r"   expandr   )rh   ri   r   r'   r)   tt2r*   r*   r+   test_match_deriv_bug1^  s   ((ro   c                  C   sV   t td\} }t td\}}}| | || | }|| | || | ks)J d S )NrR   r.   )r!   r   r   r"   rj   )r   r2   r'   r(   r3   resr*   r*   r+   test_match_bug2m  s   "rq   c                  C   sJ   t td\} }}td}||  t||   | t||   d u s#J d S )Nxabr'   )r!   r   r   r   r"   )r   r$   r%   r'   r*   r*   r+   test_match_bug3t  s   2rs   c                  C   s4   t d} td}| }|| |  |diksJ d S )Nr   r'   rD   r   r   r"   r   r'   r)   r*   r*   r+   test_match_bug4z  s    rv   c                  C   s6   t d} td}|  }|| |  |diksJ d S )Nr   r'   r    rt   ru   r*   r*   r+   test_match_bug5  s    rw   c                  C   s>   t d} td}| }|d| |  |tdd iksJ d S )Nr   r'   r0   r    )r   r   r"   r   ru   r*   r*   r+   test_match_bug6  s   *rx   c               	   C   s"  t d} td| gd}td| gd}td| gd}td| gd}d| d  d| d	   d	|   d
 }|| d  || d	   ||   | }|||d|d|d	|d
iksUJ |d| d	   ||d|d|d	|d
ikslJ | td	 d |||   || d	   |d
|td	d |diksJ d S )Nr   r$   r8   r%   r&   dr/   r0   r5   r    r   )r   r   r"   r   )r   r$   r%   r&   ry   eqrb   r*   r*   r+   test_match_polynomial  s   $$".(r{   c                  C   sr  t td\} }}tdd| gd}td}tdt|gd}t| |d u s'J t||d u s2J d| d  ||   | }||| d  ||   | |d||||iksWJ | d }|| | d u sfJ ||d d u sqJ || d | |d	iksJ t| d
t|  }||d u sJ |t|| d u sJ |||t|  |t| |d
||iksJ d S )Nxyar'   r    r8   r(   r3   r0   r5   r   r   )r!   r   r   r   r"   r   )r   r2   r$   r'   r(   r3   r)   r*   r*   r+   test_exclude  s    22r}   c                  C   sP   t td\} }tdddd }|| t|d  }|| d|tdiks&J d S )Nabg|Pk?F)evaluater5   r    )r!   r   r   r"   r	   )r$   r%   r)   r3   r*   r*   r+   test_floats  s   r   c                  C   sp   t d} tj}td| |gd}td| |gd}| ||}||t| || | |d|diks6J d S )NrY   r$   r8   r%   r    r   )r   r   r   r   r   r"   r   )rY   r   r$   r%   rz   r*   r*   r+   test_Derivative_bug1  s   0r   c                  C   s  t d} t d}t d}| || || |di|d|| ifv s!J | || || |di|d|| ifv s6J t d} t d| gd}t d}| || |d|| iksTJ | || |d|| ikscJ t d} t d| gd}t d| gd}| || d u sJ | || d u sJ d S )Nr'   r(   r3   r   r    r8   )r   r"   )r'   r(   r3   r*   r*   r+   test_match_wild_wild  s   **r   c                  C   s  t d\} }t| t | | t |ksJ t| | d|   | d|  | ks*J t| t | |t | ks:J ttt | |t tu sJJ ttt | tt |ksZJ ttt | tt |ksjJ tt| t | ksxJ tt | t| ksJ tdt| |  t| | d dksJ ttttju sJ ttt tt tju sJ t| t | t tju sJ t|  t |  t tju sJ t| t | t  t sJ d S )Nr=   r    rD   )	r   r   _combine_inverser
   r   r   r   r   Zero)r   r2   r*   r*   r+   test__combine_inverse  s    (    ,""r   c                  C   s  t d} t d\}}}t dtd\}}}}tddd}|td|  |d	  }	|t|| |  ||  t||  }
|	|
|||d
|d|d	|diksNJ |	 |
|| |d
|d|d	|dikscJ | |	 |
|| | |d
|d|d	|dikszJ d|  |	 |
|d|  | |d
|d|d	|diksJ |t|| |  ||  }
|	|
|||d
|d|d	iksJ |	 |
|| |d
|d|d	iksJ | |	 |
|| | |d
|d|d	iksJ d|  |	 |
|d|  | |d
|d|d	iksJ d S )Nr   zz phi rzc A B NrA   ri   r   r8   r5      r    r   i)r   r   r   r   r"   )r   rL   phir3   r&   rF   rG   Nri   rz   matcherr*   r*   r+   test_issue_3773  s   (&*.6"&*6r   c            
   	   C   s  ddl m} m}m} |  || d  t|  tdt  d }tdt| fd\}}}||t|  ||   | |t	dd|| | d  d |tdt d iksTJ |
 | |t|  ||   | |t	dd||| d  d 
 |tdt d 
 iksJ td| gd}td	| gd}td
| gd}	|
 |t|  ||   |	 |	tdd ttd  |t	dd||d  d ||  |d d  iksJ d S )Nr   )gammamur   r5   a b crB   r9   rD   g1r8   g2g3)	sympy.abcr   r   r   r   r   r   r   r"   r   rl   r   )
r   r   r   rY   r$   r%   r&   r   r   r   r*   r*   r+   test_issue_3883  s   *0&6 Fr   c                  C   s   t d} tdt| fd\}}}tdtd\}}t|| || |  | }||| | || |  || || | |   | |diksJJ |||| |  || |  |||  || | |   | |d|d|dikswJ d S )Nr   r   r   zf grA   r   r    )r   r   r   r   r   r"   )r   r$   r%   r&   rY   rV   rz   r*   r*   r+   test_issue_4418  s(   6r   c            	      C   s   t d} td}tdt| |fd\}}|| | | }t|}| |t| }| || t| }|t| }|||d|t|iksGJ |||d|t|iksVJ |||d||t| iksgJ |||d||t| iksxJ d S )NrY   r   a br   r   r    )r   r   r   r   r   r"   )	rY   r   r$   r%   r'   eq1eq2eq3eq4r*   r*   r+   test_issue_4700"  s   "&r   c                  C   s  t dtd\} }}td}td}|| | |iksJ || |||  | ||diks/J || | | d||iks>J || | |||  | d|||diksUJ | | | | iksbJ | | |||  | | |dikswJ | | | | d||iksJ | | | |||  | d|||diksJ d| | | d| iksJ d| | |||  | d| |diksJ d| | | | d||iksJ d| | | |||  | d|||diksJ d	| | | d	| iksJ d	| | |||  | d	| |diksJ d	| | | | d	||iks(J d	| | | |||  | d	|||diksBJ d S )
Nr   rA   r   rY   r   r    rD   r5   )r   r   r   r   r"   )r$   r%   r&   r   rY   r*   r*   r+   test_issue_51683  s&   &.* 0."20$8r   c                  C   s  t d} t d}td| gd}td}d|  || |d|| iks$J d|  || |d|| iks5J | d || |d|| iksFJ d|  || |tjd || iksZJ d|  || |tdd|| iksnJ | d || |tjd |d|  iksJ d|  || |d|d|  iksJ d|  || |d|d|  iksJ t dd	d
}| | |d || |d  iksJ | | |d |t| | iksJ td}tj}||||iksJ |d| d u sJ ||d d u sJ td}|d| |d| iksJ |d|d  |dt| iks&J t}|d| |d| iks8J |d|d  |dt| iksLJ | t|d u sYJ | |d |t	tt ikslJ d S )Nr   r)   rK   r8   r2   r0   r    r3   T)rationalr5   r$   g333333?)
r   r   r"   r   Oner   r   r   r   r
   )r   r)   rK   r2   r3   r$   r*   r*   r+   test_issue_4559M  s8   """((,&&&& ( (*r   c                  C   sr   t d} td}dd |d d| fD }dd ||  | | fD }|D ]}|D ]}||| diks5J q(q$d S )Nr$   r   c                 S      g | ]}|d  qS r5   r*   .0ir*   r*   r+   
<listcomp>      z#test_issue_4883.<locals>.<listcomp>r5   c                 S   r   r   r*   r   r*   r*   r+   r     r   r   r   r"   )r$   r   r)   r'   rz   patr*   r*   r+   test_issue_4883  s   r   c                     s  t d\} }|  tjd |  tj|tjd  h  fdd}|td| gd|  td  |td| gd|  td  |td| gd|  td  |td| gd|  td  |td	| gd|  td  |td
| gd|  td  |td| gd|  td  d S )Nr=   rP   c                    s   t |   ksJ d S )N)setr"   values)r   ansr'   r*   r+   ok  s   ztest_issue_4319.<locals>.okcoeffr8   restrK   r)   ressresu)r   r   r   r   r   )r   r2   r   r*   r   r+   test_issue_4319  s   "r   c                  C   s   t dtd\} }}td}t|d t| t| | |||d| |iks(J dt| t| t| | |||d| |iksCJ d S )Nzp c qrA   r   r5   r    r   )r   r   r   r   r"   )r'   r&   r(   r   r*   r*   r+   test_issue_3778  s   6:r   c                  C   s>   t d} td}t |  t t| t ||  iksJ d S )Nr   r$   )r   r   r
   r   r"   )r   r$   r*   r*   r+   test_issue_6103  s   .r   c                  C   sn   t d} td}|d | | d u sJ d| | | d u s"J d|d  | | | d| iks5J d S )Nr$   r   r5   r7   r   )r$   r   r*   r*   r+   test_issue_3539  s
   *r   c                  C   s   t d} tdd| }td}td}||tjfdtjfdf| tjdtdtjfdf| hks1J ||| tdtjfdf| | tjhksHJ ||d tdtjfdf| | hks]J d S )Nr   )r*   r*   )r   r*   r$   r%   r*   r5   )r   r   r   findr   r   )r   rY   r$   r%   r*   r*   r+   test_gh_issue_2711  s    
.r   c                  C   sd   ddl m} m} |ddd\}}|d| d\}}d|kj||kB d| |k||kB d u s0J d S )	Nr   )r   r   r=   T)realr   rA   r    )sympy.core.symbolr   r   reversedr"   )r   r   r   r2   r$   r%   r*   r*   r+   test_issue_17354  s   4r   c                  C   sX  t d} td}td| || ||| ||dgd}td| || ||| ||dgd}td| || ||| ||dgd}|| ||d || ||  || |  }|d d | ||d |d | ||  |d d d | |  }t|| ||d| ||| |g|}|||d d ||d d d ||d iksJ || | |t| ||df  d| |  t| || dt| ||df  dt| || |  dt| ||df |  }t|| ||d| ||| |g|}|||d d|  |d	d|  ||d iks*J d S )
NrY   r   a3r5   r8   b3c3r/   r    )r   r   r   r   r   r"   r   )rY   r   r   r   r   deqrz   r3   r*   r*   r+   test_match_issue_17397  s$   ,,,2J00:06r   c                  C   s   t ddd\} }}t ddd}td}|dd|   }| |d|   |d|  d|    dd|   }|| |d|   |d|  d|    i}|||ksPJ | | |ks[J |t|d u sfJ d S )Nza, r, wT)nonnegativer'   )positiverV   r    )r   r   r#   r   )r$   r3   rK   r'   g_rb   rz   mr*   r*   r+   test_match_issue_21942  s   0(r   c                  C   s   t td\} }td\}}}d| | d|  | | |||iks#J ||d |  || |  | |d iks:J |t|| dt||    |t| | dt||    | |iksaJ d S )NXYzx y zr   r    )r!   r   r   r"   r   r   )XYr   r2   rL   r*   r*   r+   test_match_terms  s
   *.Rr   c                  C   s   t td\} }td\}}t||ddft||d|f|diks$J t||ddft| | d|f|d| |iks=J t||ddft| | ddf| |iksTJ d S )NVWr=   r    r5   )r!   r   r   r   r"   )VWr   r2   r*   r*   r+   test_match_bound  s
   .22r   c                  C   sb   t dtd} }t dtd\}}| || |  }d|| d  }|||d|diks/J d S )Nr   rY   zn QrA   r   r5   )r   r   r   r#   )r   rY   rh   Qrb   rz   r*   r*   r+   test_issue_22462  s
   r   N)Xsympyr   sympy.concrete.summationsr   sympy.core.addr   rX   r   r   r   sympy.core.mulr   sympy.core.numbersr	   r
   r   r   r   r   sympy.core.singletonr   r   r   r   r   &sympy.functions.elementary.exponentialr   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   sympy.functions.special.hyperr   sympy.polys.polytoolsr   sympy.simplify.radsimpr   sympy.simplify.simplifyr   sympy.testing.pytestr   r,   r4   r6   r:   r<   rM   rO   rQ   rS   r[   r\   r]   r`   rf   rg   ro   rq   rs   rv   rw   rx   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+   <module>   s~     +J
	5

