
    gc%                         d Z 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mZmZmZmZmZ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  ed	          \  Z Z!Z"Z#d
 Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-dS )z?Most of these tests come from the examples in Bronstein's book.    )IRationaloo)symbols)Poly)DifferentialExtensionNonElementaryIntegralException)order_atorder_at_ooweak_normalizernormal_denomspecial_denombound_degreespdesolve_poly_rdeno_cancel_equalcancel_primitive
cancel_exprischDE)raises)xtznzt:3 kc                     t          t          dz  t                    } t          t          dz  dz   dz  t          z  t                    }t          t          dz  dz   dz  t          z  t                    }t          t          dz  dz   dz  t          dz  z  t                    }t          t          dz  dz   dz  t          dz  z  t                    }t          t          t                    }t          dt          dz  z   t                    }t          | |t                    dk    sJ t          ||t                    dk    sJ t          ||t                    dk    sJ t          ||t                    dk    sJ t          ||t                    dk    sJ t          | |t                    d	k    sJ t          ||t                    dk    sJ t          ||t                    dk    sJ t          ||t                    dk    sJ t          ||t                    dk    sJ t          t          d	t                    t          t          t                    t                    t          u sJ t	          t          t          dz  dz
  t                    t          t          dz             t                    t	          t          t          dz
  t                    t          dt                    t                    cxk    rd
k    sn J t	          t          d	t                    t          dt                    t                    t          u sJ d S )N               
   d   %   r   )r   r   r
   r   r   )abcdep1p2s          Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/integrals/tests/test_rde.pytest_order_atr-      s   QT1AadQh]1_a  AadQh]1_a  AadQh^ArE!1%%AadQh_QU"A&&A	aB	a!Q$h		BAr1""""Ar1""""Ar1""""Ar1####Ar1####Ar1""""Ar1""""Ar1""""Ar1####Ar1$$$$DAJJQ

A.."4444tAqD1Ha(($q1u++q99DQNNDAJJ229 9 9 9689 9 9 9 9 9tAqzz41::q11R777777    c            	      V   t          dt          z   t          dz  z  dt          dz  z  z   ddt          z  z
  t          dz  z  z   dt          dz  z  z
  ddt          z  z   t          z  z   t                    } t          t          dz  dt          dz  z  z
  dz   t                    }t          dt          dt                    t          t          t                    gi	          }t	          | ||t
                    }|t          t          dz  t          dz  z
  dt          dz  z  z
  dt          dz  z  z   dt          z  z   dz
  t          d
          t          dt          z   t          dz  z  t          t          z  z   t          d
          t          t          dz   t          d
          ffk    sJ t	          |d         d         |d         d         |          t          dt                    |d         fk    sJ t	          t          dt          dz  z             t          t          dz  dz
  t                    |t
                    }|t          t          dz  dt          dz  z  z
  dz   t                    t          dt          dz  z  dz   t                    t          t          dz  dz
  t                    ffk    sJ t	          |d         d         |d         d         |t
                    t          dt                    |d         fk    sJ t          dt          dt                    t          dt          dz  z             gi	          }t	          t          dt          dz  z             t          t          t                    |t
                    }|t          t          t                    t          dt                    t          dt                    ffk    sJ t	          |d         d         |d         d         |t
                    t          dt                    |d         fk    sJ d S )Nr      r   r$   r   r   D	extensionZZ[x]domainr   )r   r   r   r   r   r   )r%   r(   DErs       r,   test_weak_normalizerr;   (   sJ   a!eQT\AadF"b1Q3h1_4qAv=ac1LaPPAQTAadF]Q""A	#Q

DAJJ/G)H	I	I	IB1b!$$AadQTkAadF*Qq!tV3ac9A=qQQQ	q1uadlQqS !G	4	4	4	a!eQw	'	'	'	)* * * * * 1Q47AaDGR00T!QZZ14FFFFFQAXQTAXq(9(92qAAAadQq!tVma'++d2ad7Q;.B.BDAPQSTDUDU-VWWWWW1Q47AaDGR33Q

AaD7IIIII	#Q

DQTNN/K)L	M	M	MBQAXQ

B::Aad1ajj$q!**5666661Q47AaDGR33Q

AaD7IIIIIIIr.   c                  R   t          dt          dt                    gi          t          t          fd           t          t
          dz  dz   t
                    t          dt
                    }} t          dt
                    t          t
          dz  t
                    }}t          dt          dt                    t          t
          dz  dz   t
                    gi          t          | |||          t          t
          t
                    t          t
          dz  t
          dz  z
  t
          z   dz
  t
                    t          dt
                    ft          dt
                    t          dt
                    ft          t
          t
                    fk    sJ d S )Nr2   r   r3   c            	          t          t          dt                    t          dt                    t          dt                    t          t          t                               S Nr   )r   r   r   r9   s   r,   <lambda>z#test_normal_denom.<locals>.<lambda><   s>    <Q

