o
    à8Va4a  ã                   @   sØ  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZm Z m!Z!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. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4 edd	d
Z5eZ6dd„ Z7dd„ Z8dd„ Z9e1dd„ ƒZ:dd„ Z;dd„ Z<dd„ Z=dd„ Z>dd„ Z?dd„ Z@dd „ ZAd!d"„ ZBd#d$„ ZCd%d&„ ZDd'd(„ ZEd)d*„ ZFe2d+d,„ ƒZGd-d.„ ZHd/d0„ ZId1d2„ ZJd3d4„ ZKd5d6„ ZLd7d8„ ZMd9d:„ ZNe1d;d<„ ƒZOd=S )>é    )ÚSymbolÚSÚexpÚlogÚsqrtÚooÚEÚzooÚpiÚtanÚsinÚcosÚcotÚsecÚcscÚAbsÚsymbolsÚIÚreÚsimplifyÚexpintÚRationalÚ	Piecewise)
Úfunction_rangeÚcontinuous_domainÚnot_empty_inÚperiodicityÚlcimÚAccumBoundsÚ	is_convexÚstationary_pointsÚminimumÚmaximum)ÚAddÚMulÚPow)Ú	unchanged)ÚIntervalÚ	FiniteSetÚEmptySetÚ
ComplementÚUnion)ÚraisesÚ_both_exp_powÚXFAIL©ÚxÚaT©Úrealc                     s
  t dƒ\‰ } }}ttˆ ƒˆ tt d td ƒƒtddƒksJ ‚ttˆ ƒˆ tdtƒƒtddƒks1J ‚ttˆ ƒˆ tdtƒƒtt tƒksDJ ‚ttˆ ƒˆ ttd tƒƒtt dƒksYJ ‚tˆ d ˆ d  ˆ tddƒƒttt tdd	ƒƒttd
dƒtƒƒks|J ‚tdˆ d  ˆ tddƒƒtdtƒksJ ‚tt	ˆ ƒˆ tddƒƒtt	dƒt	dƒƒks¦J ‚tt
ˆ ƒˆ  ˆ tjƒtt dƒks¹J ‚ttdˆ  d ƒˆ tddƒƒtdtdƒƒksÑJ ‚tˆ ˆ d  ˆ d ˆ   ˆ tjƒtdƒksèJ ‚tˆ ˆ d  ˆ d ˆ   |  ˆ tjƒt| ƒksJ ‚ttˆ ƒˆ ttddƒtdƒƒƒtttdƒ dƒttdƒƒƒks$J ‚ttˆ ƒˆ tt dƒƒtddƒks8J ‚ttˆ ƒˆ tjƒtjksGJ ‚tˆ tˆ d d ƒ ˆ tjƒt dd¡ks_J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nzx y a bé   éÿÿÿÿé   r   é   éûÿÿÿé   é   é   éýÿÿÿé   éüÿÿÿc                      s*   t tˆ ƒtˆ ƒtˆ ƒ  d ˆ  ˆ tjƒS ©Nr4   )r   r   r   r   r   ÚReals© r/   rA   ú@/usr/lib/python3/dist-packages/sympy/calculus/tests/test_util.pyÚ<lambda>/   s    $ÿz%test_function_range.<locals>.<lambda>c                      s   t tˆ ƒˆ  ˆ tjƒS ©N)r   r   r   r@   rA   r/   rA   rB   rC   1   ó    ÿc                      ó   t tˆ ƒˆ tjƒS rD   )r   r   r   ZIntegersrA   r/   rA   rB   rC   3   s    ÿc                      s   t tˆ ƒd ˆ tjƒS r?   )r   r   r   ZNaturalsrA   r/   rA   rB   rC   5   rE   )r   r   r   r'   r
   r   r   r+   r   r   r   r   r@   r   r(   r   r)   Úopenr,   ÚNotImplementedError)Úyr1   ÚbrA   r/   rB   Útest_function_range   s\   ÿÿ
ÿ
ÿ"ÿÿÿ
ÿÿ ÿ$
ÿ
ÿ
ÿ0rK   c               	   C   s>  t dƒ} tt| ƒ| tddt ƒƒtddt ƒksJ ‚tt| ƒ| tddt ƒƒttdtd ddƒttd ttddƒ ddƒtttddƒ dt ddƒƒksNJ ‚t| d | d d  | tj	ƒttt
 dddƒtdt
ddƒƒksoJ ‚tt| ƒtd|  d ƒ | tj	ƒttddƒt
ddƒksŒJ ‚tdt| d ƒ | tj	ƒtdt
ddƒks¢J ‚td|  d | tj	ƒtt t
 d¡t dt
¡ƒks½J ‚td| d d  d | tj	ƒtt t
 d	¡t d	d¡t dt
