
    \h                        S SK JrJrJrJrJrJr  S SKJrJ	r	  S SK
Jr  S SKJrJrJr  S SKJr  S SKJrJr  S SKJrJr  S SKJrJr  S S	KJr  S S
KJrJr  S SK J!r!  S SK"J#r#  S SK$J%r%J&r&J'r'J(r(  S SK)J*r*  S SK+J,r,J-r-  S SK.J/r/  S SK0J1r1  S SK2J3r3  S SK4J5r5  S SK6J7r7  S SK8J9r9  S r:S r;S r<S r=S r>S r?S r@S rAS rBS rCS  rDS! rES" rFS# rGS$ rHS% rIS& rJS' rKS( rLS) rMS* rNS+ rOS, rPS- rQS. rRS/ rSS0 rTS1 rUS2 rVg3)4    )DifferentialOperatorHolonomicFunctionDifferentialOperators
from_hyperfrom_meijergexpr_to_holonomic)RecurrenceOperatorsHolonomicSequence)
EulerGamma)IRationalpi)S)Symbolsymbols)explog)asinhcosh)sqrt)cossin)besselj)beta)CiSierferfc)gamma)hypermeijerg)sstr)O)hyperexpand)ZZ)QQ)RRc            	      `   [        S5      n [        [        R                  " U 5      S5      u  pX!R                  :X  d   eU[        UR                  R                  UR                  R                  /U5      :X  d   eX-  U S-  US-  -  -   [        SX S-  /U5      :X  d   eU S-  S-   U-   U US-  -  -   [        U S-  S-   SSSSU /U5      :X  d   eX-  U S-  -   S-   X S-  U -   -  -
  S-  SU S	-  -  S
U S-  -  U-  -   SU S-  -  US-  -  -   U S-  * US-  -  -   :X  d   eXS-  -  U S-  S-   US-  -  -   X S-  -   -  nSU -  SU S-  -  U-  -   U S-  US-  -  -   SU S-  -  U -   S-   US-  -  -   SU S-  -  SU -  -   US-  -  -   U S-  SU S-  -  -   US-  -  -   U S-  S-   US	-  -  -   nX4:X  d   eg )NxDx   r            i   i   i   	         <   
      )	r   r   r&   old_poly_ringderivative_operatorr   basezerooner)   Rr*   pqs        \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/holonomic/tests/test_holonomic.pytest_DifferentialOperatorrB      sM   A!""2"21"5t<EA&&&&&%qvv{{AFFJJ&?CCCC6AqD2q5L $8!Q1q$IIIIqD1H?Q
A %q!taxAq!Q&?CD D DFQTMAdQh/!3ad
	q!tr8 1a4Z2q508156TERU?8C C C C	
UadQh"a%'	'BAI6A	
Q1q!t8r/!QTRUN2	adQ	r1u$	%(*QT	BF(:b!e'C	D	
AAqDBE!	"%&TAXQ$6	7A 6M6    c                  B   [        S5      n [        [        R                  " U 5      S5      u  p[	        US-  U -  U 5      n[	        SU-  XS-  -  -   U 5      nX4:X  d   e[	        X-  S-   U 5      n[	        US-   U 5      n[	        U S-
  U S-  S-
  U-  -   U S-  U -
  US-  -  -   U 5      nX4-   U:X  d   e[	        X-  US-  U S-  S-   -  -   U 5      n[	        US-
  U 5      n[	        SU S-  -  SU -  -
  S-
  S	U S-  -  S
U S-  -  -
  SU -  -
  S-   U-  -   SU S-  -  SU S-  -  -
  SU -  -   S-
  US-  -  -   SU S-  -  SU S-  -  -   SU S-  -  -   SU -  -   S-   US-  -  -   U 5      nX4-   U:X  d   e[	        US-  S-
  U 5      n[	        U S-  U-   U 5      n[	        U S-  * SU S-  -  -   SU S-  -  -
  SU S-  -  -   U S-  -
  SU S-  -  -
  U S-  * SU S-  -  -   SU S -  -  -
  S!U S-  -  -   S-
  U-  -   U S-  SU S-  -  -
  SU S-  -  -   SU S-  -  -
  U S-  -   SU S-  -  -   US-  -  -   U S-  SU S-  -  -
  SU S -  -  -   S!U S-  -  -
  S-   US-  -  -   U 5      nX4-   U:X  d   eU S-  SU -  -   S"-   nU S-  S U -  -
  S-   nX2-  UR                  5       -
  nXB-  UR                  5       -
  n[	        X05      [	        X@5      -   n[	        SU S-  -  SU -  -   S-   S#U S-  -  SU S-  -  -
  S$U -  -
  S-   U-  -   U S-  SU S-  -  -   S%U S-  -  -   SU -  -
  S&-
  US-  -  -   U 5      nXV:X  d   eg )'Nr)   r*   r+   r,   r.   i~      iy   i     ir3         r2      &   r7   (   r-      -   i  r6   i'  r/   iv        r0      r1   >      G   )r   r   r%   r8   r   diff)r)   r>   r*   r?   r@   rss          rA   test_HolonomicFunction_additionrZ   +   sG   A!""2"21"5t<EA"a%!)Q'A1(aq5[0!4A6M6!&1*a(A"q&!$A1q5QTAXO3q!tax2q56HH!LA5A::!&2q5AqD1H#55q9A"q&!$A3A:a/#5$A+aQRd
:RUX[\U\:\_b:bfh9hh1*rAqDy(261C72q5@Aad(R!Q$Y&ad2R!V;R?2q5HIJK	MA 5A::"a%!)Q'A!Q$)Q'AArE6Bq"uH,s1b5y8419Dq!tKcRSUVRVhV
R%"QU(	SAX	%AqD	01	4b89<=rEBq"uH<LsSTVXSXy<XQT	=qD=q!t8=$%'U<++./ebBh.>QT.ICPQSTPTH.T	/
q5. 	A 3!8O8	1qs
QA	1qs
QA	qvvxA	qvvxA!"3A"99A1QT6BqD=2-"QT'Bq!tG2Cbd2JR2OQS1SS	
A!Q$AqD	 2a4	'"	,b!e3456	8A6M6rC   c                     [        S5      n [        [        R                  " U 5      S5      u  p[	        X -   XS-  -  -   U 5      n[	        X-  X -  -   US-  -   U 5      n[	        SU S-  -  SU S-  -  -   SU S-  -  -   S-   SU S	-  -  SU S-  -  -
  SU -  -   U-  -   SU S-  -  S
U S-  -  -   SU S-  -  -   S-   US-  -  -   SU S	-  -  SU S-  -  -   SU -  -   US-  -  -   SU S-  -  U S-  -   US-  -  -   U 5      nX4-  U:X  d   e[	        US-  S-   U 5      n[	        US-
  U 5      n[	        SSU-  -   SUS-  -  -   U 5      nX4-  U:X  d   e[	        US-  S-   U -   U-   U 5      n[	        X -  S-
  S-  U 5      n[	        SU S-  -  SU S-  -  -   SU S	-  -  -   SU S-  -  -   SU S-  -  -
  SU S-  -  -
  SU -  -
  S-
  SU S-  -  SU S	-  -  -   SU S-  -  -   SU S-  -  -
  SU S-  -  -
  SU -  -
  S-
  U-  -   SU S-  -  SU S	-  -  -   SU S-  -  -   SU S-  -  -
  SU S-  -  -
  SU -  -
  S-
  US-  -  -   SU S	-  -  SU S-  -  -   SU S-  -  -   SU S-  -  -
  SU -  -
  US-  -  -   SU S	-  -  SU S-  -  -   U S-  -
  US-  -  -   U 5      nX4-  U:X  d   e[	        XS-  -  S-
  U 5      n[	        X -  U -
  U 5      n[	        U S-
  SU -  S-   U-  -   XS-  -  -   U 5      nX4-  U:X  d   eg )Nr)   r*   r+   r1   r/   r3   r.   rI   r-   r4      r,   r0   rP         rN   rK   r6   )r   r   r%   r8   r   r)   r>   r*   r?   r@   rX   s         rA   %test_HolonomicFunction_multiplicationra   M   s   A!""2"21"5t<EA"$qQw,*A!$rt)BE/1-A1QT6AadF?Qq!tV3a7Bq!tGa1f<LrRSt<SUW;WW	
1a4"QT'	Bq!tG	#a	'Q./23AqD&1QT6/AaC2GQ1NO	
1a4!Q$A 	"A 3!8O8"a%'1%A"Q$"A1R-1b!e)3Q7A3!8O8"a%'!)B,*A246A+q)A1QT6Bq!tG+bAg5!Q$>1a4G!AqD&PSTUVSVVYZZ	
1a4"QT'	Bq!tG	#a1f	,r!Q$w	61	<q	@"DE	
1a4"QT'	Bq!tG	#a1f	,qAv	5!	;a	?QFGJKAqD&q!tGK1fK AvK&()!K,-/UJ33 781fqAvo16LbRSe5ST VW	XA 3!8O8!E'!)Q'A"$q&!$A1q5RTAXrM1QAI=qAA3!8O8rC   c                      [        S5      n [        [        R                  " U 5      S5      u  p[	        X -   XS-  -  -   U 5      n[	        X 5      n[        S5       H  nXCU-  :X  d   eXC-  nM     g )Nr)   r*   r+   r6   )r   r   r%   r8   r   range)r)   r>   r*   r?   ans         rA   test_HolonomicFunction_powerrf   g   si    A!""2"21"5t<EA"$qQw,*A" A2YqDyy	 rC   c            
      
   [        S5      n [        [        R                  " U 5      S5      u  p[	        US-
  U SS/5      n[	        US-  S-   U SSS/5      n[	        SU-   US-  -
  US-  -   U S/ SQ5      nX4-   U:X  d   e[	        X -
  US-  -   U SSS/5      n[	        US-  U -   U SSS/5      n[	        U S	-  * U S-  S	-  -
  U S-  -
  [        SS	5      -   U S-  U S-  S	-  -   U [        SS	5      -  -   S-   U-  -   U [        S
S5      -  [        SS	5      -   US-  -  -   U S-  U [        SS	5      -  -
  [        SS	5      -   US-  -  -   U S-  U S	-  -   [        R                  -   US	-  -  -   U S/ SQ5      nX4-   U:X  d   e[	        US-  S	U -  U-  -   U S-  -   U SSS	/5      n[	        US-  S-   U SSS/5      n[	        U S-  SU S	-  -  -   SU S-  -  -
  S-
  S	U S-  -  SU S-  -  -   SU -  -
  U-  -   U S-  SU S	-  -  -   SU S-  -  -   S-
  US-  -  -   S	U S-  -  SU S-  -  -   SU -  -
  US-  -  -   U S	-  SU S-  -  -   S-
  US	-  -  -   U S/ SQ5      nX4-   U:X  d   e[	        US-  U -   U S/ SQ5      n[	        US-
  U SS/5      n[	        U S-  * U -
  S-   U S-  U -   U-  -   U * S-
  US-  -  -   U S-   US	-  -  -   U S/ SQ5      nX4-   U:X  d   e[        [        U 5      5      n[        SU -  SS9n[	        U S-  S-   U S-  SU -  -   U-  -   U S-  S-   US-  -  -   U S-  SU -  -   US-  -  -   U S[        S5      S-   S[        S5      -   [        S5      * S-   /5      nX4-   U:X  d   e[        S5      n[        [        U 5      5      n[        [        U S-  U -
  5      5      nX4-   R                  5       R                  U[        * S-  5      R                  5       nU[        [        U 5      -  [        U * S-   5      -  [        U 5      -   :X  d   eg )Nr)   r*   r,   r   r.   r+   )r3   r.   r+   r3   r0   )r+   r+   r]   r+   r/   r-   $       r2   r6   )r3   r-   rh   i)r.   r   r,   )r3   r,   r+   x0C_1)r   r   r&   r8   r   r   r   Halfr   r   r   r   to_exprsubsr   expand)r)   r>   r*   r?   r@   rX   ro   s          rA   test_addition_initial_conditionrt   q   s   A!""2"21"5t<EA"Q$1qc*A"a%'1a!Q0A"r'BE/BE11aCA5A::"&2q5.!QA7A"a%!)QAq62AAqD51a46>AqD08Aq>AadQPQTRSVmVWX`abdeXfVfFfijFjlnEnn	