DQRTUJJAJJQ

B4  4  r.   r   r   )r   r   r   r   r	   r   r   )fafdgagdr9   s       @r,   test_normal_denomrE   :   sT   	#Q

|)<	=	=	=B
) ,  ,  ,  ,  ! ! !!Q$(AQ

B!QZZadAB	#Q

DA1<M<M/N)O	P	P	PBBB++	ad1a4!Q$;?Q.22DAJJ?$q!**Q

B!QZZ	!! ! ! ! ! !r.   c            
          t          dt          dt                    t          t          t                    gi           t	          t          dt                    t          t          dz  t                    t          dt                    t          t          dz  dz
  t                    t          t          t                               t          dt                    t          t          dz  dz
  t                    t          t          dz  dz
  t                    t          t          t                    fk    sJ t          dt          dt                    t          dt          z  t
          z  t
                    t          t          t          z  t          z  t                    gi            	                                 t	          t          dt
                    t          t          t          z  t
                    t          dt
                    t          t
          t
                    t          dt
                               t          dt
          d          t          t          t          z  t
          d          t          t
          t
          d          t          dt
          d          fk    sJ t	          t          dt                    t          t          dz  t                    t          dt                    t          t          dz  dz
  t                    t          t          t                     d	
          t          dt          t
          d          t          t          dz  t
          t          d          t          t          t          t
          d          t          dt
          d          fk    sJ t          t           fd           d S )Nr2   r   r3   r   r1   ZZr6   z	ZZ_I[k,x]tancaser5   c            
         t          t          dt                    t          t          dz  t                    t          dt                    t          t          dz  dz
  t                    t          t          t                     d          S )Nr   r   unrecognized_caserI   )r   r   r   r?   s   r,   r@   z$test_special_denom.<locals>.<lambda>_   sd    }T!QZZadAQPQ

