
    Riew                         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"dS )    )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            	      >    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
           d S )Nr            T)realr   c                  6    t           t           z             S )N)r   r   r   s   Glib/python3.11/site-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%      sa   sAAq!!QZ////AqD1Q3JN+Q//9R3D3DDDDDAqD1Hq))Yq1"-=-=====AqD1Hq))"q477Q;!+a$q''A+o-BCCD D D DAqD1Q3q5L1,-q111"tAwwqy.1"tAwwqy.112 2 2 2 	sAAqD1Hq))QZ7777QqS1ag..)A,,>>>>QqS1hq!nn55CCCCa!eaZ!Xa^^<<	!LLLL
 @ @ @ @AAAA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 dS )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,ag66666!Q$"a 0 011111adUHQOO44444Qq!tVa1f_r!t3b8(2q//JJJJJA8Ar??A66666!Q$q(1b//1555551a4!AqD&2a4/"4hr1ooFF%OOO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 dS )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   sz   !	!Q$1a4"Q$#X^RC%<%<> > > > >!	!Q$1a4"Q$#X^Ar%:%:< < < < <%	!Q$1a4"Q$#X]2q%9%9; ; ; ; ;%q!teXa__=====%a(((((!!AqD&1QT6/BqD"82"=x}RQR?S?ST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 d	S )
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   sJ   sT"""AAqD1Q3Jx!}}a)H)HIIIIIAqD1Q3JsA)>)>?????AqD1Q3J2)>)>?????Q1qs
^X^RC!Q-P-PQQQQQadUHbS!$4$455555adU1WhsA&6&6:::::::r!   c            
         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 dS )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.(.B2G2GHHHHH%	1a4!A#:sHQNN;;= = = = =%q!teXrc1-=-=>>>>>%a(((((!!QTAaCZ.(-1q2Q2QRRRRR!!QTAaCZ.(-Q2G2GHHHH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            dS )z0Test whether is_monotonic returns correct value.r   r   r   r7   r)   c                  F    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(B r!   N)r   r   r   r1   r   r0   r   r   r#   r   r   r$   r2   r!   r   test_is_monotonicr=   Y   s6   1a4!A#:hqmmQ(G(GHHHHH1a4!A#:c1(=(=>>>>>1a4!A#:q"(=(=>>>>>1qAv!+QW55555QTE17+++++1q1hq!nna88888
 B BCCCCCr!   c                      t          d          } | dz   d| dz  z  d| z  z   dz   z  }t          |t          dd          |           sJ d S )Nr   r   gMbPr   g?)r   r   r   )r   exprs     r   test_issue_23401r@   d   sW    sAEGAqDL3q5(3./Dx!}}a0000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      s   0 0 0 0 0 0 0 0 0 0 " " " " " " $ $ $ $ $ $ = = = = = = = = 9 9 9 9 9 9                + * * * * * * * ' ' ' ' ' '        B B B$P P P^ ^ ^	; 	; 	;I I ID D D1 1 1 1 1r!   