U
    L?h                     @   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st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sttt  tddkst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stttd   tddtjksttt d d  tddtdkst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)   Y/var/www/html/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rtttd t tdttstttd  |  tdttsttdst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rtt td  tdtrttd	rt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sttdtd dt   t	t tddrtttd  tt drtttd  |  tt dtrt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stt dtd dt   tddst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	stt td  tj	rtt td t
 d tddtst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&   gMbPr"   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$     !