TXYZ\]Y]`aYacdTeTeAJJ, .  .  . r.   )r   r   r   r   r   t0r   kt1decrement_levelr   
ValueErrorr?   s   @r,   test_special_denomrR   F   s   	#Q

DAJJ/G)H	I	I	IBaT!Q$]]DAJJQTAXq@Q@QAJJ 	aT!Q$(A&&QTAXq(9(941::FG G G G 
#Q

DAb"<M<MQqSVR0 * 
 
 
Bad1Q3mmT!R[[$r2,,BKK 	aD	!	!	!4!R#D#D#DRD)))42d+C+C+C	EE E E E aT!Q$]]DAJJQTAXq@Q@QAJJ     Ar$'''adB')J)J)JAr$'''aD)A)A)ACC C C C
 : . . . . / / / / /r.   c                     t          dt          dt                    t          t          t          dz  z  t                    t          dt          z  t                    gi          } t          t          t          dz  t                    t          dt          dz  z  t          dz  z  dt          z  z    t                    t          dt          z  dz
  t          dz  z  t          t          z   t          z  t          dz  z  z   t          dt          dz  z  z   dz  t          z  t          dz  z  z
  t          t          z  z   t                    |           dk    sJ d S )Nr2   r   r   r3   r   r   )r   r   r   rM   r   r   r?   s    r,   test_bound_degree_failrT   c   s   	#Q

R1Wb4!Q<<0) ** 
+ 
+ 
+BQT1ta1fQTkAaC.?,@!'D'DacAgq!t^rAvqjAo-a1fa0A!Q$0FF1L		 	      r.   c                  f   t          dt          dt                    gi          } t          t          dt                    t          dt          z  t                    t          dt                    |           dk    sJ t          dt          dt                    t          t          dz  dz   t                    gi          } t          t          t          t                    t          t          dz
  t          dz  dz   z  t                    t          dt                    |           dk    sJ d S )Nr2   r   r3   r1   r   r   )r   r   r   r   r   r?   s    r,   test_bound_degreerV   l   s    	#Q

|)<	=	=	=BQ

DAqMM41::rBBaGGGG 
#Q

DA1<M<M/N)O	P	P	PBQ

D!a%!Q$();Q$?$?aRPPTUUUUUUUr.   c                      t          dt          dt                    t          t          dz  dz   t                    gi           t	          t
           fd           t          dt          dt                    t          t          t                    gi           t          t          t          dz  t          t          z  dz  z   t          dz  z   t                    t          t          dz  t          dz  z  dt          z  dz
  t          z  z   t                    t          t          dz  t          dz  z  dt          z  dz
  t          z  z   t                    d           t          dt                    t          dt                    dt          dt                    t          dt          d          fk    sJ t          dt          dt                    t          t          t          dz  z  t                    t          dt          z  t                    gi           t          t          t          dz  t                    t          t          dz   t          dz  z  dt          z  z
  t                    t          dt          z  dz
  t          d	z  z  t          t          z   t          z  t          d
z  z  z   t          d	t          dz  z  z   dt          z  z  t          dz  z  z
  t          t          z  z   t                    d
           t          dt                    t          dt                    dt          dt                    t          t          t          dz  z  dz  t          dz  t          dz  z  z   t          dz  t          z  z
  t          d          fk    sJ t          dt          dt                    gi           t          t          t          dz  t          z   dz   t                    t          dt          z  dz
  t                    t          t          dz  dz  d
t          d	z  z  d	z  z   t          d
z  z   t          dz  z
  dz   t                    d	           t          dt          d          t          t          dz  t          dd	          z
  t                    dt          t          dz  t          z   dz   t                    t          t          t          dd	          z  t                    fk    sJ t          t          t          dz  t          z   dz   t                    t          dt          z  dz
  t                    t          t          dz  dz  d
t          d	z  z  d	z  z   t          d
z  z   t          dz  z
  dz   t                    t                     t          dt          d          t          t          dz  t          dd	          z
  t                    dt          z   t          t          dz  t          z   dz   t                    t          t          t          dd	          z  t                    fk    sJ t          dt          dt                    t          dt                    gi           t	          t
           fd           t          dt          dt                    gi           t          t          t          dz  t          z
  t                    t          dt                    t          dt          d	z  z  dt          d
z  z  z
  dt          dz  z  z   t                    d	           t          dt          d          t          dt                    dt          dt                    t          d
t          d
z  z  dt          dz  z  z
  t          d          fk    sJ t          t          t          dz  t          z
  t                    t          t          dz  dt          z  z
  d
z   t                    t          t          dz  t          dz  z
  dt          d	z  z  z
  d
t          d
z  z  z   t          dz  z
  t                    d           t          dt          d          t          t          dz   t          d          dt          t          d	z  t          d
z  z
  t                    t          t          d
z  t          dz  z
  t          d          fk    sJ d S )Nr2   r   r   r3   c                      t          t          t          t                    t          t          dz
  t          dz  dz   z  t                    t          dt                    d           S Nr   r   r   r   r   r   r?   s   r,   r@   ztest_spde.<locals>.<lambda>   sO    4Q

D!a%RSUVRVYZRZI[]^D_D_aefgijakakmnpr3s3s r.   r   zZZ(x)r6   r   r   zZZ(x,t0)r1   r0   QQc                      t          t          t          dz
  t          dz  dz   dz  z  t                    t          t          dz
  t          dz  dz   z  t                    t          dt                    d           S rY   rZ   r?   s   r,   r@   ztest_spde.<locals>.<lambda>   sz    4a!eadQhQR]=RTU8V8VX\^_bc^cfgijfjmnfn]oqrXsXsuyz{}~uu  BC  EG  4H  4H r.   	   r!   rG      r    )
r   r   r   r   r   r	   r   rM   r   r   r?   s   @r,   	test_spder_   ~   sg   	#Q

DA1<M<M/N)O	P	P	PB
)+s+s+s+sttt	#Q

DAJJ/G)H	I	I	IBQTAaCE\AqD(!,,d1a419!a{3JA.N.NQT!Q$Y!A#'1$a((!R1 1	aT!QZZDAJJQ'0J0J0JKL L L L 
#Q

DAqD"<M<MtTUVWTWYZ||/\)]	^	^	^BQT1tQTE!Q$J1$4a88!A#'1a4261*QT/	)R!AqD&[1Q3,?1,D	Dqs	JANNPQSUW W	aT!QZZDAJJR1WQYAad"QT!V+QzBBB	DD D D D 
#Q

|)<	=	=	=BQTAX\1%%tBqD1Ha'8'8$q!tAvadF1H@!t@d@@ !;# ;#$%r+ +	a4	 	 	 $qsXa^^';Q"?"?DAPQTUWXDYDY[_`abjklnobpbp`prs[t[tuv v v v QTAX\1%%tBqD1Ha'8'8$q!tAvadF1H@!t@d@@ !;# ;#$%r+ +	a4	 	 	 $qsXa^^';Q"?"?aaQRdUVhYZl\]I^I^`defgopqstgugueuwx`y`yz{ { { { 
#Q

DAJJ/G)H	I	I	IB
)  ,H  ,H  ,H  ,H  I  I  I	#Q

|)<	=	=	=BQTAXq!!41::tAadFR1W4DqAv4Mq/Q/QSTVXYY	a4	 	 	 $q!**aaT!AqD&1QPQT6/ST]a=b=b=bcd d d dQTAXq!!41qs
Q#:#:DA1qQRTUQUvAUXYZ[]^Z^X^A^abdeaeAegh<i<iklnpqq	a4	 	 	 $q1ua"="="=q$q!taQRd{TUBVBVX\]^`a]adeghdh]hjktxXyXyXyz{ { { { { {r.   c            
         t          dt          dt                    t          dt          dz  z   t                    gi          } t	          t          t          dz  dz   t                    t          t          dz  t          dz   t          dz  z  z   t          z   t          z   dz   t                    t
          |           t          t          t          z   t                    k    sJ t          dt          dt                    gi          } t	          t          dt                    t          t          dz  t          dd          z
  t                    t
          |           t          t          dz  dz  t          dz  z
  t                    k    sJ t          dt          dt                    t          t          dz  dz   t                    gi          } t	          t          dt                    t          t          dz  dt          z  z   dz   t                    d|           t          t          dz   t          t                    k    sJ t          dt          dt                    t          t          dz  dz   t                    gi          } t          t          dt          z
  t                    t          t          dz  t          dz  z   dt          z  t          z  z
  dt          z  z
  t                    t
          |           t          t          dz  t                    dt          ddt          z  z
  t          z  dt          z  z
  t                    fk    sJ d S )	Nr2   r   r   r3   r   r   r   r1   )r   r   r   r   r   r   r   r   r?   s    r,   test_solve_poly_rde_no_cancelra      s   	#Q