¡ƒksáJ ‚ttt| ƒd d ƒ| tj	ƒ}| dt d ¡rûJ ‚| d
¡sJ ‚t dddd}t| d|  | tj	ƒtdt
ƒksJ ‚d S )Nr0   r   r4   FTr7   r6   r=   éþÿÿÿr9   Úd)ZevenZzero)r   r   r   r'   r
   r   r+   r   r   r@   r   r   r   rG   Úcontains)r0   ÚdomainrM   rA   rA   rB   Útest_continuous_domain9   s2   ,,ÿÿÿ ÿ,ÿ$ÿ*rP   c                	   C   s:  t ttdt ƒ tddddƒ¡tƒttjdddƒksJ ‚t tttd ƒ tddƒ¡tƒtttdƒ dƒtddƒƒks<J ‚t ttd t tƒ tddƒ¡tƒtttdƒ d tj dƒtdt	ddƒtdƒd  ƒtddƒƒkspJ ‚t tttd  ƒ tj
¡tƒttj
tdƒƒks‰J ‚t tttd  ƒ tj
¡tƒttj
tdƒƒks¢J ‚t ttd d	t  d td  ƒ tj
¡tƒttj
tdƒƒksÃJ ‚t td	dttd  ƒ tdd	ƒ¡tƒtt tƒksÞJ ‚t tdttd  ƒ tdd	ƒ¡tƒttd	ƒd dƒksûJ ‚t tttd d  ƒ tj
¡tƒttj
tddƒƒksJ ‚t tttd ƒ ttdd	ddƒtdd
ƒƒ¡tƒtttd
ƒ dƒttd	ƒ dddƒtdd	ddƒtdd
ƒƒksPJ ‚t tdƒ td	dƒ¡tƒtjkscJ ‚t ttd td  ƒ tdtƒ¡tƒttddddƒtdtƒƒks†J ‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ d S )Nr4   r6   TFr5   r=   é   rL   r7   r9   c                   S   s   t tƒS rD   )r   r0   rA   rA   rA   rB   rC   j   s    z#test_not_empty_in.<locals>.<lambda>c                   S   s   t tddƒtƒS ©Nr   r6   )r   r'   r0   rA   rA   rA   rB   rC   k   ó    c                   S   s   t ttƒ tj¡ttƒS rD   )r   r(   r0   Ú	intersectr   r@   r1   rA   rA   rA   rB   rC   m   s    )r   r(   r0   rT   r'   r   ÚHalfr+   r   r   r@   r*   r1   r   r)   r,   Ú
ValueErrorrH   rA   rA   rA   rB   Útest_not_empty_inO   s^   "ÿÿ""ÿÿÿÿ,ÿ$
ÿ"ÿ 
ÿÿÿ"ÿ
þ&$
ÿÿrW   c                     s¢  t dƒ‰ t dƒ} t ddd}ttdˆ  ƒˆ ƒtksJ ‚tdtdˆ  ƒ ˆ ƒtd ks,J ‚ttˆ ƒd ˆ ƒdt ks;J ‚td	td	ˆ  ƒ ˆ ƒtd	 ksLJ ‚ttˆ ƒtˆ ƒ ˆ ƒdt ks]J ‚ttˆ ƒtˆ ƒ ˆ ƒdt ksnJ ‚ttˆ ƒtˆ ƒ ˆ ƒdt ksJ ‚ttdˆ  ƒtdˆ  ƒ |  ˆ ƒtd ks–J ‚ttˆ ƒtˆ ƒ ˆ ƒtks¥J ‚ttˆ ƒtdˆ  ƒ ˆ ƒdt ks¸J ‚ttˆ ƒd
 ˆ ƒdt ksÇJ ‚ttdˆ  ƒtˆ ƒtˆ ƒ  ˆ ƒtksÜJ ‚tttˆ ƒƒˆ ƒdt ksëJ ‚tt	tdˆ  ƒƒttdˆ  ƒƒ ˆ ƒtksJ ‚ttdˆ  ƒttˆ ƒt
