
    g"                     <   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
 d dlmZ d dlmZ d dl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mZ d dl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' d Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7y)     )Q)refine)Expr)IRationalnanpi)S)Symbol)Absargimresign)exp)sqrt)atanatan2)wxyz)EqNe)	Piecewise)MatrixSymbolc                     t        t        t              t        j                  t                    t        k(  sJ t        dt        t              z   t        j                  t                    dt        z   k(  sJ t        t        t              t        j
                  t                    t         k(  sJ t        dt        t              z   t        j
                  t                    dt        z
  k(  sJ t        t        t        dz              t        dz  k7  sJ t        t        t        dz        t        j                  t                    t        dz  k(  sJ y N      )r   r   r   r   positivenegativereal     X/var/www/openai/venv/lib/python3.12/site-packages/sympy/assumptions/tests/test_refine.pytest_Absr'      s    #a&!**Q-(A---!c!f*ajjm,A555#a&!**Q-(QB...!c!f*ajjm,A555#ad)1$$$#ad)QVVAY'1a4///r%   c                  	   t        dt        z  t        j                  t                    dk(  sJ t        dt        z  t        j                  t                    dk(  sJ t        dt        z  t        j                  t                    dt        z  k(  sJ t        t        t        dz              t        t              k7  sJ t        t        t        dz        t        j                  t                    t        t              k7  sJ t        t        t        dz        t        j                  t                    t        t              k(  sJ t        t        t        dz        t        j                  t                    t        k(  sJ t        t        dz  t        dd      z        t        k7  sJ t        t        dz  t        dd      z  t        j                  t                    t        k7  sJ t        t        dz  t        dd      z  t        j                  t                    t        k(  sJ t        t        dt        z        t        j                  t                    dt        t              z  k7  sJ t        t        dt        z        t        j                  t                    dt        t              z  k(  sJ t        dt        t        z   z  t        j                  t                    dt        z  k(  sJ t        dt        t        z   t        z   z  t        j                  t              t        j                  t              z        dt        z  k(  sJ t        dt        t        z   dz   z  t        j                  t                    dt        z  k(  sJ t        dt        t        z   dz   z  t        j                  t                    dt        dz   z  k(  sJ t        dt        dz   z        dt        dz   z  k(  sJ t        ddt        z  dz  t        j                  z
  z  t        j                  t                    dt        z  k(  sJ t        ddt        z  dz  t        j                  z   z  t        j                  t                    dt        dz   z  k(  sJ t        ddt        z  dz  dt        j                  z  z   z  t        j                  t                    dt        dz   z  k(  sJ y )Nr   r          )r   r   r   evenoddr   r   complexr#   r!   r   r   r   r
   Halfintegerr$   r%   r&   	test_pow1r2      sq   2'166!9%***2'1558$***2'166!9%A--- $q!t*Q'''$q!t*aiil+s1v555$q!t*affQi(CF222$q!t*ajjm,1111a4(1a.()Q...1a4(1a.(!&&)49991a4(1a.(!**Q-8A===$qs)QVVAY'1T!W9444$qs)QZZ]+qay888 2Q-+Qw6662Q#QUU1Xa%89b1WDDD2Q#QUU1X.2'9992Q#QUU1X.2Q-???2Q- R1q5M111 2"qQVV+,aiil;QwFFF2"qQVV+,aiil;a!e}LLL2"qQqvvX-.		!="ANNNr%   c                     t        ddt        z  dz  dt        j                  z  z
  z  t	        j
                  t                    dt        dz   z  k(  sJ t        ddt        z  dz  dt        j                  z  z
  z  t	        j
                  t                    dt        z  k(  sJ t        t        t              dz  t	        j                  t                    t        dz  k(  sJ t        t        t              dz  t	        j                  t                    t        t              dz  k(  sJ t        t        t              dz        t        t              dz  k(  sJ y )Nr)   r       r   	   r+   )r   r   r
   r0   r   r1   r   r#   r$   r%   r&   	test_pow2r6   :   s    2"qQqvvX-.		!="ANNN2"qQqvvX-.		!="qHHH #a&!)QVVAY'1a4///#a&!)QVVAY'3q619444#a&!)A	)))r%   c            
         t        dd      } t        t        t        t        z  dz  | z              dk(  sJ t        t        t        t        z  dz  | t
        j                  z   z              dk(  sJ t        t        t        t        z  dz  | t        dd      z   z              t        k(  sJ t        t        t        t        z  dz  | t        dd      z   z              t         k(  sJ y )	Nr   T)r1   r    r   r)      r+   )r   r   r   r	   r   r
   r0   r   r   s    r&   test_expr:   D   s    sD!A#bd1fQh- A%%%#bd1fa!&&j)*+r111#bd1fa(1a.0123q888#bd1fa(1a.0123r999r%   c            	         t        t        dt        dk  fd      t        dk        dk(  sJ t        t        dt        dk  fd      t        dk         dk(  sJ t        t        dt        dk  fd      t        dk        t        dt        dk  fd      k(  sJ t        t        dt        dkD  fd      t        dkD        dk(  sJ t        t        dt        dkD  fd      t        dkD         dk(  sJ t        t        dt        dkD  fd      t        dkD        t        dt        dkD  fd      k(  sJ t        t        dt        dk  fd      t        dk        dk(  sJ t        t        dt        dk  fd      t        dk         dk(  sJ t        t        dt        dk  fd      t        dk        t        dt        dk  fd      k(  sJ t        t        dt        dk\  fd      t        dk\        dk(  sJ t        t        dt        dk\  fd      t        dk\         dk(  sJ t        t        dt        dk\  fd      t        dk\        t        dt        dk\  fd      k(  sJ t        t        dt	        t        d      fd      t	        t        d            dk(  sJ t        t        dt	        t        d      fd      t	        dt                    dk(  sJ t        t        dt	        t        d      fd      t	        t        d             dk(  sJ t        t        dt	        t        d      fd      t	        dt                     dk(  sJ t        t        dt	        t        d      fd      t	        t        d            t        dt	        t        d      fd      k(  sJ t        t        dt        t        d      fd      t        t        d            dk(  sJ t        t        dt        t        d      fd      t        t        d             dk(  sJ t        t        dt        t        d      fd      t        t        d            t        dt        t        d      fd      k(  sJ y )Nr   r   )r+   Tr+   )r   r   r   r   r   r   r$   r%   r&   test_Piecewiser<   L   s   )QAJ	2QU<AAA)QAJ	2a!eH=BBB)QAJ	2QU<1a!e*i() ) ))QAJ	2QU<AAA)QAJ	2a!eH=BBB)QAJ	2QU<1a!e*i() ) ))QQK3a1f>!CCC)QQK3qAvY?1DDD)QQK3a1f>1a1f+y)* * *)QQK3a1f>!CCC)QQK3qAvY?1DDD)QQK3a1f>1a1f+y)* * *)Q1aM951aB  )Q1aM951aB  )Q1aM95Aq{C  )Q1aM95Aq{C  )Q1aM951aBaAq]I./ / /)Q1aM951aB  )Q1aM95Aq{C  )Q1aM951aBaAq]I./ / /r%   c                  ,   t        t        t        t              t	        j
                  t              t	        j                  t              z        t        t        t        z        k(  sJ t        t        t        t              t	        j                  t              t	        j                  t              z        t        t        t        z        k(  sJ t        t        t        t              t	        j                  t              t	        j                  t              z        t        t        t        z        t        z
  k(  sJ t        t        t        t              t	        j                  t              t	        j                  t              z        t        t        t        z        t        z   k(  sJ t        t        t        t              t	        j                  t              t	        j                  t              z        t        k(  sJ t        t        t        t              t	        j                  t              t	        j                  t              z        t        dz  k(  sJ t        t        t        t              t	        j                  t              t	        j                  t              z        t         dz  k(  sJ t        t        t        t              t	        j                  t              t	        j                  t              z        t        u sJ y )Nr    )r   r   r   r   r   r#   r!   r   r"   r	   zeror   r$   r%   r&   
test_atan2r?   o   s   %1+qvvay1::a=89T!A#YFFF%1+qzz!}qzz!}<=acJJJ%1+qzz!}qzz!}<=acROOO%1+qzz!}qzz!}<=acROOO%1+qvvay1::a=89R???%1+qzz!}qvvay89RTAAA%1+qzz!}qvvay89bSUBBB%1+qvvay166!945<<<r%   c                     t        t        t              t        j                  t                    t        k(  sJ t        t        t              t        j
                  t                    t        j                  u sJ t        t        t        t        z         t        j                  t              t        j                  t              z        t        t        z   k(  sJ t        t        t        t        z         t        j                  t              t        j
                  t              z        t        k(  sJ t        t        t        t        z        t        j                  t              t        j                  t              z        t        t        z  k(  sJ t        t        t        t        z        t        j                  t              t        j
                  t              z        dk(  sJ t        t        t        t        z  t        z        t        j                  t              t        j                  t              z  t        j                  t              z        t        t        z  t        z  k(  sJ y )Nr   )
r   r   r   r   r#   	imaginaryr
   Zeror   r   r$   r%   r&   test_rerC   z   sc   "Q%#q((("Q%Q(AFF222"QqS'166!9qvvay01QU:::"QqS'166!9q{{1~56!;;;"QqS'166!9qvvay01QU:::"QqS'166!9q{{1~56!;;;"QqSU)QVVAY2QVVAY>?1q519LLLr%   c                     t        t        t              t        j                  t                    t
         t        z  k(  sJ t        t        t              t        j                  t                    t        j                  u sJ t        t        t        t        z         t        j                  t              t        j                  t              z        t
         t        z  t
        t        z  z
  k(  sJ t        t        t        t        z         t        j                  t              t        j                  t              z        t
         t        z  k(  sJ t        t        t        t        z        t        j                  t              t        j                  t              z        t
         t        z  t        z  k(  sJ t        t        t        t        z        t        j                  t              t        j                  t              z        dk(  sJ t        t        dt        z        t        j                  t                    t
         t        z  k(  sJ t        t        t        t        z  t        z        t        j                  t              t        j                  t              z  t        j                  t              z        t
         t        z  t        z  t        z  k(  sJ y )Nr   r   )r   r   r   r   rA   r   r#   r
   rB   r   r   r$   r%   r&   test_imrE      s   "Q%Q(QBqD000"Q%#qvv---"QqS'1;;q>AKKN:;r!taczIII"QqS'166!9q{{1~561"Q$>>>"QqS'1;;q>AFF1I561"Q$q&@@@"QqS'1;;q>AKKN:;q@@@"QqS'1;;q>*qbd222"QqSU)Q[[^akk!n<
++a. RT!VAX& & &r%   c                     t        t        dt        t        t        z  z   z        t        j                  t              t        j                  t              z        t        t        dz  t        dz  z   z  k(  sJ t        t        dt        t        t        z  z   z        t        j                  t              t        j                  t              z        t         t        dz  t        dz  z   z  k(  sJ t        t        t        t        t        z  z   t        t        t        z  z   z        t        j                  t              t        j                  t              z  t        j                  t              z  t        j                  t              z        t        t        z  t        t        z  z
  k(  sJ t        t        t        t        t        z  z   t        t        t        z  z   z        t        j                  t              t        j                  t              z  t        j                  t              z  t        j                  t              z        t        t        z  t        t        z  z   k(  sJ y r   )
r   r   r   r   r   r   r#   r   r   r   r$   r%   r&   test_complexrG      s   "QAaC[/166!9qvvay#89	1a4!Q$;  "QAaC[/166!9qvvay#89	
AqD1a4K  "a!A#g!ac'*+QVVAY-BQVVAY-N
&&). !ac	" " ""a!A#g!ac'*+QVVAY-BQVVAY-N
&&). !ac	" " "r%   c                     t        dd      } t        t        |       t        j                  |             dk(  sJ t        t        |       t        j
                  |             dk(  sJ t        t        |       t        j                  |             dk(  sJ t        t        |       d      t        |       k(  sJ t        t        t        |             t        j                  |             dk(  sJ t        dd      } t        t        |       t        j                  t        |                   t        j                  k(  sJ t        t        |       t        j
                  t        |                   t        j                   k(  sJ t        t        |       d      t        |       k(  sJ t        dd      } t        t        |       t        j                  |             dk(  sJ y )	Nr   Tr#   r   r)   r   )rA   r/   )r   r   r   r   r!   r"   r>   r   nonzeror   r
   ImaginaryUnitr9   s    r&   	test_signrM      s`   s4 A$q'1::a=)Q...$q'1::a=)R///$q'166!9%***$q'4 DG+++$s1v,		!-222sd#A$q'1::be,-@@@$q'1::be,-!//1AAAA$q'4 DG+++sD!A$q'166!9%***r%   c                      t        dd      } t        t        |       t        j                  |             dk(  sJ t        t        |       t        j
                  |             t        k(  sJ y )Nr   TrJ   r   )r   r   r   r   r!   r"   r	   r9   s    r&   test_argrO      sP    sd#A#a&!**Q-(A---#a&!**Q-(B...r%   c                       G fddt                       } d| _        | j                  t        |       j                  k(  sJ y )Nc                   (    e Zd Zd Ze fd       Zy)test_func_args.<locals>.MyClassc                     d| _         y )N 	my_member)selfargss     r&   __init__z(test_func_args.<locals>.MyClass.__init__   s	    DNr%   c                       fd}|S )Nc                  4     |  }j                   |_         |S )NrU   )rX   objMyClassrW   s     r&   my_funcz5test_func_args.<locals>.MyClass.func.<locals>.my_func   s    tn $
r%   r$   )rW   r^   r]   s   ` r&   funcz$test_func_args.<locals>.MyClass.func   s     Nr%   N)__name__
__module____qualname__rY   propertyr_   )r]   s   r&   r]   rR      s    	  
	 
	r%   r]   zA very important value)r   rV   r   )r   r]   s    @r&   test_func_argsrd      s;    $  		A*AK;;&)-----r%   c                     t        t        dt        dk  fd      t        j                  t                    dk(  sJ t        t        dt        dk  fd      t        j
                  t                    dk(  sJ t        t        dt        dkD  fd      t        j                  t                    dk(  sJ t        t        dt        dkD  fd      t        j
                  t                    dk(  sJ y )Nr   r   )r   T)r   r   r   r   r!   r"   r$   r%   r&   test_issue_refine_9384rf      s    )QAJ	2AJJqMBaGGG)QAJ	2AJJqMBaGGG)QAJ	2AJJqMBaGGG)QAJ	2AJJqMBaGGGr%   c                  J     G d dt               }  |        }t        |      sJ y )Nc                       e Zd Zd Zy)"test_eval_refine.<locals>.MockExprc                      y)NTr$   )rW   assumptionss     r&   _eval_refinez/test_eval_refine.<locals>.MockExpr._eval_refine   s    r%   N)r`   ra   rb   rl   r$   r%   r&   MockExprri      s    	r%   rm   )r   r   )rm   mock_objs     r&   test_eval_refinero      s%    4  zH(r%   c                  >   t        t        t        t        z        t	        j
                  t                    } t        t        t        t        z  t        z        t	        j
                  t                    }| t        t        t              z  k(  sJ |t        t        t        t        z        z  k(  sJ t        dd      }t        t        t        |dz  z  t        z        t	        j
                  t                    }|t        |dz  z  t        t              z  k(  sJ y )Ny1TrI   r    )r   r   r   r   r   r!   r   r   )expr1expr2rq   expr3s       r&   test_refine_issue_12724ru      s    3q1u:qzz!}-E3q1uqy>1::a=1EAAJAAE
N"""	T	"B3q2q5y1}%qzz!}5EAAIA&&&&r%   c                     t        ddd      } t        dd      }t        dd      }t        | d   t        j                  |             | d   k(  sJ t        | d   t        j                  |             | d   k(  sJ t        | ||f   t        j                  |             | ||f   k(  sJ t        | ||f   t        j                  |             | ||f   k(  sJ y )	Nr   r+   iT)r!   j)r   r   )r   r   )r   r   r   r   	symmetric)r   rw   rx   s      r&   test_matrixelementrz      s    S!QAst$Ast$A!D'1;;q>*ag555!D'1;;q>*ag555!AqD'1;;q>*a1g555!AqD'1;;q>*a1g555r%   N)8sympy.assumptions.askr   sympy.assumptions.refiner   sympy.core.exprr   sympy.core.numbersr   r   r   r	   sympy.core.singletonr
   sympy.core.symbolr   $sympy.functions.elementary.complexesr   r   r   r   r   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   	sympy.abcr   r   r   r   sympy.core.relationalr   r   $sympy.functions.elementary.piecewiser   "sympy.matrices.expressions.matexprr   r'   r2   r6   r:   r<   r?   rC   rE   rG   rM   rO   rd   rf   ro   ru   rz   r$   r%   r&   <module>r      s    # +   5 5 " $ I I 6 9 B     ( : ;0O>*: /F=M	&"+ /
.&H'6r%   