
    MZdw                         d dl mZmZmZ d dl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mZ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
 Zd Zd Zd Zd Z d Z!d Z"y)    )IRationaloo)S)Symbol)explog)sqrt)singularitiesis_increasingis_strictly_increasingis_decreasingis_strictly_decreasingis_monotonic)Interval	FiniteSet)raises)xyc            	      X    t        d       t         dz         t        j                  k(  sJ t          dz  d z  z   dz   z         t	        dd      k(  sJ t        d dz  dz   z         t	        t
        t
               k(  sJ t          dz  dz   z         t	        ddt        d      t
        z  z
  dz  dt        d      t
        z  z   dz        k(  sJ t        dt        dz  dt
        z  t        z  z   dz   z  t              t	        t
         t        d      t
        z  z   t
         t        d      t
        z  z
        k(  sJ t        dd       t        d dz  dz   z         t        j                  k(  sJ t        t        d z         t        j                        t	        d	      k(  sJ t        t        d z         t        dd            t        j                  k(  sJ t        t         dz
  dz         t        dd            t	        d      k(  sJ t        t         fd
       y )Nr            T)realr   c                  ,    t         t         z         S )N)r   r   r   s   I/usr/lib/python3/dist-packages/sympy/calculus/tests/test_singularities.py<lambda>z$test_singularities.<locals>.<lambda>"   s    a"fa(@     )r   r   r   EmptySetr   r   r
   r   r   Realsr   r	   r   NotImplementedErrorr   s   @r   test_singularitiesr%      s   sAAq!QZZ///AqD1Q3JN+Q/9R3DDDDAqD1Hq)Yq1"-====AqD1Hq)"q47Q;!+a$q'A+o-BCD D DAqD1Q3q5L1,-q11"tAwqy.1"tAwqy.12 2 2 	sAAqD1Hq)QZZ777QqS1agg.)A,>>>QqS1hq!n5CCCa!eaZ!Xa^<	!LLL
 @Ar!   c                     t        dd      } t        t        dz  dt        dz  z  z
  dt        z  z   t        j                        sJ t        t        dz   t        t         d            sJ t        t        dz   t        dt                    rJ t        dt        dz  z  dt        dz  z  z
  d	t        z  z
  d
z   t        dd            rJ t        t        dz  t        z   t        dt              t              sJ t        t        dz   | z  t        dt              t              sJ t        d      sJ t        dt        dz  z  dt        dz  z  z
  d	t        z  z
  d
z   t        dd            du sJ y)z1Test whether is_increasing returns correct value.aT)negativer   r      r      H      r   r   FN)r   r   r   r   r#   r   r   r   )r'   s    r   test_is_increasingr-   %   s;   sT"AA!Q$1,agg666!Q$"a 0111adUHQO444Qq!tVa1f_r!t3b8(2q/JJJA8Ar?A666!Q$q(1b/15551a4!AqD&2a4/"4hr1oF%OOOr!   c                     t        dt        dz  z  dt        dz  z  z
  dt        z  z
  dz   t        j                  t         d            sJ t        dt        dz  z  dt        dz  z  z
  dt        z  z
  dz   t        j
                  dt                    sJ t        dt        dz  z  dt        dz  z  z
  dt        z  z
  dz   t        j                  dd            rJ t        t        dz   t        dt                    rJ t        d	      rJ t        dt        dz  z  dt        dz  z  z
  dt        z  z
  dz   t        j                  dd            d
u sJ y)z:Test whether is_strictly_increasing returns correct value.r)   r   r*   r   r+   r,   r   r   r   FN)r   r   r   Ropenr   Lopenopenr    r!   r   test_is_strictly_increasingr3   4   s>   !	!Q$1a4"Q$#X^^RC%<> > >!	!Q$1a4"Q$#X^^Ar%:< < <%	!Q$1a4"Q$#X]]2q%9; ; ;%q!teXa_===%a(((!!AqD&1QT6/BqD"82"=x}}RQR?STX]]]]r!   c            
         t        dd      } t        dt        dz  dt        z  z
  z  t        j                  t        dd      d            sJ t        dt        dz  dt        z  z
  z  t        j                  dd            sJ t        dt        dz  dt        z  z
  z  t        j                  dt                    sJ t        dt        dz  dt        z  z
  z  t        j                  t         t        dd                  rJ t        t        dz   t        t         d            rJ t        t        dz   | z  t        t         d      t              rJ y	)
z1Test whether is_decreasing returns correct value.bT)positiver   r   r         ?r   N)	r   r   r   r   r1   r   r0   r   r/   )r5   s    r   test_is_decreasingr8   B   s   sT"AAqD1Q3Jx!}a)HIIIAqD1Q3JsA)>???AqD1Q3J2)>???Q1qs
^X^^RC!Q-PQQQadUHbS!$4555adU1WhsA&6::::r!   c            
      R   t        dt        dz  dt        z  z
  z  t        j                  dt                    sJ t        dt        dz  dt        z  z
  z  t        j
                  t         t        dd                  rJ t        t        dz   t        t         d            rJ t        d      rJ t        dt        dz  dt        z  z
  z  t        j                  t        dd      d            sJ t        dt        dz  dt        z  z
  z  t        j                  dd            sJ y)z:Test whether is_strictly_decreasing returns correct value.r   r   r   r   r7   N)r   r   r   r0   r   r/   r   r1   r2   r!   r   test_is_strictly_decreasingr:   N   s    !!QTAaCZ.(..B2GHHH%	1a4!A#:sHQN;= = =%q!teXrc1-=>>>%a(((!!QTAaCZ.(--1q2QRRR!!QTAaCZ.(--Q2GHHHr!   c            	         t        dt        dz  dt        z  z
  z  t        j                  t	        dd      d            sJ t        dt        dz  dt        z  z
  z  t        j                  dd            sJ t        dt        dz  dt        z  z
  z  t        j
                  dt                    sJ t        t        dz  dt        dz  z  z
  dt        z  z   t        j                        sJ t        t        dz   t        j                        rJ t        t        dz  t        z   dz   t        dd      t              sJ t        t        d        y)z0Test whether is_monotonic returns correct value.r   r   r   r7   r)   c                  :    t        t        dz  t        z   dz         S )Nr   r   )r   r   r   r2   r!   r   r    z#test_is_monotonic.<locals>.<lambda>a   s    QTAX\(B r!   N)r   r   r   r1   r   r0   r   r   r#   r   r   r$   r2   r!   r   test_is_monotonicr=   Y   s    1a4!A#:hqmQ(GHHH1a4!A#:c1(=>>>1a4!A#:q"(=>>>1qAv!+QWW555QTE177+++1q1hq!na888
 BCr!   c                  z    t        d      } | dz   d| dz  z  d| z  z   dz   z  }t        |t        dd      |       sJ y )Nr   r   gMbPr   g?)r   r   r   )r   exprs     r   test_issue_23401r@   d   sG    sAEGAqDL3q5(3./Dx!}a000r!   N)#sympy.core.numbersr   r   r   sympy.core.singletonr   sympy.core.symbolr   &sympy.functions.elementary.exponentialr   r	   (sympy.functions.elementary.miscellaneousr
   sympy.calculus.singularitiesr   r   r   r   r   r   
sympy.setsr   r   sympy.testing.pytestr   	sympy.abcr   r   r%   r-   r3   r8   r:   r=   r@   r2   r!   r   <module>rJ      sT    0 0 " $ = 9  + ' B$P^	;ID1r!   