8B?	Xa^	+RU2367dQx1~=M6MPXYZ\]P^6^`bde`e5efijlmimpqrspsisvwv|v|i|  A  CD  D  iDD FG  IJ  LY	ZA5A::"a%!A#b&.1a4/A1v>A"a%!)QAq62A1a4!AqD&=1QT61A5!AqD&2ad7:JRPQT:QSU9UU
Q$1a4-!AqD&
 1
$b!e	+,/0Av1a4/?"Q$/FA.MNQRTUQUq!tGRRQQ !1o	7A 5A::"a%!)Q95A"q&!Q,AAqD519q=QTAXrM9aR!VRUNJ	
QA!^	-A5A::#a&!A!A#!$A1a4!81qs
B6!Q$(BE9IIQPQTTUVWTWZY[]^Y^L^^	1s1vz2A;Q!4	6A5A::
%.C$q'"A$q!tAv,'A	
sQBqD)002A$q'	$rAv,&a0000rC   c            
      	   [        S5      n [        [        R                  " U 5      S5      u  p[	        US-  X-  -   S-
  U SSS/5      n[	        US-  S-   U SSS/5      n[	        U S-  SU S-  -  -   S	-   SU -  U-  -   U S-  S
U S-  -  -   S-   US-  -  -   SU S-  -  SU -  -   US-  -  -   U S-  S-   US-  -  -   U S/ SQ5      nX4-  U:X  d   e[	        US-  U -   U SSS/5      n[	        US-  U S-  -
  U S/ SQ5      n[	        U S-  SU S-  -  S-  -
  SU S-  -  S-  -
  SU S-  -  S
-  -
  SU S-  -  S
-  -
  SU S-  -  S-  -   SU S-  -  S
-  -   SU -  -   [        SS5      -   SU S-  -  SU S-  -  S
-  -
  SU S-  -  S
-  -
  SU S-  -  S
-  -
  SU S-  -  S
-  -   SU S-  -  -   U [        SS
5      -  -   S-
  U-  -   SU S-  -  SU S-  -  S
-  -
  SU S-  -  S
-  -   SU S-  -  S-  -   S U S-  -  S
-  -   U [        S!S5      -  -
  US-  -  -   S"U S-  -  SU S-  -  S-  -   SU S-  -  S-  -
  S!U S-  -  S
-  -
  [        S#S
5      -   US-  -  -   SU S-  -  S$U S-  -  S
-  -
  SU S-  -  S
-  -
  SU S-  -  -   U [        SS
5      -  -
  [        SS5      -
  US-  -  -   S%U S-  -  S$U S-  -  S
-  -   U [        SS5      -  -   US-  -  -   U S-  S$U S-  -  S-  -
  SU S-  -  S-  -
  [        SS
5      -   US-  -  -   U S/ S&Q5      nX4-  U:X  d   e[	        US-
  U SS/5      n[	        US-  S-   U SSS/5      n[	        SSU-  -
  US-  -   U SSS/5      nX4-  U:X  d   e[	        XS-  -  S-   SU-  -   U SSS/5      n[	        U S-
  S"U -  S-   U-  -   XS-  -  -   U SSS/5      nX4-  U:X  d   e[	        US-  S-
  U SSS/5      n[	        US-  S-   U S/ S'Q5      n[	        SU-  SUS-  -  -   SUS-  -  -   SUS-  -  -
  US-  -   U S/ S(Q5      nX4-  U:X  d   e[        [        U 5      5      n[        SU -  SS)9n[	        U SU-  -   XS-  -  -   U S[        S5      [        S5      * [        S5      -   /5      nX4-  U:X  d   e[        [        U 5      5      n[        [        U S-  U -
  5      5      nX4-  R                  5       nU[        U -  [        U * S-   5      -  :X  d   eg )*Nr)   r*   r+   r,   r   r.   r3   rJ   r5   r2   r4   rN   r6   )r.   r3   r+   r.   )r.   r.   r.   r1   %   r0      r/      r-         i  rM      b      R   L      P   r]      @   rS   )r.   r.   r.   ri   ii)r,   r+   r,   )r,   r-   rJ      r   r+   rm   )r   r   r&   r8   r   r   r   r   r   r   rq   r   r`   s         rA   %test_multiplication_initial_conditionr      s   A!""2"21"5t<EA"a%!$,*Aq1a&9A"a%!)QAq62A1a4"QT'>B.!A#b&8AqD1QT6MB<NPRTUPU;UU	
1a4"Q$A!"ABE 1234a	GA5A::"a%!)QAq62A"a%!Q$,1i8A1a4"QT'"*,r!Q$wrz9C1HQJFQPQTRSSAqD!Q$hqj!#$Q3')1"a9=>q!tVc!Q$hqj=PSUVWYZVZSZ[\S\=\_abcefbf_fgh_h=h	!Q$q>ad7>xA.>/13>457=88;<QT6Bq!tGAI;MPRSTVWSWPWXYPY;Y\]^_ab^b\bcd\d;dAqD
<xA&<'(*A;.. 24AqD3q!t8B;1F1a4PQ1QSUVWYZVZSZ[\S\1\_ghkmn_o1oqsuvqv0vw 
1a4"QT'!)	bAgai	'!AqD&	01Xb!_3D	DxPRTU	VXZ\]X]]	^ bddeghdhahkmnoqrnrkrstktathq!nb !ea$	$
 ()!tbAgbj'81QT6!8'ChrSTo'UWY[\W\&\]
 _`abd{	}A 5A::"q&!Q,A"a%!)QAq62A!QrT'BE/1a!Q8A5A::!E'A+",aAq6:A1q5RTAXrM1A!eG;QAq6JA5A::"a%!)QAq62A"a%!)Q95A!B$2q5.1RU72Qr1uW<r1uDaLabA5A::#a&!A!A#!$A!ad(Q1uW,aSVc!fWs1v=M4NOA5A::$q'"A$q!tAv,'A	
A!D!aL    rC   c                  l   [        S5      n [        [        R                  " U 5      S5      u  p[	        US-
  U 5      R                  U S-  U -   5      n[	        SU -  S-
  U-   U 5      nX4:X  d   e[	        US-  S-   U 5      R                  U S-  U S-  -   S-   5      n[	        SU S-  -  S	U S
-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  S-
  U-  -   SU S-  -  SU -  -   US-  -  -   U 5      nX4:X  d   e[	        US-  U -  U -   U 5      R                  SU S-  -  U S-  -   S-   5      n[	        SU S
-  -  SU S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  SU S-  -  -   SU S-  -  -   SU -  -
  S-
  U-  -   SU S-  -  SU S-  -  -   U S-  -   SU S-  -  -   U -   US-  -  -   U 5      nX4:X  d   e[	        US-  S-   U 5      R                  SU S-  -
  5      n[	        SU S-  -  U-
  XS-  -  -   U 5      nX4:X  d   e[	        US-  S-   U 5      R                  U SU S-  S-   -  -
  5      n[	        U S-  SU S-  -  -   SU S
-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   S U S-  -  -   SU -  -   S-   SU S-  -  S!U S-  -  -   SU S-  -  -   S-
  U-  -   U S-  SU S-  -  -   SU S
-  -  -   SU S-  -  -   SU S-  -  -   S"U S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   SU S-  -  -   SU -  -   S-   US-  -  -   U 5      nX4:X  d   eg )#Nr)   r*   r,   r+   r]   r-   }   r\   rF   r2   r5   r/   r1   r.   ir3      iD     r0      p   rj   rI   r^   r6   rK   0   D   H   o   6   rk   r4   )r   r   r%   r8   r   composition)r)   r>   r*   r?   rX   s        rA   "test_HolonomicFunction_compositionr      s}   A!""2"21"5t<EA"Q$"..q!tAv6A2a4!8r/1-A6M6"a%'1%11!Q$q!t)A+>A3q"u9s1a4x/"QT'9AadFBs1a4xRS|UWFWW	
1a4!A#r1u	!A6M6"a%'!)Q'33AadF1a4KMBA3q!t8c!Q$h.QT9C1HDs1a4xO
1a4AqD&1Wr!Q$w.1a47!A#=A2EFIJ1a4RSTUWXTXRX	1JAvJJq5I!!"#	%A 6M6"a%'1%11!AqD&9A1QT6R-!E'115A6M6"a%'1%11!aAl2BCA1b51QU7?R1W4r!Q$w>AqDH2aQRd7R
1a4ad( AX&(*1a4024Q$79:;?A!Q$wAqD?P
1a4@@?b51QU7?Qq!tV3bAg=1a4G"QPQT'QTVWXZ[W[T[[
1a4QT'adF#%&qS)+,-.0!e44 67	8A 6M6rC   c                     [        S5      n [        [        R                  " U 5      S5      u  p[	        SS/[        SS5      /U S-  S-  5      n[        SU -  SU S-  -  S-
  U-  -   U S-  SU -  -
  US-  -  -   U SS[        S5      -  [        -  S	-  S
[        S5      -  [        -  S-  [        SS5      -   /5      n[        U5      nXT:X  d   e[        [	        S/[        SS5      /U S-  S-  5      5      n[        U * U S-  * S-  S-   U-  -   XS-  -  -   U 5      nSn[        UR                  5      U:X  d   eUR                  UR                  :X  d   eg )Nr)   r*   r,   r.   r+   r3   r-   r1   r2   rS   rw   z?[sqrt(pi)*exp(1/4)*erf(1/2), -sqrt(pi)*exp(1/4)*erf(1/2)/2 + 1])r   r   r&   r8   r    r   r   r   r   r   r"   y0annihilator)r)   r>   r*   r?   r@   rX   r   s          rA   test_from_hyperr      su   A!""2"21"5t<EAq!fx1~&1Q/A1Q31QT6A:r/1QTAaCZQ4FF1qQUVWQXyY[|\]~_abfghbi_ijl_lmo_orz{|~  sA  `A  OB  	CA1A6M65!x1~.1Q78A1"Aa!R//!E'91=A	JB:==AMM)))rC   c                  T   [        S5      n [        [        R                  " U 5      S5      u  p[	        [        / [        SS5      /4[        R                  /[        R                  S/4U 5      5      n[        U S-  [        SS5      -
  U S-  * U S-  -   U-  -   U S-  US-  -  -   U S-  US-  -  -   U SS[        [        5      -  SS[        [        5      -  -  SS[        [        5      -  -  /5      nX4:X  d   e[	        [        / / 4S// 4U 5      5      n[        SU-   U SS/5      nX4:X  d   e[	        [        S// 4[        R                  /S/4U 5      5      n[        U [        R                  -   U-  XS-  -  -   U S[        [        5      [        S5      -  [        S5      /5      nX4:X  d   e[	        [        S/S/4S// 4SU S-  -  5      5      n[        SU S-  -  S-
  U-  U S-  US-  -  -   U S[        [        SS5      5      * S-   [        [        SS5      5      * /5      nX4:X  d   eg )	Nr)   r*   r.   r+   r,   r3   rh   r   )r   r   r&   r8   r   r!   r   r   rp   r   r   r   r   r   r=   s        rA   test_from_meijergr      s$   A!""2"21"5t<EAWb8Aq>"23qvvh5LaPQA!A#A.1a4%!A#+r1AAAqDQJNQRTUQUVXZ[V[Q[[]^`a	
48Q$r(
^R48_5	7A6M6Wb"XRy!45A!b&!Q,A6M6Wqc2Y!&&A3;<A1qvv:r/A!eG3QDHSVOSQSW;UVA6M6WqcA3Z1#rAadF;<A1QT6A:r/AqDQJ61HRQRO@T?TWX?X[^_ghjlm_n[oZo>pqA6M6rC   c                  t   [        S5      n [        [        R                  " U 5      S5      u  p[        SSS9n[	        [        R                  " U5      S5      u  pE[        U S-  US-  -  U -   U-   U 5      R                  5       n[        S	US-   US-  -  -   US-  S
US-  -  -   SUS-  -  -   S
U-  -   US-  -  -   5      SS	4/nXg:X  d   e[        U S-  US-  -  U S-  -   US-  -   U 5      R                  5       n[        S	US-  SUS-  -  -   SUS-  -  -   SU-  -   S-   US-  -  -   5      SS4/nXg:X  d   e[        U S-  US-  -  S	-   US-  -   U 5      R                  5       n[        S	US-  SUS-  -  -
  US-  -
  SU-  -   U-  -   US-  SU-  -   S-   US-  -  -   5      SS4/nXg:X  d   e[        SU S-  -  US-  -  SU -  U-  -   XS-  -  -   U 5      R                  5       n[        SU-  SUS-  -  S
US-  -  -
  SUS-  -  -
  S
U-  -   U-  -   US-  SUS-  -  -   SU-  -   US-  -  -   5      SS	4/nXg:X  d   eg )Nr)   r*   re   TintegerSnr+   r3   r,   r/   r.   rP   r   rJ   r      rH   r-   )r   r   r%   r8   r	   r   to_sequencer
   )r)   r>   r*   re   _r   r?   r@   s           rA   test_to_Sequencer      s   A!""2"21"5t<EAT"A 0 0 3T:EA!Q$r1u*q.2-q1==?A
AQA-A!Q$AqD1H1Q31NPRTUPU0UU
VXY[\	]^A6M6!Q$r1u*q!t+b!e3Q7CCEA
AA1a4"QT'!9CE!AC!GQ NN
OQRTU	VWA6M6!Q$r1u*q.2q50!4@@BA
AA!Q$A!5!!;R ??1a4!A#:PQ>SUWXSXBXX
Y[\^_	`aA6M6!AqD&Q,1R/!E'91=IIKA
AaC1QT6AadF?Qq!tV#;ac#A2"EEAPQRSUVRVPVYZ[\Y\I\^`bc^cHcc
dfgij	klA6M6rC   c                     [        S5      n [        [        R                  " U 5      S5      u  p[        SSS9n[	        [        R                  " U5      S5      u  pE[        US-
  U SS/5      R                  5       n[        S	US-   U-  -   S5      S4/nXg:X  d   e[        US
-  S-   U SSS/5      R                  5       n[        SUS
-  SU-  -   S
-   US
-  -  -   SS/5      S4/nXg:X  d   e[        US
-  S-   U S-  U-  -   U SS
S/5      R                  5       n[        X5S
-  -   US
-  SU-  -   S-   US-  -  -   S
SS	[        S	S
5      [        SS5      /5      S4/nXg:X  d   e[        U S-  US-  -  S-   U-   U 5      R                  5       n[        SUS-   U-  -   US-  SUS-  -  -
  SU-  -   US
-  -  -   5      SS4/nXg:X  d   e[        S5      u  pp[        [        SU S
-  -   5      5      n[        US
-  US
-  S
U-  -   US
-  -  -   SSU
/5      SS4/nUR                  5       U:X  d   eUR                  5       n[        US
-   US
-   US
-  -  -   US/5      SS4/nUR                  5       U:X  d   e[        [        U 5      U -   5      R                  5       n[        S
US
-  -  S
U-  -
  US-  S
US
-  -  -   U-
  S
-
  US
-  -  -   SSS
[        [        5      -  -   SU/5      SS
4/nXg:X  d   eg )Nr)   r*   re   Tr   r   r,   r   rh   r+   r.   r0   r\   r3   r-   C_0, C_1, C_2, C_3)r   r   r&   r8   r	   r   r   r
   r   r   r   rW   r   r   r   )r)   r>   r*   re   r   r   r?   r@   C_0ro   C_2C_3s               rA   #test_to_Sequence_Initial_Coniditonsr     sT   A!""2"21"5t<EAT"A 0 0 3T:EA"q&!Q,88:A
B!a%OQ
/	34A6M6"a%!)QAq62>>@A
AA!aQ 66A
?	CDA6M6"a%!)ad2g-q!aV<HHJA
AAIA!b"a%(??!QHUWYZO]efgik]lAm
npq	rsA6M6!Q$r1u*q.2-q1==?A
AQ
NadQq!tVmac.A2q5-HH
I1a	PQA6M6 !56Cc#a1f+&A
AqDAqD1Q3JA#551c{
CQ	JKA==?a	A
QUq1ub!em3c1X
>1	EFA==?a#a&1*%113A
Qq!tVac\adQq!tVma.?!.CRU-JJQPQTUVZ[]V^T^P^`acfLg
hjkmn	opA6M6rC   c                  @   [        S5      n [        [        R                  " U 5      S5      u  p[	        US-  SU -  U-  -   U SSS/5      R                  SS9nX S-  S-  -
  U S	-  S-  -   U S
-  S-  -
  U S-  S-  -   [        U S-  5      -   nX4:X  d   e[	        US-
  U 5      R                  U S-  SS/5      n[	        US-  S-   U SSS/5      nX4-  R                  SS9nSU S-  S-  -   U S-  S-  -   SU S-  -  S-  -
  SU S-  -  S-  -
  [        U S-  5      -   nXV:X  d   e[	        SU -   US-  -  U-   U SSS/5      nX7-  U-   R                  SS9nSU -   U S-  -
  SU S-  -  S-  -   SU S-  -  S-  -
  SU S	-  -  S-  -   SU S-  -  S-  -
  SU S
-  -  S-  -   SU S-  -  S-  -
  SU S-  -  S-  -   [        U S-  5      -   nXV:X  d   e[	        SSU -  -   SU S-  -  -
  SU -  SU S-  -  -
  SU S-  -  -
  U-  -
  SSU S-  -  -
  SU S-  -  -   US-  -  -   U SSS/5      R                  S
S9nX S-  S-  -   SU S-  -  S-  -
  U S	-  S -  -   S!U S-  -  S"-  -
  [        U S
-  5      -   nX4:X  d   e[	        SSU -  -   SU S-  -  -
  SU -  SU S-  -  -
  SU S-  -  -
  U-  -
  SSU S-  -  -
  SU S-  -  -   US-  -  -   U SSS/5      R                  S
S9nSSU S-  -  S-  -
  U S-  S-  -
  S	U S-  -  S#-  -
  SU S	-  -  S$-  -
  SU S-  -  S%-  -
  [        U S
-  5      -   nX4:X  d   e[        [        U 5      U -   5      R                  SS9n[        S&5      n[        U 5      U -   R                  SS9nUR                  US'S[        [        5      -  -  5      U:X  d   e[        [        U S-  U -   5      5      R                  SS9[        U S-  U -   5      R                  SS9:X  d   e[        SU -  SU S-  -  -
  [        SS5      -  5      R                  5       SU -  SU S-  -  -
  [        SS5      -  R                  5       :X  d   e[        [        U S-  U -
  5      5      R                  5       [        U S-  U -
  5      R                  5       :X  d   e[        [        U 5      S-  U S-  -  S'/ S(Q0S)9R                  SS9[        U 5      S-  U S-  -  R                  SS9:X  d   e[        [        U 5      S-  U S-  -  SS*9R                  SS9R                  5       [        U 5      S-  U S-  -  R                  SSS+9R                  5       :X  d   e[        [        U S-
  5      S-  U S-
  S-  -  SS'/ S(Q0S,9R                  SS9[        U S-
  5      S-  U S-
  S-  -  R                  SSS-9:X  d   eg ).Nr)   r*   r+   r   r,   r6   re   r.   r-   r0   *   r2   r   r3   rI   rU   r/   i     r1   i  r   r7   i  rV   i   iN  i  i{  iH  r^   r4      i  rk   rM   i  r   r]   r,   r   rh   r   rm   )re   rn   )rn   r   )rn   re   )r   r   r%   r8   r   seriesr#   r   r   r   rr   r   r   r   r   together)	r)   r>   r*   r?   r@   rX   rY   tr   s	            rA   test_seriesr   $  s   A!""2"21"5t<EA"a%!A#b&.!QA7>>>DA	qDF
QT"Wq!tBw&Ac1AaeH<A6M6"q&!$00Aq1#>A"a%!)QAq62A	
A	AqDF
QT"Wr!Q$ws{*SAXd]:Qq"uXEA6M61q5"a%-",aQF;A	
R A	A1qAvax"QT'"*,r!Q$wrz9C1HSLH1WS[	A:e#	$&)!Q$hsl	356q"uX	>A6M61QqS51a4<BqD1a4K!Q$,>+BB	
1QT6!AqD&"a% !"A1v	//5vv{ 	qDF
Qq!tVBYAb(2ad73;61a4@A6M61QqS51a4<BqD1a4K!Q$,>+BB	
1QT6!AqD&"a% !"A1v	//5vv{ 	AadF1Hq!tAv!Q$r	)AadF2I51a4Ca1gMA6M6#a&1*%,,r,2A
%.C	Q!b!A66#r1T"X:'1,,,T!Q$(^,33b39T!Q$(^=R=RUW=R=XXXXacAadFlXa^;<CCE1Q3QRSTVWSWQW<ZbcdfgZhJhIpIpIrrrrd1a46l+224ad1f8M8M8OOOOSVQYq!t^Z0@AHH2HNSVWXSY[\S\]^`a]aSaRiRilnRiRooooSVQYq!t^299B9?HHJsSTvWXyYZ\]Y]~NeNehjopNeNqNzNzN||||S1Xq[!A#1aR<LMTTWYTZ!HaK1q ((A(45 5 5rC   c                     [        S5      n [        [        R                  " U 5      S5      u  p[	        SU -   US-  -  U-   U SSS/5      n/ SQnSn[        UR                  USS	9S
   5      U:X  d   eSS[        -  -   /n[        S5       H$  nUR                  US
   S-   S[        -  -   5        M&     [        S5       H$  nUR                  US
   S-   S[        -  -
  5        M&     Sn[        UR                  USS	9S
   5      U:X  d   e[	        US-  S-   U SSS/5      nSn[        UR                  USS	9S
   5      U:X  d   eS/n[        S5       H  nUR                  US
   S-   5        M     UR                  [        S-  5        Sn[        UR                  USS	9S
   5      U:X  d   eS[        -  /n[        S5       H!  nUR                  US
   S[        -  -   5        M#     [        S5       H  nUR                  US
   S-   5        M     UR                  [        S-  [        -   5        [        S5       H!  nUR                  US
   S[        -  -
  5        M#     Sn[        UR                  USS	9S
   5      U:X  d   e[	        US-  S-   U SSS/5      nS/n[        S5       H  nUR                  US
   S-   5        M     UR                  [        5        Sn[        UR                  USS	9S
   5      U:X  d   eS[        -  /n[        S5       H!  nUR                  US
   S[        -  -   5        M#     [        S5       H  nUR                  US
   S-   5        M     [        S5       H!  nUR                  US
   S[        -  -
  5        M#     [	        US-  S-   U SSS/5      R                  USS	9nSn[        US
   5      U:X  d   eg )Nr)   r*   r,   r+   r   
皙?g?g333333?g?g      ?g333333?gffffff?g?g?r,   z0.699525841805253Euler)methodrh   r   r2   r6   z'1.07530466271334 - 0.0251200594793912*Iz*0.905546532085401 - 6.93889390390723e-18*IrJ   z1.08016557252834rK   z*0.976882381836257 - 1.65557671738537e-16*I皙?=   z-1.08140824719196r4   z*0.501421652861245 - 3.88578058618805e-16*I)r   r   r&   r8   r   r"   evalfr   rc   appendr   r)   r>   r*   r?   rX   rY   is          rA   test_evalf_eulerr   H  s   A!""2"21"5t<EA 	1q5"a%-",aQF;A 	9AA'*2./1444 
s1uA1X	2s3q5! 2Y	2s3q5! 
 	2A'*2./1444 	"a%!)QAq62A4A'*2./1444 
A2Y	2 HHRTNA'*2./1444 
QA1X	2s1u 2Y	2s HHRT!V2Y	2s1u  	5A'*2./1444 	"a%!)QAq62A	A2Y	2t HHRLA'*2./1444 
QA1X	2s1u 2Y	2s 2Y	2s1u  	"a%!)QAa5177'7JA4A";!rC   c                     [        S5      n [        [        R                  " U 5      S5      u  p[	        SU -   US-  -  U-   U SSS/5      n/ SQnSn[        UR                  U5      S   5      U:X  d   eS	S	[        -  -   /n[        S
5       H$  nUR                  US   S	-   S	[        -  -   5        M&     [        S5       H$  nUR                  US   S	-   S	[        -  -
  5        M&     Sn[        UR                  U5      S   R                  S5      5      U:X  d   e[	        US-  S-   U SSS/5      nSn[        UR                  U5      S   5      U:X  d   eS	/n[        S5       H  nUR                  US   S	-   5        M     UR                  [        S-  5        Sn[        UR                  U5      S   5      U:X  d   eS	[        -  /n[        S
5       H!  nUR                  US   S	[        -  -   5        M#     [        S5       H  nUR                  US   S	-   5        M     UR                  [        S-  [        -   5        [        S5       H!  nUR                  US   S	[        -  -
  5        M#     Sn[        UR                  U5      S   5      U:X  d   e[	        US-  S-   U SSS/5      nS/n[        S5       H  nUR                  US   S-   5        M     UR                  [        5        Sn[        UR                  U5      S   5      U:X  d   eS	[        -  /n[        S
5       H!  nUR                  US   S	[        -  -   5        M#     [        S5       H  nUR                  US   S	-   5        M     [        S5       H!  nUR                  US   S	[        -  -
  5        M#     [	        US-  S-   U SSS/5      R                  U5      nSn[        US   5      U:X  d   eg )Nr)   r*   r,   r+   r   r   z0.693146363174626rh   r   r2   r6   z1.098616 + 1.36083e-7*Ir0   z)0.90929463522785 + 1.52655665885959e-16*IrJ   z0.999999895088917rK   z)1.00000003415141 + 6.11940487991086e-16*Ir   r   z-0.999999993238714r4   z*0.493152791638442 - 1.41553435639707e-15*I)r   r   r&   r8   r   r"   r   r   rc   r   re   r   r   s          rA   test_evalf_rk4r     s   A!""2"21"5t<EA 	1q5"a%-",aQF;A 	9AA
21$$$ 
s1uA1X	2s3q5! 2Y	2s3q5! 
 	"A
2  #$))) 	"a%!)QAq62A3A
21$$$ 
A2Y	2 HHRTNA
21$$$ 
QA1X	2s1u 2Y	2s HHRT!V2Y	2s1u  	4A
21$$$ 	"a%!)QAq62A	A2Y	2t HHRLA
21$$$ 
QA1X	2s1u 2Y	2s 2Y	2s1u  	"a%!)QAa5177:A4A";!rC   c                  P   [        S5      n [        [        R                  " U 5      S5      u  p[	        [        U 5      U -  S-  5      n[        SU -  SU S-  -  S-   U-  -   SU -  US-  -  -   U S-  US-  -  -   U SS	S[        S
S5      /5      nX4:X  d   e[	        S	S	U S-  -   S-  -  5      n[        SU -  U S-  S	-   U-  -   U SS	/5      nX4:X  d   e[	        [        U 5      [        U 5      -  U [        S	U -   5      -  -   5      n[        SU S-  -  SU S-  -  -   SU -  -   S-   S
U S-  -  SU S-  -  -
  SU S-  -  -
  SU -  -
  U-  -   SU S-  -  SU S-  -  -   SU S-  -  -   SU S-  -  -   SU -  -   S-
  US-  -  -   S
U S-  -  SU S-  -  -
  SU S-  -  -
  SU S-  -  -   U -
  S-   US-  -  -   U S-  SU S-  -  -   U S-  -
  SU S-  -  S-  -
  U -   [        SS5      -   US-  -  -   U S/ SQ5      nX4:X  d   e[	        U [        U 5      -  [        U 5      -   S	-   5      n[        U * S-
  U-  U S-   US-  -  -   U * S-
  US-  -  -   U S-   US-  -  -   U S/ SQ5      nX4:X  d   eU [        U 5      -  [        U 5      -   S	-   R                  SS9UR                  SS9:X  d   e[	        [        S	U -   5      S-  S	-   5      n[        USU -  S-   US-  -  -   U S-  SU -  -   S	-   US-  -  -   U S/ SQ5      nX4:X  d   e[	        [        U 5      S-  U -   5      n[        SU S-  -  SU S-  -  -
  S-   US-  -  SU S-  -  U S-  -
  US-  -  -   U S-  [        S	S5      -   US-  -  -   U SSS	S[        -  S/5      nX4:X  d   e[	        [        U 5      U -  5      n[        U S-  * S-   SU -  U-  -
  U S-  US-  -  -   U SSS	/5      nX4:X  d   e[	        [        SU 5      5      n[        U S-  S-
  X-  -   U S-  US-  -  -   U SSS/5      nX4:X  d   e[	        [        SU 5      [        U 5      -   5      n[        U S-  * U S-  -
  [         R"                  -   U S-  U S-  -
  [        SS5      -
  U-  -   U S-  * U S-  -   S	-   US-  -  -   U S-  U S-  -   US-  -  -   U SSS	[         R"                  /5      nX4:X  d   e[	        [        U 5      S-  U -  5      n[        SSU -  U-  -   SUS-  -  -   XS-  -  -   U S/ SQ5      nX4:X  d   e[	        [        U 5      S-  U -  SS9n[        SSU -  U-  -   SUS-  -  -   XS-  -  -   U S[        S5      S-  S-  [        S5      [        S5      -  [        S5      S-  S-  -
  S[        S5      S-  -  S-  [        S5      S-  -   [        S5      [        S5      -  -
  /5      nX4:X  d   e[	        [        U 5      S-  [%        SU -  5      S-  -
  [%        S5      S-  -   5      n[        SU-  SU -  US-  -  -   SUS-  -  -   XS-  -  -   U S[        S5      * S-  [&        S-  -
  [%        S5      S-  -   SS	S/5      nX4:X  d   eUR)                  5       n[        U 5      S-  [%        SU -  5      S-  -
  [%        S5      S-  -   nX4:X  d   e[	        U [         R"                  -  S	S9n[        X-  [         R"                  -
  U S	S	/5      nX4:X  d   e[	        [+        S	U S-  -   5      5      n[        U * U S-  S	-   U-  -   U SS	/5      nX4:X  d   e[	        [+        U 5      [+        SU -  5      -   5      R)                  5       [+        U 5      [+        SU -  5      -   -
  R-                  5       S:X  d   e[	        SU -  S[+        U 5      -  -   5      R)                  5       SU -  S[+        U 5      -  -   :X  d   e[	        U S-  U S-  -   SU S-  -  -   SU -  -   S-   U S-  -  SS9n[        S
U S-  -  U S-  -
  SU -  -   S-   U S-  U S-  -   SU S-  -  -   SU S-  -  -   SU -  -   U-  -   U SS
/ SQ05      nX4:X  d   e[	        S	U S	-
  S-  -  SS	S9n[        SU S	-
  U-  -   U S	S
/ SQ05      nX4:X  d   e[        S5      n[	        [+        XP-  5      U S9nUR)                  5       [+        U5      [+        U 5      -  :X  d   eg )Nr)   r*   r+   r1   r3   r/   r.   r   r,   r]   r6   r4   rN   r-   r0   )r   r,   r3   rh   )r+   r,   r,   r.   r   )r,   r   r+   )r   r,   r   rm   ri   lenics)r+   r.   r-   )r   rn   r,   r   r   rd   r)   )r   r   r&   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   rp   r   r   rq   r   simplify)r)   r>   r*   r?   r@   rd   s         rA   test_expr_to_holonomicr     s	   A!""2"21"5t<EA3q6!8a-(A!A#1a4!R/!A#b!e);ad2q5jH!Q	
AxA	!A6M6!Qq!tVaK-(A!A#A2-q!aS9A6M6#a&Q-#ac(
23A1QT6Bq!tG+bd2R7Bq!tGbAg<MPRSTVWSWPW<W
Q$=< 1fqAvo!Q$.1a47"Q$>BBEIJ	AqD1QT6	AadF	"Qq!tV	+a	/!	3RU:;>?dQq!tVmaQRd>R	!Q$q??1~?&')1u>-- /0M	CA 6M6!CF(3q6/!+,AA262+QA5!aQF!a%QSUVQVVXY	<	A6M6c!fHSVOA%%%+qxx"x~===#a!e*a-!+,A"!aQ.!Q$1*q."a%1GGAyYA6M6#a&!)a-(A1QT6AadF?Q.A51a4!A#r1u8LL	
Ax1~	r1u$%&'Q1R4O	=A6M6$q'!)$AAqD519qs2v-1RU
:Aq1a&IA6M6'!Q-(A1a4!8qt+ad2q5j8!QAGA6M6'!Q-#a&01AAqD51Q3;/AqD1Q3J!Q4OQS3SSXY[\X\W\_`ab_bWbefWfhjlmhmVmm	
A!RUq1a.	2A6M6#a&!)A+&A!ac"f*qQw.q58!Q	JA6M6#a&!)A+!,A11b.Ar1u94q5y@!QQQRSTAs1vA	!#RA	\!^c!fai%?#a&Q-%OIQ 	RA6M6#a&(R!WQY.Aq89A!B$1RU*Qr1uW4qQw>1
a&Z\	!BqE!G	+Q15	7A6M6			AAq2ac719r!uQw&A6M6!QVV)*A!$-As3A6M6$q1a4x.)AA2!Q$(B.1qc:A6M6d1gQqS	12::<	a4!9	'xzQ/ / /QqS47]+3351QtAwYFFF1a419Qq!tV+AaC/11a47BA2ad7QT>AaC/!31q!ta1f8LqQRTUQUv8U	!98 AI	(A6M6!QqS1H*Q15A1Q
*Aq2y/BA6M6A$qs)q)A99;$q'$q'/)))rC   c                  D   [        S5      n [        [        R                  " U 5      S5      u  p[	        US-
  U SS/5      R                  5       nS[        / / SU -  5      -  nX4:X  d   e[        [	        SU -   U-  S-
  U SS/5      R                  5       5      R                  5       nSU S-  -  SU S-  -  -   SU -  -   S-   nX4:X  d   e[	        SU -   US-  -  U-   U SSS/5      R                  5       nU S-  * [        SS	U * 5      -  S-  U -   nX4:X  d   e[	        SU -  U-  US-  -   U SSS[        [        5      -  /5      R                  5       nSU -  [        [        R                  4[        SS5      4U S-  * 5      -  [        [        5      -  nX4:X  d   e[        [	        SU -  U-  US-  -   U SSS
[        [        5      -  /5      R                  5       5      n[        U 5      nUR                  [        5      U:X  d   e[        [	        U S-  S-
  X-  -   U S-  US-  -  -   U SS[        R                  /5      R                  5       5      n[!        SU 5      nX4:X  d   e[        [	        XS-  -  U-   U -   U SSS/5      R                  5       5      n[!        SU 5      nX4:X  d   eg )Nr)   r*   r+   r   r.   r,   r/   )r+   r+   r,   )r.   r+   r]   )r   r   r&   r8   r   to_hyperr    r$   rs   r   r   r   rp   r   r   rewriter   r=   s        rA   test_to_hyperr   +  s   A!""2"21"5t<EA"q&!Q,557A	E"b!A#A6M6%q1ulQ&61qcBKKMNUUWA	!Q$1a4!A#!A6M61q5"a%-",aQF;DDFA	
AeIvr**1,q0A6M6!A#b&2q5.!QAd2hJ@IIKA	!E166)hq!n.A66tBx?A6M6%ac"fr1unaQ48<LMVVXYAQA99T?a	&1qAD'81a4A:'E	1q!&&k#8:
'A1A6M6%aAglQ&61q!fENNPQA1A6M6rC   c                  R   [        S5      n [        [        R                  " U 5      S5      u  p[	        US-
  U SS/5      R                  5       n[        U 5      nX4:X  d   e[	        US-  S-   U SSS/5      R                  5       n[        U 5      nX4:X  d   e[	        US-  S-
  U SSS/5      R                  5       n[        U 5      nX4:X  d   e[	        SSU -  S-
  U-  -   U S-  U -
  US-  -  -   U SSS/5      R                  5       R                  5       nSU S-  SU -  -
  S-   -  nX4:X  d   e[        [        U 5      S-  U -  5      R                  U SU 45      R                  5       n[        U 5      S-  U -  R                  U SU 45      nX4:X  d   e[        S5      u  pVpx[        [        SU S-  -   5      5      R                  5       nU[        U S-  S-   5      -  nX4:X  d   e[        [        SU S-  -   5      5      R                  5       R                  5       nXP-  U S-  S-   -  nX4:X  d   e[        [        U 5      U -   5      R                  5       nSU-  U -  S[!        ["        5      -  U-  [        U 5      -  S-  -
  U -   SU -  [!        ["        5      -  -   nX4:X  d   e[        [!        U 5      SS	9R                  5       nU[!        U 5      :X  d   e[        [!        U 5      5      R                  5       [!        U 5      :X  d   e[        [!        SU S-  -   5      5      R                  5       nU[!        SU S-  -   5      :X  d   e[        SU S-  -  S-   [%        SS5      -  5      R                  5       nUSU S-  -  S-   [%        SS5      -  :X  d   e[        [!        U S-  * SU -  -   5      5      R                  5       nU[!        U 5      [!        U * S-   5      -  :X  d   e[        S
U S-  -  SU -  -   [%        SS5      -  5      R                  5       nU [%        SS5      -  S
U S-  -  S-   [%        SS5      -  -  nX4:X  d   e['        [)        S[*        R,                  4U 5      5      n[/        [)        S[*        R,                  4U 5      5      n	[1        S5      n
[1        S5      nUR                  5       R3                  USU
S05      U	-
  R5                  5       S:X  d   eSS/[*        R,                  S/0Ul        UR                  5       U	:X  d   e[        U S-  5      R                  5       U S-  :X  d   e[        SU S-  -  SU S-  -  -
  5      R                  5       R                  5       SU S-  -  SU S-  -  -
  :X  d   e[        S5      n[        SU -  5      [        X-  U 5      -  R                  5       nSU-  U S-  -  nX4:X  d   e[        SU -  5      [        X-  U 5      -   R                  5       nXS-   -  nX4:X  d   e[        SU -  5      [        U 5      -   R                  5       nUSU -  :X  d   eg )Nr)   r*   r,   r   r+   r3   r   r.   rm   r]   r0   r]   ri   D_0r   r-   rd   gffffff?g333333@)r   r   r%   r8   r   rq   r   r   r   rs   r   r   	integrater   rW   r   r   r   r   r   r    r   rp   r$   r   rr   r   r   )r)   r>   r*   r?   r@   r   ro   r   r   rY   r   rd   s               rA   test_to_exprr   E  s   A!""2"21"5t<EA"q&!Q,446AAA6M6"a%!)QAq62::<AAA6M6"a%!)QAq62::<AQA6M6!qsQwl*	
A2q5QA	((/	&&( 	1a4!A#:>A6M6#a&!)A+&00!Q;CCEA	Q1Aq	*A6M6 !56Cc#a1f+&..0AC1qMA6M6#a1f+&++-557Aq!taxA6M6#a&1*%--/A	#a!DH*S.Q'))A-!DH<A6M6$q'a(002AQ<<T!W%--/47:::$q1a4x.)113AQq!tV1QT6A:A67??AA1a4!hq!n,,,,$1uQqSy/*224AQaR!V$$$$2ad71Q3;!Q78@@BA	8Aq>2ad7Q;!Q77A6M65AFF:q12AE(QVVJ23A
-C
-CIIKc!S^,q0::<AAAsAFFQC AD99;!QT"**,1444Qq!tVAadF]+335<<>	!Q$qAv  A	3q5	!"3AC";	;DDFAAad
A6M6	3q5	!"3AC";	;DDFA	s7A6M6	3q5	!"3A"6	6??AAA::rC   c                  
   [        S5      n [        [        R                  " U 5      S5      u  p[	        [        U 5      S-  U -  SS9R                  U SS45      nSn[        U5      U:X  d   e[	        [        U 5      5      R                  U SU 45      R                  5       nS[        U 5      -
  nX4:X  d   e[	        [        U 5      5      R                  U SS45      nS[        S5      -
  nX4:X  d   e[	        [        U 5      U -  SS9R                  U SS45      nS	n[        U5      U:X  d   e[	        [        U 5      S-  U -  SS9R                  U SS45      nS
n[        U5      U:X  d   e[	        [        U 5      U -  5      nUR                  U 5      R                  5       [        U 5      :X  d   eUR                  U SS45      [        S5      :X  d   e[	        [        U 5      S-  U -  5      nUR                  5       nUR                  U 5      R                  5       UR                  U SU 45      :X  d   eUR                  U SS45      UR                  U SS45      :X  d   e[	        SU -  SS9R                  U 5      R                  5       [        U 5      :X  d   e[	        U S-   S-  [        U * 5      -  SS9R                  U 5      R                  5       nU S-  * SU S-  -  -
  SU -  -
  S[        U S-   5      -  -   S-
  [        U * 5      -  nX4:X  d   e[	        [        U 5      S-  U S-  -  S/ SQ0S9R                  U 5      R                  5       n[        SU -  5      * [        U 5      S-  U -  -
  nX4:X  d   e[	        [        U S-  U -   5      5      R                  U 5      R                  5       nU [        SS5      -  SU S-  -  SU -  -   S-   -  U [        U S-   5      -  [        [        U 5      5      -  -
  SU -  [        U S-   5      -  -  nX4:X  d   e[	        [        U S-  S-   5      5      R                  U 5      R                  5       n[        U S-  S-   5      R                  U 5      nX4-
  R!                  5       S:X  d   e[	        SU S-  -  S/ SQ0S9n[	        SU S-  -  SS9nX5:X  d   e[	        [        U 5      S-  5      nXT-  R                  U 5      R                  5       [        SU -  5      * [        U 5      S-  U -  -
  :X  d   eg )Nr)   r*   r+   r,   rm   r.   z0.166270406994788r   z0.659329913368450z-0.423690480850035rh   r/   rK   r^   r]   r   r   r3   r   r   )r   r   r%   r8   r   r   r   r"   rq   r   r   r   r   r   r   r   r   r`   s         rA   test_integrater     s   A!""2"21"5t<EA#a&!)A+!,661ayAAA7a<<#a&!++Q1I6>>@A	CF
A6M6#a&!++Q1I6A	CF
A6M6#a&(q)33Q1I>AA7a<<#a&!)A+!,661ayAAA7a<<#a&(#A;;q>!!#r!u,,,;;1ay!RU***#a&!)A+&A			A;;q>!!#q{{Aq!9'====;;1ay!Q[[!Q%;;;;QqSQ'11!4<<>#a&HHH1q51*S!W,4>>qAIIKA
Q$1a4"Q$	3q1u:	-	2CG;A6M6#a&!)AqD.b*-=>HHKSSUA	AaC3q619Q;A6M6$q!tAv,'11!4<<>A	
HQN	AadFQqSL1,	-$q1u+eDGn0L	LqQRsSWXY\]X]S^_A6M6$q!tAv,'11!4<<>A	ad1f  #AC>>q   !AqD&b^4A!AqD&+A6M6#a&!)$AC??1%%'BqsG8c!faik+AAAArC   c                     [        S5      u  p[        [        R                  " U 5      S5      u  p#[	        XS-  -  S-   U SSS/5      nUR                  5       R                  5       UR                  5       R                  5       R                  5       :X  d   e[	        US-  S-
  U SSS/5      nUR                  U S5      R                  5       UR                  5       :X  d   e[        [        U 5      5      nUR                  5       R                  5       [        U 5      U -  :X  d   eUR                  U5      S:X  d   e[        S5      u  pVpx[        U 5      n	UR                  U 5      R                  5       U	R                  5       :X  d   eUR                  U S5      R                  5       R                  U[        SS5      5      R                  5       U	R                  U S5      R                  5       :X  d   eUR                  U S5      R                  5       R                  U[        SS5      US05      U	R                  U S5      R                  5       :X  d   eg )	Nzx, yr*   r+   r,   r   r   rh   r.   )r   r   r%   r8   r   rW   rq   r   r   r   r   rr   r   cancelr   )
r)   yr>   r*   r?   r   ro   r   r   r@   s
             rA   	test_diffr     s   6?DA!""2"21"5t<EA!E'A+q!aV4A668!1!1!3!<!<!>>>>"a%!)QAq62A66!Q<!QYY[000"Q% A668Q)))66!9>> !56Cc
1A66!9!&&(***66!Q<!&&sHRO<CCEPQSTI\I\I^^^^66!Q< %%sHROS!&DEPQSTI\I\I^^^^rC   c                  ^   [        S5      n [        S[        SU -  5      -  5      nUR                  5       S[        SU -  5      -  :X  d   e[	        UR                  U 5      R                  5       5      S:X  d   e[        [        R                  " U 5      S5      u  p#[        SU -  5      n[        SSU -  U-  -   U SS	S/05      nX:X  d   eUR                  5       SU -  :X  d   e[	        UR                  U S	S
45      5      [	        SU -  R                  U S	S
45      5      :X  d   e[        S5      u  pV[        [        X-  U-  5      U S9nUR                  5       [        X-  U-  5      :X  d   eUR                  U 5      R                  5       [        X-  U-  5      * S	-   XV-  -  :X  d   e[        [        X-  U-   5      U S9R                  U 5      R                  5       n[        U5      [        X-  U-   5      -
  U-  nX:X  d   e[        S5      n[        Xp-  U 5      nUR                  5       Xp-  :X  d   eUR                  U 5      R                  5       XpS
-  -  S
-  :X  d   e[        S5      u  p[        U 5      [        S[        U 5      -  5      -   nUR                  5       R                  US5      nX-
  S[        SU -  5      -  -
  S:X  d   e[        U 5      [        S[        U 5      -  5      -  nUR                  5       R                  U	S5      nUSU -  [        SU -  5      -  -
  S:X  d   eg )Nr)   g333333?g@z0.387096774193548*sin(3.1*x)r*   gݷ:>j ?gݷ:>j r   r,   r+   zy, zr   rd   zD_2, C_1g      ?)r   r   r   rq   r"   r   r   r'   r8   r   r   rr   )
r)   r?   r   r*   r@   r   zrd   D_2ro   s
             rA   )test_extended_domain_in_expr_to_holonomicr     s   A#c#a%j.)A99;#c#a%j.(((A&&()-KKKK!""2"21"5t<EA,q.)A=\!^R,??AL>GZ[A6M699;,q.(((Q1I&'4a0J0JAqRS90U+VVVV6?DA#ac!e**A99;#ac!e*$$$;;q>!!#QSUa!#'>>>>#acAg,!,66q9AACA	Q#acAg,	!A6M6A!#q!A99;!#;;q>!!#qAvax///z"HC!0SV<<A			a A53s3q5z>!Q&&&!0SV<<A			a As1uSQZ1$$$rC   c            	         [        S5      n [        [        [        U 5      5      R	                  5       5      [        U 5      :X  d   e[        [        [        U 5      5      R	                  5       5      [        U 5      :X  d   e[        [        [        U 5      5      R	                  5       5      [        U 5      :X  d   e[        [        [        U 5      5      R	                  5       5      R                  5       [        U 5      :X  d   e[        SU S-  -  S-  S-   5      R	                  5       SU S-  -  S-  S-   :X  d   e[        [        [        SU 5      SS9R	                  5       5      [        SU 5      :X  d   e[        [        SS5      S4S	U 5      n[        U5      R	                  5       [        U5      :X  d   e[        [        R                  [        S5      4[        S5      4U 5      n[        [        U5      R	                  5       5      [        U5      -
  R                  5       S
:X  d   e[        [        S[        R                   4U 5      5      n[        [        S[        R                   4U 5      5      n[#        S5      n[#        S5      n[#        S5      n[        UR	                  5       5      R%                  USUS
05      U-
  R                  5       S
:X  d   eS
S/[        R                   S
/0Ul        [        UR	                  5       5      U-
  R                  5       S
:X  d   e[        [        [        R                   U 5      SS9nUR)                  5       U[        U 5      -  U[        U 5      -  -   U[        U 5      -  -   [+        U 5      -  -
  R                  5       S
:X  d   e[        [        [        R                   U 5      [        SS5      [+        S5      [+        [,        5      -  [+        S5      [+        [,        5      -  /0S9nUR)                  5       [        [        R                   U 5      -
  [        [        SS5      U 5      -
  R                  5       S
:X  d   eg )Nr)   r3   r+   r.   r0   r   rh   ri    r   r   r   ro   r   r,   F)initcondr   )r   r$   r   r   
to_meijergr   r   r   r   r   r    r   r   r   Oners   rp   r   rr   r   rq   r   r   )r)   r?   rY   r   ro   r   s         rA   test_to_meijergr     sl   A(Q0;;=>#a&HHH(Q0;;=>#a&HHH(Q0;;=>#a&HHH(Q0;;=>GGISQRVSSSQq!tVAX\*5571QT6!8a<GGG(AqALLNOSZ[\^_S````xA#R+Aa=##%Q777quuadmadXq)A
10023k!nDLLNRSSSS5AFF:q12AE(QVVJ23A
-C
-C
-C',,c!S^<q@JJLPQQQQsAFFQC AD'!+5571<<<'!&&!,u=AIIK3s1v:CF
2SQZ?aHHRRTXYYYY'!&&!,(2q/DGDQSHDTVZ[\V]^bce^fVfCg1hiAIIK'!&&!,,wxA/JJTTVZ[[[[rC   c                  |   [        S5      u  p[        SSS9n[        X4   R                  5       n[        S5      [	        U * U-   S-  * SUS-  -  -  5      -  S[        [
        5      -  U-  -  n[        XAUS9n[        UR                  U5      S5      u  pg[        U * US-  -  XS-  -  -   SU-  -   U5      nXX:X  d   eg )	Nzmu xsdTpositiver+   domainr*   r,   )
r   r&   	get_fieldr   r   r   r   r   r8   r   )	mur)   r   Qeh1r   r*   h2s	            rA   test_gaussianr     s    FOEB		%B
26
AQrcAg\M1RU7+,,aRjm<A	1	*B!!//!"4d;EA	RCAIa%/Ar691	=B8O8rC   c                  8   [        SSS9u  pnX S-
  -  U* S-   US-
  -  -  [        X5      -  n[        X4   R                  5       n[	        X2US9n[        UR                  U5      S5      u  pg[        XU * U-
  S-   -  -   S-
  US-  U-
  U-  -   U5      nXX:X  d   eg )Na b xTr   r,   r   r*   r+   )r   r   r&   r   r   r   r8   r   	rd   br)   r   r   r   r   r*   r   s	            rA   	test_betar     s    g-GA!	E
QBFa!e$$T!Z/A
14A	1	*B!!//!"4d;EA	AA26A:.2q!taxmCQ	GB8O8rC   c                  0   [        SSS9u  pnX* -  X S-
  -  -  [        U* U-  5      -  [        U 5      -  n[        X4   R	                  5       n[        X2US9n[        UR                  U5      S5      u  pg[        U * S-   X!-  -   X'-  -   U5      nXX:X  d   eg )Nr   Tr   r,   r   r*   )	r   r   r   r&   r   r   r   r8   r   r   s	            rA   
test_gammar     s    g-GA!	BE
3r!t9$U1X-A
14A	1	*B!!//!"4d;EA	QBFQSLQF2A	6B8O8rC   c                      [        S5      u  p[        U   R                  5       n[        UR	                  U 5      S5      u  p4[        SX-  -   U 5      U* -  n[        XU-  -   U 5      nXV:X  d   eg )Nx nr*   rh   r   r&   r   r   r8   r   r)   re   r   r   r*   r   r   s          rA   test_symbolic_powerr     sh    5>DA
1A!!//!"4d;EA	B1&=!	,	2B	AR<	+B8O8rC   c                      [        S5      n [        [        R                  " U 5      S5      u  p[	        SX-  -   U 5      S-  n[	        SX-  -   U 5      nX4:X  d   eg )Nr)   r*   rh   r]   r+   )r   r   r&   r8   r   )r)   r   r*   r   r   s        rA   test_negative_powerr   )  sV    A!""2"21"5t<EA	B1&=!	,	2B	A!<	+B8O8rC   c                      [        S5      u  p[        U   R                  5       n[        UR	                  U 5      S5      u  p4[        SX-  -   U 5      US-
  -  n[        U* S-   X-  -   U 5      nXV:X  d   eg )Nr   r*   rh   r.   r   r   s          rA   test_expr_in_powerr   2  sq    5>DA
1A!!//!"4d;EA	B1&=!	,Q	7B	QBFqf,a	0B8O8rC   c                  .   [        SSS9n [        [        R                  " U 5      S5      u  p[	        U S-  UR
                  R                  UR
                  R                  /U5      n[	        U S-  SU /U5      nX4:X  a   eUR                  S   nXE:X  a   eg )Nr)   Tr   r*   r+   r,   r   )r   r   r&   r8   r   r:   r;   
listofpoly)r)   r>   r*   dodo2p2s         rA   test_DifferentialOperatorEqPolyr  <  s    T"A!""2"21"5t<EA	q!tQVV[[!&&++>	BB
1a|Q
/Cy= 
	By=yrC   c                  R   [        SSS9n [        [        R                  " U 5      S5      u  p[	        U S-  UR
                  R                  UR
                  R                  /U5      n[	        UR
                  R                  /U5      n[        S5       H  nXCU-  :X  d   eXC-  nM     g )Nr)   Tr   r*   r+   r6   )	r   r   r&   r8   r   r:   r;   r<   rc   )r)   r>   r   r   rd   re   s         rA   test_DifferentialOperatorPowr  L  s    T"A !1!1!!4d;DA	q!tQVV[[!&&++>	BBaffjj\1-A2YEzz	 rC   N)Wsympy.holonomicr   r   r   r   r   r   sympy.holonomic.recurrencer	   r
   
sympy.corer   sympy.core.numbersr   r   r   sympy.core.singletonr   sympy.core.symbolr   r   &sympy.functions.elementary.exponentialr   r   %sympy.functions.elementary.hyperbolicr   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   sympy.functions.special.besselr   &sympy.functions.special.beta_functionsr   'sympy.functions.special.error_functionsr   r   r   r   'sympy.functions.special.gamma_functionsr   sympy.functions.special.hyperr    r!   sympy.printing.strr"   sympy.series.orderr#   sympy.simplify.hyperexpandr$   sympy.polys.domains.integerringr%   !sympy.polys.domains.rationalfieldr&   sympy.polys.domains.realfieldr'   rB   rZ   ra   rf   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   rC   rA   <module>r     s   > > N ! 0 0 " / = ? 9 ? 2 7 G G 9 : #   2 . 0 ,"D4 1F#!L4*$&8"5HKZK\F*P4;|*BZ_"%>\4
		 rC   