dˆ  ƒ ƒ ˆ ƒtksJ ‚tttˆ ƒt
dˆ  ƒ ƒˆ ƒdt ks3J ‚tttdˆ  ƒƒˆ ƒtksCJ ‚tdtˆ ƒd  ˆ ƒtksSJ ‚ttˆ d ƒˆ ƒdksaJ ‚ttˆ ƒd ˆ ƒdt ksqJ ‚ttd	ˆ  d d ƒˆ ƒtdd	ƒks†J ‚ttdƒˆ d
  ˆ  d	 ˆ ƒd	tdƒd
  ks J ‚tˆ d d
 ˆ  ˆ ƒd u s°J ‚tttˆ ƒƒˆ ƒdt ksÀJ ‚ttˆ ƒd tˆ ƒd  ˆ ƒtju sÕJ ‚ttˆ ƒ| ƒtju sâJ ‚ttˆ ƒttˆ ƒ  ˆ ƒdt ksöJ ‚tˆ td|  ƒ | ƒtksJ ‚ttˆ ƒˆ ƒd u sJ ‚tttˆ  ƒˆ ƒdt ks"J ‚ttt| ƒ|ƒdt ks2J ‚tt|ƒ|ƒd u s>J ‚ttt	t|ƒttd| ƒ  ƒdd|ƒdt ksZJ ‚ttt	td| ƒtt|ƒ  ƒdd|ƒdt ksvJ ‚ttt|ƒƒ|ƒdt ks†J ‚ttdt | ƒ|ƒtks–J ‚tt|tt|ƒ  ƒ|ƒd u s¨J ‚ttt|d ƒt|ƒ ƒ|ƒdt ks¾J ‚tt	ˆ ƒˆ ƒd u sÊJ ‚ttˆ ƒtˆ ƒ ˆ ƒd u sÚJ ‚ttˆ ƒ|  | ƒd u sèJ ‚tttttˆ ƒƒƒƒˆ ƒtksúJ ‚t‡ fdd„tttt
ttfD ƒƒsJ ‚ttttˆ ƒƒƒˆ ƒtksJ ‚ttttˆ ƒtˆ ƒ ƒƒˆ ƒdt ks4J ‚ttˆ ƒtjkˆ ƒdt ksEJ ‚tˆ dkˆ ƒd u sQJ ‚tˆ d	 ˆ d  d
 ˆ ƒd u scJ ‚ttˆ ƒˆ ƒd u soJ ‚ttˆ d d
 ƒˆ ƒd u sJ ‚tˆ d d d ˆ ƒd u sJ ‚ttˆ  d	 ˆ ƒd u sJ ‚tttd
ˆ ƒƒtd
ˆ ƒ ˆ ƒd u s±J ‚tdˆ dk fˆ d ˆ d
kft	ˆ ƒdfƒ}t|ˆ ƒd u sÏJ ‚d S )Nr0   rI   ÚzTr2   r4   rL   r=   r7   r6   F©Zevaluatec                 3   s&    | ]}t t|ˆ ƒƒˆ ƒtkV  qd S rD   )r   r   r
   )Ú.0Úfr/   rA   rB   Ú	<genexpr>¢   s   €$ z#test_periodicity.<locals>.<genexpr>r   r5   )r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   ÚZeror   r   ÚallrU   r   r   r   )rI   rX   ÚprA   r/   rB   Útest_periodicityp   sx   """"".&*04,   *4  *(   88  $, $ÿ ,"$  ((r`   c                  C   s²   t dƒ} t dƒ}tt| ƒ| ddtksJ ‚tt| ƒt| ƒ | dddt ks(J ‚tt| ƒ| ƒdt ks5J ‚tt| | ƒ| ƒdt t|ƒ ksHJ ‚tttt| ƒƒƒ| ƒtksWJ ‚d S )Nr0   rI   T)Úcheckr4   )	r   r   r   r
   r   r   r   Úabsr   ©r0   rI   rA   rA   rB   Útest_periodicity_check¶   s   &&"rd   c                  C   sÊ   ddl m}  ttjtdƒtdƒgƒdksJ ‚t| d | d | gƒ| ks%J ‚td|  | d gƒd|  ks5J ‚ttjd|  gƒd u sBJ ‚ttdƒdt  td tddƒ tjt gƒtdƒdt  kscJ ‚d S )Nr   ©r
   r4   r7   é   r=   r6   )Úsympyr
   r   r   rU   ÚOner   r   re   rA   rA   rB   Ú	test_lcimÁ   s     Fri   c                   C   sŠ   t dt ttdtƒddksJ ‚t dt ttt dƒddks!J ‚t td ttdtƒddks1J ‚t ttƒtƒdks<J ‚ttdd„ ƒ d S )	Nr6   r   )rO   TFr4   c                   S   s   t ttƒttƒS rD   )r   r   r0   r1   rA   rA   rA   rB   rC   Ð   rS   z test_is_convex.<locals>.<lambda>)r   r0   r'   r   r   r,   rH   rA   rA   rA   rB   Útest_is_convexË   s
    " rj   c                  C   sv  t dƒ\} }tt| ƒ| tt d td ƒƒt d td hks!J ‚tt| ƒ| t dtd ¡ƒtƒ ks4J ‚tt| ƒ| ƒtƒ ks@J ‚tt| ƒt| ƒ | tdtƒƒtd tt	ddƒ hks\J ‚tt