DQT1<M<M/N)O	P	P	PB$q!tax++T!Q$!a%A2E2IA2MPQ2QST-U-U AE1~~    
#Q

|)<	=	=	=B$q!**d1Q3!Q+?&C&CRLLQT!Vac\1   	#Q

DA1<M<M/N)O	P	P	PB$q!**d1a4!A#:>1&=&=q"EEQUAq    
#Q

DA1<M<M/N)O	P	P	PB4Aq>>A1qs1u	qs	"A&&B0 0	adA4ac1qs 2A6678 8 8 8 8 8r.   c                      t          dt          dt                    t          t          t                    gi           t	          t          dt          z  t                    t          dt          z  t                    d           t          dt                    k    sJ t	          t          dt          z  t                    t          ddt          z  z   t          z  t                    d           t          t          t                    k    sJ t          dt          dt                    t          dt          z  t                    gi           t          t           fd           t          t          dt                    t          t          dt          z  z   t                    d           t          t          t                    k    sJ t          t          dt          z  t                    t          dt          z  t          dz  z  dt          z  t          z  z   t                    d           t          t          dz  t                    k    sJ d S )	Nr2   r   r3   r   r   c                      t          t          dt                    t          t          t                    t                     S r>   )r   r   r   r   r?   s   r,   r@   z,test_solve_poly_rde_cancel.<locals>.<lambda>   s-    3CDAJJPTUVXYPZPZ\^`b3c3c r.   r   r   )r   r   r   r   r   r   r	   r   r?   s   @r,   test_solve_poly_rde_cancelrd      s   	#Q

DAJJ/G)H	I	I	IBd1Q3llD1aLL!R88Q

   d1Q3llD!ac'1a$8$8!R@@Q

   
 
#Q

D1aLL/I)J	K	K	KB )+c+c+c+cdddDAJJQ1Wa(8(8!R@@Q

   D1aLL$qs1a4x!A#a%/?*C*CQKKQT1     r.   c            
         t          dt          dt                    t          t          t                    gi          } |                                  t          t          dt          z  t                    t          dt                    t          ddt          z  z
  dt          dz  z  z
  t                    t          dt                    |           t          t          dz   t                    t          dt                    fk    sJ d S )Nr2   r   r3   r1   r   )r   r   r   r   rP   r   r?   s    r,   test_rischDErf      s    	#Q

DAJJ/G)H	I	I	IB41a==$q!**d1qs7Qq!tV3CQ.G.GAJJ 	a!eQa$% % % % % %r.   N).__doc__sympy.core.numbersr   r   r   sympy.core.symbolr   sympy.polys.polytoolsr   sympy.integrals.rischr   r	   sympy.integrals.rder
   r   r   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   	sympy.abcr   r   r   r   rM   rO   t2rN   r-   r;   rE   rR   rT   rV   r_   ra   rd   rf    r.   r,   <module>rq      s   E E 0 0 0 0 0 0 0 0 0 0 % % % % % % & & & & & &$ $ $ $ $ $ $ $< < < < < < < < < < < < < < < < < < < < < < < < < < < < ( ' ' ' ' '                          BA8 8 8.J J J$	! 	! 	!/ / /:  V V V${ { {68 8 8&  0% % % % %r.   