o
    Îeº:  ã                   @   s”  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mZ d dlmZ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 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(m)Z)m*Z*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 e	dddZ6dd„ Z7dd„ Z8dd„ Z9e3dd„ ƒZ:dd„ Z;dd„ Z<dd „ Z=d!d"„ Z>d#d$„ Z?d%d&„ Z@d'd(„ ZAd)d*„ ZBe3d+d,„ ƒZCd-S ).é    )ÚEÚIÚRationalÚooÚpi)ÚS)ÚSymbolÚsymbols)ÚAbsÚre)ÚexpÚlog)Úsqrt)Ú	Piecewise)ÚcosÚcotÚcscÚsecÚsinÚtan)Úexpint)ÚMatrixSymbol)Úsimplify)	Úfunction_rangeÚcontinuous_domainÚnot_empty_inÚperiodicityÚlcimÚ	is_convexÚstationary_pointsÚminimumÚmaximum)ÚIntervalÚ	FiniteSetÚ
ComplementÚUnion)ÚraisesÚ_both_exp_pow©Ú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 ©Nr-   )r   r   r   r   r   ÚReals© r(   r:   úND:\Projects\ConvertPro\env\Lib\site-packages\sympy/calculus/tests/test_util.pyÚ<lambda>3   s    $ÿz%test_function_range.<locals>.<lambda>c                      s   t tˆ ƒˆ  ˆ tjƒS ©N)r   r   r   r9   r:   r(   r:   r;   r<   5   ó    ÿc                      ó   t tˆ ƒˆ tjƒS r=   )r   r   r   ZIntegersr:   r(   r:   r;   r<   7   s    ÿc                      s   t tˆ ƒd ˆ tjƒS r8   )r   r   r   ZNaturalsr:   r(   r:   r;   r<   9   r>   )r	   r   r   r"   r   r   r   r%   r   r   r   r   r9   r   r#   r   ÚEmptySetÚopenr&   ÚNotImplementedError)Úyr*   Úbr:   r(   r;   Útest_function_range   s\   ÿÿ
ÿ
ÿ"ÿÿÿ
ÿÿ ÿ$
ÿ
ÿ
ÿ0rE   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 )Nr)   r   r-   FTr0   r/   r6   éþÿÿÿr2   Úd)ZevenÚzero)r   r   r   r"   r   r   r%   r   r   r9   r   r   r   rA   Úcontains)r)   ÚdomainrG   r:   r:   r;   Útest_continuous_domain=   s2   ,,ÿÿÿ ÿ,ÿ$ÿ*rK   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 )Nr-   r/   TFr.   r6   é   rF   r0   r2   c                   S   s   t tƒS r=   )r   r)   r:   r:   r:   r;   r<   n   s    z#test_not_empty_in.<locals>.<lambda>c                   S   s   t tddƒtƒS )Nr   r/   )r   r"   r)   r:   r:   r:   r;   r<   o   ó    c                   S   s   t ttƒ tj¡ttƒS r=   )r   r#   r)   Ú	intersectr   r9   r*   r:   r:   r:   r;   r<   q   s    )r   r#   r)   rN   r"   r   ÚHalfr%   r   r   r9   r$   r*   r   r@   r&   Ú
ValueErrorrB   r:   r:   r:   r;   Útest_not_empty_inS   s^   "ÿÿ""ÿÿÿÿ,ÿ$
ÿ"ÿ 
ÿÿÿ"ÿ
þ&$
ÿÿrQ   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 ‚tdd	d	ƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr)   rC   ÚzTr+   r-   rF   r6   r0   r/   F)Úevaluatec                 3   s&    | ]}t t|ˆ ƒƒˆ ƒtkV  qd S r=   )r   r
   r   )Ú.0Úfr(   r:   r;   Ú	<genexpr>¦   s   €$ z#test_periodicity.<locals>.<genexpr>r   r.   Úmc                      s   t tˆ ƒˆ ƒS r=   ©r   r   r:   ©rW   r:   r;   r<   º   s    z"test_periodicity.<locals>.<lambda>c                      s   t tˆ d ƒˆ ƒS ©N)r   r   rX   r:   rY   r:   r;   r<   »   ó    c                      s   t tˆ ƒˆ d ƒS rZ   rX   r:   rY   r:   r;   r<   ¼   r[   c                      s   t tˆ d ƒˆ d ƒS rZ   rX   r:   rY   r:   r;   r<   ½   ó    )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZZeror   r
   ÚallrO   r   r   r   r   r&   rB   )rC   rR   Úpr:   )rW   r)   r;   Útest_periodicityt   s‚   """"".&*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 )Nr)   rC   T)Úcheckr-   )	r   r   r   r   r   r   r   Úabsr
   ©r)   rC   r:   r:   r;   Útest_periodicity_checkÀ   s   &&"rc   c                   C   s¾   t tjtdƒtdƒgƒdksJ ‚t td td tgƒtksJ ‚t dt td gƒdt ks/J ‚t tjdt gƒd u s<J ‚t tdƒdt  td tddƒ tjt gƒtdƒdt  ks]J ‚d S )Nr-   r0   é   r6   r/   )r   r   rO   r   ÚOner   r   r:   r:   r:   r;   Ú	test_lcimË   s
     Frf   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s2J ‚t dtd  tt dt¡ddksEJ ‚t dtd  tt t d¡ddksYJ ‚t ttƒtƒdksdJ ‚tt	d	d
„ ƒ d S )Nr/   r   )rJ   TFr-   r0   r.   c                   S   s   t ttƒttƒS r=   )r   r   r)   r*   r:   r:   r:   r;   r<   Ú   rM   z test_is_convex.<locals>.<lambda>)
r   r)   r"   rA   r   ZLopenÚRopenr   r&   rB   r:   r:   r:   r;   Útest_is_convexÓ   s   "" &(rh   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ju s4J ‚tt| ƒ| ƒtju 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ju 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ju 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 yr-   r   r6   r0   r.   r1   r2   r3   rF   r/   éúÿÿÿr5   )r	   r   r   r"   r   rg   r   r@   r   r   r   r   r#   r   r9   r   r   r%   rb   r:   r:   r;   Útest_stationary_pointsÝ   sX   ÿÿÿÿÿÿÿÿ ÿ$ÿÿ
ÿ 

ÿ
ÿrk   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 )Nri   r   r/   r6   r0   r4   r2   r-   r1   é   r3   é
   é)   i   i+  rj   r5   é<   é   i  é   c                      r?   r=   ©r!   r   r   r@   r:   r(   r:   r;   r<     r[   ztest_maximum.<locals>.<lambda>c                      ó   t ttˆ ƒƒˆ tjƒS r=   )r!   r   r   r   r@   r:   r(   r:   r;   r<     r\   c                      ó"   t dˆ d ˆd  d  ˆ tjƒS ©Nr/   r-   )r!   r   r@   r:   rb   r:   r;   r<     ó   " c                      ó   t tˆ ƒtˆ ƒƒS r=   )r!   r   r:   r(   r:   r;   r<     r[   c                      ó   t tˆ ƒˆ ˆ tjƒS r=   rr   r:   rb   r:   r;   r<     r\   c                      ó   t tˆ ƒtjƒS r=   )r!   r   r   re   r:   r(   r:   r;   r<     rM   )r	   r!   r   r   re   r"   r   r   r   r   r9   rO   r   r   r   r   r   ÚNegativeOner%   ra   r*   r&   rP   r:   r:   rb   r;   Ú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 )Nri   r/   r6   r.   r-   r0   r4   r2   içÿÿÿr1   r   r5   rm   rF   rj   c                      r?   r=   ©r    r   r   r@   r:   r(   r:   r;   r<   5  r[   ztest_minimum.<locals>.<lambda>c                      rs   r=   )r    r   r   r   r@   r:   r(   r:   r;   r<   6  r\   c                      rt   ru   )r    r   r@   r:   rb   r:   r;   r<   7  rv   c                      rw   r=   )r    r   r:   r(   r:   r;   r<   8  r[   c                      rx   r=   r|   r:   rb   r:   r;   r<   9  r\   c                      ry   r=   )r    r   r   re   r:   r(   r:   r;   r<   :  rM   )r	   r    r   r   rz   r"   r   r   r   r   r9   r   r   r   r   r   r%   r&   rP   r:   r:   rb   r;   Ú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Útr0   r/   r-   )r	   r!   r   )r~   r:   r:   r;   Útest_issue_19869=  s   (
ÿr   c                  C   s8   t ddd} t| ƒ}t|| tjƒtdtddƒksJ ‚d S )Nr)   Tr+   r   F)r   ra   r   r   r9   r"   r   )r)   rU   r:   r:   r;   Útest_issue_16469C  s   $r€   c                   C   s0   t ttt td tjd   ƒtƒdksJ ‚d S )Nr6   r-   r4   )r   r   r   r   r)   r   rO   r:   r:   r:   r;   Útest_issue_18747I  s   0r   N)DZsympy.core.numbersr   r   r   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r	   Z$sympy.functions.elementary.complexesr
   r   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.functions.elementary.piecewiser   Z(sympy.functions.elementary.trigonometricr   r   r   r   r   r   Z'sympy.functions.special.error_functionsr   Z"sympy.matrices.expressions.matexprr   Zsympy.simplify.simplifyr   Zsympy.calculus.utilr   r   r   r   r   r   r   r    r!   Zsympy.sets.setsr"   r#   r$   r%   Zsympy.testing.pytestr&   r'   Z	sympy.abcr)   r*   rE   rK   rQ   r_   rc   rf   rh   rk   r{   r}   r   r€   r   r:   r:   r:   r;   Ú<module>   s>     ,(!
K
"!