| ƒ| tdtƒƒdthksmJ ‚t| d | d  | ƒtt	ddƒƒksJ ‚t| d | d  | tddƒƒtƒ ks•J ‚t| d d | d  | ƒdtd	ƒ dtd	ƒ hks°J ‚t| d d | d  | tddƒƒdtd	ƒ hksÊJ ‚t| d | d  d| d   | tjƒtd
dt	ddƒƒksèJ ‚tt| ƒ| ƒtƒ ksôJ ‚tt| ƒ|  | tjƒdhksJ ‚tt| ƒ| ttddƒtddƒƒƒdt thksJ ‚t|| tjƒtjks,J ‚t|| tjƒtjks9J ‚d S )Núx yr4   r   r=   r7   r5   r8   r9   r:   rL   r6   éúÿÿÿr<   )r   r    r   r'   r
   ZRopenr)   r   r   r   r   r(   r   r   r@   r   r   r+   rc   rA   rA   rB   Útest_stationary_pointsÓ   sX   ÿÿÿÿÿÿÿÿ ÿ$ÿÿ
ÿ 

ÿ
ÿrm   c                
      s„  t dƒ\‰ ‰ttˆ ƒˆ ƒtju sJ ‚ttˆ ƒˆ tddƒƒtdƒks#J ‚ttˆ ƒˆ ƒtu s.J ‚ttˆ ƒˆ tt d td ƒƒtju sCJ ‚ttˆ ƒt	ˆ ƒ ˆ tj
ƒtjksUJ ‚tttˆ ƒt	ˆ ƒ ˆ tttddƒ ttddƒ ƒƒƒtdƒd ksxJ ‚tˆ d ˆ d  ˆ ƒtu s‡J ‚tˆ d ˆ d  ˆ td	dƒƒtd
ƒksœJ ‚tˆ d ˆ d  ˆ td	dƒƒtddƒks²J ‚ttˆ d  ˆ d  ˆ d  d ˆ ƒƒdtdƒ d tddƒ ksÕJ ‚ttˆ ƒˆ tt dƒƒtdƒksçJ ‚ttˆ ƒˆ  ˆ tj
ƒtju s÷J ‚tt	ˆ ƒˆ ttddƒtddƒƒƒtju sJ ‚tt	ˆ ƒtˆ ƒ ˆ tj
ƒtdƒks"J ‚tˆˆ tj
ƒˆks.J ‚tttd t ƒttddƒƒdksBJ ‚ttdtd  dt  ƒttddƒƒdksZJ ‚ttdt dtd  d  ƒttddƒƒdkstJ ‚tˆ tˆ d d ƒ ˆ tj
ƒdksˆJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ ‡fdd„ƒ tt‡ fdd„ƒ tt‡ ‡fdd„ƒ tt‡ fdd„ƒ d S )Nrk   r   r6   r=   r7   r;   r9   r4   r8   é   r:   é
   é)   i   i+  rl   r<   é<   é   i  é   c                      rF   rD   ©r"   r   r   r)   rA   r/   rA   rB   rC     ó    ztest_maximum.<locals>.<lambda>c                      ó   t ttˆ ƒƒˆ tjƒS rD   )r"   r   r   r   r)   rA   r/   rA   rB   rC     ó    c                      ó"   t dˆ d ˆd  d  ˆ tjƒS ©Nr6   r4   )r"   r   r)   rA   rc   rA   rB   rC     ó   " c                      ó   t tˆ ƒtˆ ƒƒS rD   )r"   r   rA   r/   rA   rB   rC     ru   c                      ó   t tˆ ƒˆ ˆ tjƒS rD   rt   rA   rc   rA   rB   rC     rw   c                      ó   t tˆ ƒtjƒS rD   )r"   r   r   rh   rA   r/   rA   rB   rC     rS   )r   r"   r   r   rh   r'   r   r   r
   r   r@   rU   r   r   r   r   r   ÚNegativeOner+   rb   r1   r,   rV   rA   rA   rc   rB   Útest_maximumõ   s@   "*$4
