U
    ZÊ¹j˜  ã                   @   s  d dl 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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mZm Z m!Z! d d
l"m#Z#m$Z$m%Z%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0dd„ Z1dd„ Z2dS )é    )ÚIÚRationalÚpiÚoo)ÚS)ÚSymbolÚDummy)ÚLambda)ÚexpÚlog)ÚsecÚcsc)ÚcothÚsechÚatanhÚasechÚacothÚacsch)Úsqrt)ÚsingularitiesÚis_increasingÚis_strictly_increasingÚis_decreasingÚis_strictly_decreasingÚis_monotonic)ÚIntervalÚ	FiniteSetÚUnionÚImageSet)Úraises)ÚxÚyc               
      s~  t dƒ‰ tˆ d ˆ ƒtjks t‚tˆ ˆ d dˆ   d  ˆ ƒtddƒksLt‚tdˆ d d  ˆ ƒttt ƒksrt‚tˆ ˆ d d  ˆ ƒtddtdƒt  d dtdƒt  d ƒks¸t‚tdtd dt t  d  tƒtt tdƒt  t tdƒt  ƒk�st‚t	dƒ} tt
ˆ ƒˆ ƒ ttt| d|  t t tt d  ƒtjƒtt| d|  t t dt t d  ƒtjƒƒ¡�s~t‚ttˆ ƒˆ ƒ ttt| d|  t t tt  ƒtjƒtt| d|  t t ƒtjƒƒ¡�sÚt‚ttˆ ƒˆ ƒtddƒk�søt‚ttˆ ƒˆ ƒtddƒk�st‚ttˆ ƒˆ ƒtdƒk�s2t‚ttˆ ƒˆ ƒtdƒk�sNt‚t dd	d
�‰ tdˆ d d  ˆ ƒtjk�s|t‚ttdˆ  ƒˆ tjƒtdƒk�s t‚ttdˆ  ƒˆ tddƒƒtjk�sÆt‚ttˆ d d ƒˆ tddƒƒtdƒk�sòt‚tt‡ fdd„ƒ ttˆ ƒˆ tddt ƒƒttd dt d dt d ƒk�sDt‚ttˆ ƒˆ tddt ƒƒtdtdt dt ƒk�szt‚d S )Nr    é   é   éþÿÿÿéÿÿÿÿé   Únr   T)Úrealc                      s   t ˆ t  ˆ ƒS )N)r   r   © ©r    r)   úf/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/calculus/tests/test_singularities.pyÚ<lambda>1   ó    z$test_singularities.<locals>.<lambda>é   )r   r   r   ZEmptySetÚAssertionErrorr   r   r   r!   r   r   Zdummy_eqr   r   r	   r   ZIntegersr   r   r   r   r   r
   ÚRealsr   r   r   ÚNotImplementedErrorr   r   )Z_nr)   r*   r+   Útest_singularities   sP    ,&*ÿ $ÿ
(,þ$þ"$&, 
 
ÿ   ÿr2   c                  C   s&  t ddd�} ttd dtd   dt  tjƒs4t‚ttd  tt dƒƒsPt‚ttd  tdtƒƒrjt‚tdtd  dtd   d	t  d
 tddƒƒržt‚ttd t tdtƒtƒs¼t‚ttd  |  tdtƒtƒsÜt‚tdƒsèt‚tdtd  dtd   d	t  d
 tddƒƒdk�s"t‚dS )z1Test whether is_increasing returns correct value.ÚaT)Únegativer#   r"   é   r   é   éH   é   r$   r&   FN)	r   r   r    r   r0   r/   r   r   r!   )r3   r)   r)   r+   Útest_is_increasing8   s    (4 r9   c                   C   s
  t dtd  dtd   dt  d t t d¡ƒs8t‚t dtd  dtd   dt  d t dt¡ƒsnt‚t dtd  dtd   dt  d t dd¡ƒr¤t‚t td  tdtƒƒr¾t‚td	ƒrÊt‚t dtd  dtd   dt  d t dd¡ƒd
k�st‚dS )z:Test whether is_strictly_increasing returns correct value.r5   r#   r6   r"   r7   r8   r$   r   r&   FN)	r   r    r   ÚRopenr   r/   ÚLopenÚopenr   r)   r)   r)   r+   Útest_is_strictly_increasingG   s    " ÿ" 
ÿ" 
ÿr=   c                  C   sô   t ddd�} tdtd dt   t tddƒd¡ƒs8t‚tdtd dt   t dd¡ƒs^t‚tdtd dt   t dt¡ƒs„t‚tdtd dt   t 	t tddƒ¡ƒr²t‚ttd  tt dƒƒrÎt‚ttd  |  tt dƒtƒrðt‚d	S )
z1Test whether is_decreasing returns correct value.ÚbT)Zpositiver&   r"   r#   ç      ø?r   N)
r   r   r    r   r<   r   r/   r;   r   r:   )r>   r)   r)   r+   Útest_is_decreasingU   s    ,&&.r@   c                   C   sÒ   t dtd dt   t dt¡ƒs&t‚t dtd dt   t t tddƒ¡ƒrTt‚t td  tt dƒƒrpt‚t dƒr|t‚t dtd dt   t tddƒd¡ƒs¨t‚t dtd dt   t dd¡ƒsÎt‚dS )z:Test whether is_strictly_decreasing returns correct value.r&   r"   r#   r   r?   N)	r   r    r   r;   r   r/   r:   r   r<   r)   r)   r)   r+   Útest_is_strictly_decreasinga   s    & ÿ,rA   c                   C   sê   t dtd dt   t tddƒd¡ƒs,t‚t dtd dt   t dd¡ƒsRt‚t dtd dt   t dt¡ƒsxt‚t td dtd   dt  tj	ƒs t‚t td  tj	ƒr¶t‚t td t
 d tddƒtƒsØt‚ttdd„ ƒ dS )	z0Test whether is_monotonic returns correct value.r&   r"   r#   r?   r5   c                   S   s   t td t d ƒS )Nr"   r&   )r   r    r!   r)   r)   r)   r+   r,   t   r-   z#test_is_monotonic.<locals>.<lambda>N)r   r    r   r<   r   r/   r;   r   r   r0   r!   r   r1   r)   r)   r)   r+   Útest_is_monotonicl   s    ,&&("rB   c                  C   sB   t dƒ} | d d| d  d|   d  }t|tddƒ| ƒs>t‚d S )Nr    r&   gü©ñÒMbP¿r"   gš™™™™™¹?)r   r   r   r/   )r    Úexprr)   r)   r+   Útest_issue_23401w   s     rD   N)3Zsympy.core.numbersr   r   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.functionr	   Z&sympy.functions.elementary.exponentialr
   r   Z(sympy.functions.elementary.trigonometricr   r   Z%sympy.functions.elementary.hyperbolicr   r   r   r   r   r   Z(sympy.functions.elementary.miscellaneousr   Zsympy.calculus.singularitiesr   r   r   r   r   r   Z
sympy.setsr   r   r   r   Zsympy.testing.pytestr   Z	sympy.abcr    r!   r2   r9   r=   r@   rA   rB   rD   r)   r)   r)   r+   Ú<module>   s$     !