ÿ*,&ÿ$  
ÿ((04(r   c                
      sÂ  t dƒ\‰ ‰ttˆ ƒˆ ƒtju sJ ‚ttˆ ƒˆ tddƒƒtdƒks#J ‚ttˆ ƒˆ ƒt u s/J ‚ttˆ ƒˆ tt d td ƒƒtju sDJ ‚ttˆ ƒt	ˆ ƒ ˆ tj
ƒtddƒksXJ ‚tttˆ ƒt	ˆ ƒ ˆ tttddƒ ttddƒ ƒƒƒtdƒ d ks|J ‚tˆ d ˆ d  ˆ ƒtd	dƒksŽJ ‚tˆ d ˆ d  ˆ td
dƒƒtddƒks¤J ‚tˆ d ˆ d  ˆ d  d ˆ ƒtdƒks»J ‚ttˆ ƒˆ tdtƒƒtdƒksÌJ ‚ttˆ ƒˆ  ˆ tj
ƒt u sÜJ ‚tt	ˆ ƒˆ ttddƒtddƒƒƒtju sòJ ‚tt	ˆ ƒtˆ ƒ ˆ tj
ƒtdƒ ksJ ‚tˆˆ tj
ƒˆksJ ‚tˆ tˆ d d ƒ ˆ tj
ƒdks'J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ ‡fdd„ƒ tt‡ fdd„ƒ tt‡ ‡fdd„ƒ tt‡ fdd„ƒ d S )Nrk   r6   r=   r5   r4   r7   r;   r9   içÿÿÿr8   r   r<   ro   rL   rl   c                      rF   rD   ©r!   r   r   r)   rA   r/   rA   rB   rC   +  ru   ztest_minimum.<locals>.<lambda>c                      rv   rD   )r!   r   r   r   r)   rA   r/   rA   rB   rC   ,  rw   c                      rx   ry   )r!   r   r)   rA   rc   rA   rB   rC   -  rz   c                      r{   rD   )r!   r   rA   r/   rA   rB   rC   .  ru   c                      r|   rD   r€   rA   rc   rA   rB   rC   /  rw   c                      r}   rD   )r!   r   r   rh   rA   r/   rA   rB   rC   0  rS   )r   r!   r   r   r~   r'   r   r   r
   r   r@   r   r   r   r   r   r+   r,   rV   rA   rA   rc   rB   Útest_minimum  s4   "*(4ÿ$,."  ÿ*(r   c                  C   sF   t dƒ} ttdƒ| d  dt| d d ƒ  | ƒtdƒd ks!J ‚d S )NÚtr7   r6   r4   )r   r"   r   )r‚   rA   rA   rB   Útest_issue_198693  s   (
ÿrƒ   c                      sÖ  t ddƒjdks
J ‚t ddƒjtju sJ ‚t ddƒjtddƒks"J ‚t ddƒjdks,J ‚t ddƒtju s6J ‚t ddƒd t ddƒksDJ ‚dt ddƒ t ddƒksRJ ‚t ddƒt ddƒ t ddƒkscJ ‚t ddƒ t ddƒkspJ ‚t ddƒd t d	dƒks~J ‚dt ddƒ t dd	ƒksŒJ ‚t ddƒt ddƒ t d	dƒksJ ‚tt ddƒ t	t ddƒtƒks®J ‚t
t ddƒ t dt
 dt
 ƒksÀJ ‚t ddƒt t	t ddƒt ƒksÒJ ‚t t dƒt t t tƒksâJ ‚t dtƒt tu síJ ‚t dtƒt t t tƒksüJ ‚t t dtƒ t u s
J ‚t t dƒt t u sJ ‚t dtƒt t t tƒks(J ‚t t dƒt  t t tƒks:J ‚tt dtƒ t t tƒksJJ ‚t t dtƒ t u sXJ ‚t ddƒd t tjdƒkshJ ‚dt ddƒ t tddƒdƒkszJ ‚dt ddƒ t t tƒksŠJ ‚tt ddƒƒt d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t ddƒƒt d	dƒksÆJ ‚td
ƒ‰ tt‡ fdd„ƒ ttdd„ ƒ tddd‰tt‡fdd„ƒ d S )Nr6   r4   )r6   r4   r7   Tr9   rL   r5   r   Úcc                      s
   t dˆ ƒS )Nr   ©ÚBrA   ©r„   rA   rB   rC   c  ó   
 z"test_AccumBounds.<locals>.<lambda>c                   S   s
   t ddƒS )Nr6   r5   r…   rA   rA   rA   rB   rC   d  rˆ   Úrr2   c                      s   t ˆ ˆ d ƒS )Nr6   r…   rA   )r‰   rA   rB   rC   f  ó    )r†   ÚargsZdeltar   rh   Zmidr   Zis_realr0   r#   r1   r   rU   rb   r   r,   rV   rA   rA   )r„   r‰   rB   Útest_AccumBounds9  sH   """$$  $  $ rŒ   c                  C   s†  t ddƒd t ddƒksJ ‚dt ddƒ t ddƒksJ ‚t ddƒt ddƒ t ddƒks-J ‚t ddƒt dtƒ t dtƒks>J ‚t t tƒt t tƒ} }| | t t tƒksWJ ‚||  t t tƒkscJ ‚t dtƒt ddƒ} }| | t t dƒkszJ ‚||  t t dƒks†J ‚t ddƒd dks‘J ‚t dtƒd t dtƒksŸJ ‚t t dƒd t t dƒks¯J ‚t t tƒd t t tƒks¿J ‚t ddƒt tt ddƒtd	d
ksÒJ ‚t ddƒt t dtƒksàJ ‚t ddƒt t t dƒksïJ ‚t ddƒt  t t dƒksÿJ ‚t ddƒt  t dtƒksJ ‚t ddƒt t t tƒksJ ‚t ddƒt  t t tƒks0J ‚t t tƒt t t tƒksAJ ‚d S )Nr6   r4   r=   r7   rf   r   r<   rL   FrY   r5   )r†   r   r1   r0   r$   )Úlr‰   rA   rA   rB   Útest_AccumBounds_muli  s,   ""  &   "&rŽ   c                   C   s   t ddƒt ddƒ t tddƒdƒksJ ‚t ddƒt ddƒ t t tƒks&J ‚t ddƒt ddƒ t tjtƒks8J ‚t ddƒt ddƒ t t tƒksJJ ‚t d	dƒt dd	ƒ t t tƒks\J ‚t ddƒt ddƒ t t tdd	ƒƒksqJ ‚t d	dƒt ddƒ t t tddƒƒks†J ‚t d	dƒt ddƒ t td	dƒtƒksšJ ‚t ddƒt ddƒ t dtƒks«J ‚t ddƒt ddƒ t t dƒks½J ‚t dd	ƒt dd	ƒ t t tƒksÏJ ‚dt dd	ƒ t t tƒksÞJ ‚dt dd	ƒ t tjtƒksíJ ‚dt dd	ƒ t t tdd	ƒƒksÿJ ‚dt t dƒ t t dƒksJ ‚dt ddƒ t t dƒks J ‚dt t dƒ t dtƒks0J ‚dt t dƒ t ddƒks@J ‚t dd	ƒt tt dd	ƒdt d
dksVJ ‚t dd	ƒd t dd	ƒt ksgJ ‚t dtƒt t dtƒksvJ ‚t dtƒt  t t dƒks‡J ‚t t dƒt t t dƒks˜J ‚t t dƒt  t dtƒks©J ‚t t tƒt t t tƒksºJ ‚t t tƒt  t t tƒksÌJ ‚t dtƒt t dtƒksÛJ ‚t dtƒt  t t dƒksìJ ‚t t dƒt t t dƒksýJ ‚t t dƒt  t dtƒksJ ‚d S )Nr5   r7   r=   r6   rL   r<   r>   r   r4   FrY   )r†   r   r   r   rU   r1   r$   r	   rA   rA   rA   rB   Útest_AccumBounds_div„  s<   ($$$$**("$$$"   ,"""""$""&r   c                  C   s¸   t ddd} tddƒ}tdtƒ}tt tƒ}|t| ƒ tdt| ƒ tƒks'J ‚|t| ƒ tt tƒks5J ‚||  | tt tƒt| d | d ƒ ksLJ ‚|| | tt tƒksZJ ‚d S )Nr‰   Tr2   r5   r6   r:   )r   r†   r   r   )r‰   r1   r„   rJ   rA   rA   rB   Útest_issue_18795­  s   

". r   c                   C   s’   t d dt   d  t tddƒ¡tddƒksJ ‚ttddƒƒtdtƒks&J ‚ttt tƒƒtdtƒks5J ‚ttddƒƒttdƒtdƒƒksGJ ‚d S )Nr4   r6   r5   r=   r   r7   rf   )r0   Úsubsr†   r   r   r   r   rA   rA   rA   rB   Útest_AccumBounds_func¸  s   0(r’   c                  C   st   t ddd} td|  d|  ƒtddƒ td|  d|  d ƒks!J ‚t dddd}tddƒ| td| dƒks8J ‚d S )NÚnnT©Únonnegativer6   r4   Úi)ÚintegerÚnegative)r   r†   )r“   r–   rA   rA   rB   Útest_AccumBounds_powf¿  s   6$r™   c                  C   sˆ  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 ddƒd t ddƒks8J ‚t ddƒd dksCJ ‚t ddƒtddƒ t ddtdƒ ƒksXJ ‚t ddƒtj t dtdƒƒksiJ ‚td	d
d} ttt | dƒtjƒ tdd
d}t ||d ƒtj t t|ƒt|d ƒƒks–J ‚t ||d ƒ| t || |d | ƒks¬J ‚ttt ||d ƒtƒ tdd
d}ttt ddƒ|ƒ tdd
d
d}t ddƒ| t dd| ƒksÝJ ‚t ddƒ| t d| dƒksíJ ‚t ddƒd t tddƒdƒksþJ ‚t ddƒd t dt	ƒksJ ‚t ddƒd t tddƒt	ƒksJ ‚t ddƒd t t	 tddƒ ƒks3J ‚t ddƒd t tddƒt	ƒksEJ ‚t ddƒd t t	 t	ƒksUJ ‚t ddƒd t tddƒtddƒƒksjJ ‚t ddƒd t tddƒtddƒƒksJ ‚t dt	ƒtj t dt	ƒksJ ‚t t	 dƒd t dt	ƒksŸJ ‚t ddƒd t tddƒt	ƒks±J ‚t tddƒtjƒt	 tj
u sÂJ ‚t dtjƒt	 tj
u sÐJ ‚t tjdƒt	 t dt	ƒksàJ ‚t ddƒt	 t dt	ƒksïJ ‚t ddƒt	 t	u sûJ ‚t ddƒt	 t dt	ƒks
J ‚t tjdƒt	 t dt	ƒksJ ‚t tddƒtddƒƒt	 tj
u s-J ‚t dtddƒƒt	 tju s=J ‚t ddƒt	 tu sIJ ‚t ddƒt	 tju sVJ ‚t dtddƒƒt	 tju sfJ ‚t tddƒtjƒt	 tj
u swJ ‚t tddƒdƒt	 t dt	ƒks‰J ‚t tddƒdƒt	 t dt	ƒks›J ‚t ddƒt	 t t	 t	ƒks«J ‚t dtjƒt	 t t	 t	ƒks¼J ‚t ddƒt	 t t	 t	ƒksÌJ ‚t dtjƒt	 t t	 t	ƒksÝJ ‚t ddƒt tt ddƒtddksñJ ‚t ddƒt	  tj
u sÿJ ‚t ddƒt	  t dt	ƒksJ ‚t ddƒt	  t t	 t	ƒks J ‚ttƒtdt ƒ  tt dtd ƒ¡tt t	 t	ƒt ddƒƒksBJ ‚d S )Nr   r4   r=   r5   r6   r7   r;   r9   ÚnegT)r˜   r“   r”   r–   )r—   )r—   r•   rL   é   r<   é   é	   FrY   )r†   r   r   r   rU   r   r&   r%   r0   r   r]   ZNaNr	   r   r   r‘   r
   )rš   r“   r–   rA   rA   rB   Útest_AccumBounds_powÇ  sn   *".,  "$($ **  $"  &  "$$ " "( "$ÿrž   c                  C   s$  dt tttj ƒ } |  td¡t ddƒksJ ‚|  td¡dks!J ‚|  td¡}|jr6|jdt dtj ƒfks8J ‚dt ttd ƒ dksEJ ‚tjt ddƒ t tdƒd dƒksXJ ‚dt ddƒ t tdƒd dƒksjJ ‚t ddƒt tdƒd dƒ t ddƒksJ ‚t ddƒt ddƒ t ddƒksJ ‚t ddƒt ddƒ t tdƒd	 tdƒd ƒks©J ‚t ddƒt ddƒ t tdƒd	 d
ƒks¾J ‚ttt ddƒt ddƒƒ t dtdƒd ƒt dt	ƒ t dtdƒd ƒksãJ ‚t ddƒt dt	ƒ t dt	ƒksôJ ‚t ddƒt dt	ƒ t dt	ƒksJ ‚t dt	ƒt dt	ƒ t dt	ƒksJ ‚t tdƒd dƒt dt	ƒ t dt	ƒks.J ‚t tdƒd dƒt t	 dƒ t dt	ƒksEJ ‚t tdƒd dƒt t	 t	ƒ t dt	ƒks\J ‚t tdƒd dƒt dt	ƒ t dt	ƒksrJ ‚t tdƒd dƒt t	 dƒ t dt	ƒks‰J ‚t tdƒd dƒt t	 t	ƒ t dt	ƒks J ‚t tdƒd t	ƒt dt	ƒ t dt	ƒks¶J ‚t tdƒd t	ƒt t	 dƒ t dt	ƒksÍJ ‚t tdƒd t	ƒt t	 t	ƒ t dt	ƒksäJ ‚t ddƒt dt	ƒ t dt	ƒksöJ ‚t ddƒt t	 dƒ t dt	ƒks	J ‚t ddƒt t	 t	ƒ t dt	ƒksJ ‚t dt	ƒt dt	ƒ t dt	ƒks.J ‚t dt	ƒt t	 dƒ t dt	ƒksAJ ‚t dt	ƒt t	 t	ƒ t dt	ƒksTJ ‚t dt	ƒt dt	ƒ t dt	ƒksfJ ‚t dt	ƒt t	 dƒ t dtdƒd ƒks}J ‚t dt	ƒt t	 t	ƒ t dt	ƒksJ ‚d S )Nr   r6   r5   rL   r4   r=   r7   r<   rœ   r   )
r†   r1   r   rU   r‘   Zis_Powr‹   r&   r%   r   )rX   r_   rA   rA   rB   Útest_AccumBounds_exponent  sF   "&$*"2*2"$$,..,..,..$&&$&&$.*rŸ   c                      sH  t ddƒdk tjksJ ‚t ddƒdk tjksJ ‚t ddƒdk jdks$J ‚t ddƒdkjdks0J ‚t ddƒdktjks<J ‚t ddƒdktjksHJ ‚t ddƒdkjdksTJ ‚t ddƒdkjd	ks`J ‚t ddƒt dd
ƒk tjksoJ ‚t ddƒt ddƒk jdks~J ‚t ddƒt ddƒk tjksJ ‚t ddƒt dd
ƒktjksœJ ‚t ddƒt ddƒktjks«J ‚t ddƒt dd
ƒktjksºJ ‚t ddƒt ddƒktjksÉJ ‚t ddƒt dd
ƒktjksØJ ‚t ddƒt ddƒktjksçJ ‚ttƒdk tt¡t ddƒdkksúJ ‚t	dƒ‰ t
t‡ fdd„ƒ t
t‡ fdd„ƒ t
t‡ fdd„ƒ t
t‡ fdd„ƒ d S )Nr6   r7   r=   r5   r4   ú<z<=ú>z>=rf   rL   r   r„   c                      s   t ddƒˆ k S rR   r…   rA   r‡   rA   rB   rC   T  rŠ   z-test_comparison_AccumBounds.<locals>.<lambda>c                      s   t ddƒˆ kS rR   r…   rA   r‡   rA   rB   rC   U  rŠ   c                      s   t ddƒˆ kS rR   r…   rA   r‡   rA   rB   rC   V  rŠ   c                      s   t ddƒˆ kS rR   r…   rA   r‡   rA   rB   rC   W  rŠ   )r†   r   ÚtrueZfalseZrel_opr   r0   r‘   r   r   r,   Ú	TypeErrorrA   rA   r‡   rB   Útest_comparison_AccumBounds8  s.   &r¤   c                  C   sæ   dt ddƒv tjksJ ‚ttdd„ ƒ dt ddƒv sJ ‚ttdd„ ƒ t t dtƒv tjks0J ‚tt t dƒv tjks=J ‚tdt ddƒƒtt ddƒdƒ  krTdksWJ ‚ J ‚dd l} |  dt ddƒt	g¡D ]
}t|Ž dkspJ ‚qfd S )Nr6   r4   c                   S   s   t tddƒv S ry   )r1   r†   rA   rA   rA   rB   rC   \  rŠ   z+test_contains_AccumBounds.<locals>.<lambda>r   r5   c                   S   s&   t dƒd tdƒd  d tddƒv S )Nr6   r4   r5   r   )r   r   r†   rA   rA   rA   rB   rC   ^  s   &)
r†   r   r¢   r,   r£   r   r$   Ú	itertoolsÚpermutationsr0   )r¥   ZpermrA   rA   rB   Útest_contains_AccumBoundsZ  s   4ÿr§   c                   C   sÂ   t ddƒ t ddƒ¡t ddƒksJ ‚t ddƒ t ddƒ¡t ddƒks$J ‚t ddƒ t ddƒ¡t ddƒks6J ‚t ddƒ t ddƒ¡t ddƒksHJ ‚t ddƒ t ddƒ¡tjksXJ ‚ttdd„ ƒ d S )	Nr   r7   r6   r4   r=   r5   c                   S   ó   t ddƒ d¡S ©Nr   r7   r6   )r†   ÚintersectionrA   rA   rA   rB   rC   p  rS   z/test_intersection_AccumBounds.<locals>.<lambda>)r†   rª   r   r)   r,   r£   rA   rA   rA   rB   Útest_intersection_AccumBoundsj  s   $$$$ r«   c                   C   s¢   t ddƒ t ddƒ¡t ddƒksJ ‚t ddƒ t ddƒ¡t ddƒks$J ‚t ddƒ t ddƒ¡t ddƒks6J ‚t ddƒ t ddƒ¡t ddƒksHJ ‚ttdd„ ƒ d S )	Nr   r7   r6   r4   r=   r5   c                   S   r¨   r©   )r†   ÚunionrA   rA   rA   rB   rC   x  rS   z(test_union_AccumBounds.<locals>.<lambda>)r†   r¬   r,   r£   rA   rA   rA   rB   Útest_union_AccumBoundss  s
   $$$$r­   c                  C   s8   t ddd} t| ƒ}t|| tjƒtdtddƒksJ ‚d S )Nr0   Tr2   r   F)r   rb   r   r   r@   r'   r   )r0   r[   rA   rA   rB   Útest_issue_16469{  s   $r®   c                   C   s0   t ttt td tjd   ƒtƒdksJ ‚d S )Nr=   r4   r;   )r   r   r
   r   r0   r   rU   rA   rA   rA   rB   Útest_issue_18747€  s   0r¯   N)Prg   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.calculus.utilr   r   r   r   r   r   r   r    r!   r"   Z
sympy.corer#   r$   r%   Zsympy.core.exprr&   Zsympy.sets.setsr'   r(   r)   r*   r+   Zsympy.testing.pytestr,   r-   r.   Z	sympy.abcr0   r1   r†   rK   rP   rW   r`   rd   ri   rj   rm   r   r   rƒ   rŒ   rŽ   r   r   r’   r™   rž   rŸ   r¤   r§   r«   r­   r®   r¯   rA   rA   rA   rB   Ú<module>   sJ   d 0(!
E
"!0)
@1"	