
    g                        d dl mZmZmZmZmZmZ d dlmZm	Z	 d dl
mZ d dlmZmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZmZ d d	lmZ d d
l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( d dl)m*Z* d dl+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd  ZDd! ZEd" ZFd# ZGd$ ZHd% ZId& ZJd' ZKd( ZLd) ZMd* ZNd+ ZOd, ZPd- ZQd. ZRd/ ZSd0 ZTd1 ZUd2 ZVd3S )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            	      f   t          d          } t          t          j        |           d          \  }}||j        k    sJ |t          |j        j        |j        j        g|          k    sJ | |z  | dz  |dz  z  z   t          d| | dz  g|          k    sJ | dz  dz   |z   | |dz  z  z   t          | dz  dz   dddd| g|          k    sJ | |z  | dz  z   dz   || dz  | z   z  z
  dz  d| d	z  z  d
| dz  z  |z  z   d| dz  z  |dz  z  z   | dz   |dz  z  z   k    sJ | |dz  z  | dz  dz   |dz  z  z   || dz  z   z  }d| z  d| dz  z  |z  z   | dz  |dz  z  z   d| dz  z  | z   dz   |dz  z  z   d| dz  z  d| z  z   |dz  z  z   | dz  d| dz  z  z   |dz  z  z   | dz  dz   |d	z  z  z   }||k    sJ d S )NxDx   r            i   i   i   	         <   
      )	r   r   r&   old_poly_ringderivative_operatorr   basezerooner)   Rr*   pqs        `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/holonomic/tests/test_holonomic.pytest_DifferentialOperatorrB      s}   A!""21"5"5t<<EAr&&&&&%qv{AFJ&?CCCCCCr6AqD2q5L $8!Q1q$I$IIIIIqD1H?Q
A %q!taxAq!Q&?CCD D D DFQTMAadQh/!3ad
	q!tr8 1a4Z2q508156TERU?8C C C C C	
RUadQh"a%'	'BA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 666666    c                     t          d          } t          t          j        |           d          \  }}t	          |dz  | z  |           }t	          d|z  | |dz  z  z   |           }||k    sJ t	          | |z  dz   |           }t	          |dz   |           }t	          | dz
  | dz  dz
  |z  z   | dz  | z
  |dz  z  z   |           }||z   |k    sJ t	          | |z  |dz  | dz  dz   z  z   |           }t	          |dz
  |           }t	          d| dz  z  d| z  z
  dz
  d	| dz  z  d
| dz  z  z
  d| z  z
  dz   |z  z   d| dz  z  d| dz  z  z
  d| z  z   dz
  |dz  z  z   d| dz  z  d| dz  z  z   d| dz  z  z   d| z  z   dz   |dz  z  z   |           }||z   |k    sJ t	          |dz  dz
  |           }t	          | dz  |z   |           }t	          | dz   d| dz  z  z   d| dz  z  z
  d| dz  z  z   | dz  z
  d| dz  z  z
  | dz   d| dz  z  z   d| d z  z  z
  d!| dz  z  z   dz
  |z  z   | dz  d| dz  z  z
  d| dz  z  z   d| dz  z  z
  | dz  z   d| dz  z  z   |dz  z  z   | dz  d| dz  z  z
  d| d z  z  z   d!| dz  z  z
  dz   |dz  z  z   |           }||z   |k    sJ | dz  d| z  z   d"z   }| dz  d | z  z
  dz   }||z  |                                z
  }||z  |                                z
  }t	          ||           t	          ||           z   }t	          d| dz  z  d| z  z   dz   d#| dz  z  d| dz  z  z
  d$| z  z
  dz   |z  z   | dz  d| dz  z  z   d%| dz  z  z   d| z  z
  d&z
  |dz  z  z   |           }||k    sJ d S )'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   +   s   A!""21"5"5t<<EAr"a%!)Q''A1(a2q5[0!44A6666!b&1*a((A"q&!$$A1q5QTAXO3q!tax2q56HH!LLAq5A::::!b&2q5AqD1H#55q9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 	MA q5A::::"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 Q3!8888	1qs
QA	1qs
QA	"qvvxxA	"qvvxxA!Q"3Aq"9"99A1QT6BqD=2-"QT'Bq!tG2Cbd2JR2OQS1SS	
A!Q$AqD	 2a4	'"	,b!e3456	8 	8A666666rC   c                  <   t          d          } t          t          j        |           d          \  }}t	          || z   | |dz  z  z   |           }t	          | |z  || z  z   |dz  z   |           }t	          d| dz  z  d| dz  z  z   d| dz  z  z   dz   d| d	z  z  d| dz  z  z
  d| z  z   |z  z   d| dz  z  d
| dz  z  z   d| dz  z  z   dz   |dz  z  z   d| d	z  z  d| dz  z  z   d| z  z   |dz  z  z   d| dz  z  | dz  z   |dz  z  z   |           }||z  |k    sJ t	          |dz  dz   |           }t	          |dz
  |           }t	          dd|z  z   d|dz  z  z   |           }||z  |k    sJ t	          |dz  dz   | z   |z   |           }t	          || z  dz
  dz  |           }t	          d| dz  z  d| dz  z  z   d| d	z  z  z   d| dz  z  z   d| dz  z  z
  d| dz  z  z
  d| z  z
  dz
  d| dz  z  d| d	z  z  z   d| dz  z  z   d| dz  z  z
  d| dz  z  z
  d| z  z
  dz
  |z  z   d| dz  z  d| d	z  z  z   d| dz  z  z   d| dz  z  z
  d| dz  z  z
  d| z  z
  dz
  |dz  z  z   d| d	z  z  d| dz  z  z   d| dz  z  z   d| dz  z  z
  d| z  z
  |dz  z  z   d| d	z  z  d| dz  z  z   | dz  z
  |dz  z  z   |           }||z  |k    sJ t	          | |dz  z  dz
  |           }t	          || z  | z
  |           }t	          | dz
  d| z  dz   |z  z   | |dz  z  z   |           }||z  |k    sJ d S )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   sH   A!""21"5"5t<<EAr"Q$qQw,**A!B$r!t)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 Q3!8888"a%'1%%A"Q$""A1R-1b!e)3Q77AQ3!8888"a%'!)B,**A2a4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 	XA Q3!8888!BE'!)Q''A"Q$q&!$$A1q5RTAXrM1QAI=qAAAQ3!888888rC   c                  
   t          d          } t          t          j        |           d          \  }}t	          || z   | |dz  z  z   |           }t	          ||           }t          d          D ]}|||z  k    sJ ||z  }d S )Nr)   r*   r+   r6   )r   r   r%   r8   r   range)r)   r>   r*   r?   ans         rA   test_HolonomicFunction_powerrf   g   s    A!""21"5"5t<<EAr"Q$qQw,**A"a  A2YY  AqDyyyy	Q rC   c            
      J	   t          d          } t          t          j        |           d          \  }}t	          |dz
  | ddg          }t	          |dz  dz   | dddg          }t	          d|z   |dz  z
  |dz  z   | dg d          }||z   |k    sJ t	          || z
  |dz  z   | dddg          }t	          |dz  | z   | dddg          }t	          | d	z   | dz  d	z  z
  | dz  z
  t          dd	          z   | dz  | dz  d	z  z   | t          dd	          z  z   dz   |z  z   | t          d
d          z  t          dd	          z   |dz  z  z   | dz  | t          dd	          z  z
  t          dd	          z   |dz  z  z   | dz  | d	z  z   t          j        z   |d	z  z  z   | dg d          }||z   |k    sJ t	          |dz  d	| z  |z  z   | dz  z   | ddd	g          }t	          |dz  dz   | dddg          }t	          | dz  d| d	z  z  z   d| dz  z  z
  dz
  d	| dz  z  d| dz  z  z   d| z  z
  |z  z   | dz  d| d	z  z  z   d| dz  z  z   dz
  |dz  z  z   d	| dz  z  d| dz  z  z   d| z  z
  |dz  z  z   | d	z  d| dz  z  z   dz
  |d	z  z  z   | dg d          }||z   |k    sJ t	          |dz  | z   | dg d          }t	          |dz
  | ddg          }t	          | dz   | z
  dz   | dz  | z   |z  z   |  dz
  |dz  z  z   | dz   |d	z  z  z   | dg d          }||z   |k    sJ t          t          |                     }t          d| z  d          }t	          | dz  dz   | dz  d| z  z   |z  z   | dz  dz   |dz  z  z   | dz  d| z  z   |dz  z  z   | dt          d          dz   dt          d          z   t          d           dz   g          }||z   |k    sJ t          d          }t          t          |                     }t          t          | dz  | z
                      }||z                                                       |t           dz                                            }|t          t          |           z  t          |  dz             z  t          |           z   k    sJ d S )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!""21"5"5t<<EAr"Q$1qc**A"a%'1a!Q00A"r'BE/BE11aCCAq5A::::"q&2q5.!QA77A"a%!)QAq622AAqD51a46>AqD08Aq>>AadQPQTRSVmVWX`abdeXfXfVfFfijFjlnEnn	
8B??	Xa^^	+RU2367dQx1~~=M6MPXYZ\]P^P^6^`bde`e5efijlmimpqrspsisvwv|i|  A  CD  D  iDD FG  IJ  LY  LY  LY	Z 	ZAq5A::::"a%!A#b&.1a4/A1v>>A"a%!)QAq62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 !1ooo	7 	7A q5A::::"a%!)Q99955A"q&!Q,,AAqD519q=QTAXrM9aR!VRUNJ	
QA!^^^	- 	-Aq5A::::#a&&!!A!A#!$$$A1a4!81qs
B6!Q$(BE9IIQPQTTUVWTWZY[]^Y^L^^	1s1vvz2A;Q!4	6 	6Aq5A::::
%..C$q''""A$q!tAv,,''A	
QsQBqD))0022A$q''	$rAv,,&a0000000rC   c            
      
   t          d          } t          t          j        |           d          \  }}t	          |dz  | |z  z   dz
  | dddg          }t	          |dz  dz   | dddg          }t	          | dz  d| dz  z  z   d	z   d| z  |z  z   | dz  d
| dz  z  z   dz   |dz  z  z   d| dz  z  d| z  z   |dz  z  z   | dz  dz   |dz  z  z   | dg d          }||z  |k    sJ t	          |dz  | z   | dddg          }t	          |dz  | dz  z
  | dg d          }t	          | dz  d| dz  z  dz  z
  d| dz  z  dz  z
  d| dz  z  d
z  z
  d| dz  z  d
z  z
  d| dz  z  dz  z   d| dz  z  d
z  z   d| z  z   t          dd          z   d| dz  z  d| dz  z  d
z  z
  d| dz  z  d
z  z
  d| dz  z  d
z  z
  d| dz  z  d
z  z   d| dz  z  z   | t          dd
          z  z   dz
  |z  z   d| dz  z  d| dz  z  d
z  z
  d| dz  z  d
z  z   d| dz  z  dz  z   d | dz  z  d
z  z   | t          d!d          z  z
  |dz  z  z   d"| dz  z  d| dz  z  dz  z   d| dz  z  dz  z
  d!| dz  z  d
z  z
  t          d#d
          z   |dz  z  z   d| dz  z  d$| dz  z  d
z  z
  d| dz  z  d
z  z
  d| dz  z  z   | t          dd
          z  z
  t          dd          z
  |dz  z  z   d%| dz  z  d$| dz  z  d
z  z   | t          dd          z  z   |dz  z  z   | dz  d$| dz  z  dz  z
  d| dz  z  dz  z
  t          dd
          z   |dz  z  z   | dg d&          }||z  |k    sJ t	          |dz
  | ddg          }t	          |dz  dz   | dddg          }t	          dd|z  z
  |dz  z   | dddg          }||z  |k    sJ t	          | |dz  z  dz   d|z  z   | dddg          }t	          | dz
  d"| z  dz   |z  z   | |dz  z  z   | dddg          }||z  |k    sJ t	          |dz  dz
  | dddg          }t	          |dz  dz   | dg d'          }t	          d|z  d|dz  z  z   d|dz  z  z   d|dz  z  z
  |dz  z   | dg d(          }||z  |k    sJ t          t          |                     }t          d| z  d)          }t	          | d|z  z   | |dz  z  z   | dt          d          t          d           t          d          z   g          }||z  |k    sJ t          t          |                     }t          t          | dz  | z
                      }||z  
                                }|t          | z  t          |  dz             z  k    sJ d S )*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      s4   A!""21"5"5t<<EAr"a%!B$,*Aq1a&99A"a%!)QAq622A1a4"QT'>B.!A#b&8AqD1QT6MB<NPRTUPU;UU	
1a4"Q$A!"ABE 1234a	G 	GAq5A::::"a%!)QAq622A"a%!Q$,1iii8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_o_o1oqsuvqv0vw 
1a4"QT'!)	bAgai	'!AqD&	01Xb!__3D	DxPRTU	VXZ\]X]]	^ bddeghdhahkmnoqrnrkrstktathq!nnb !ea$	$
 ()!tbAgbj'81QT6!8'ChrSToo'UWY[\W\&\]
 _`abd{d{d{	} 	}A q5A::::"q&!Q,,A"a%!)QAq622A!QrT'BE/1a!Q88Aq5A::::!BE'A+",aAq6::A1q5RTAXrM1Ab!eG;QAq6JJAq5A::::"a%!)QAq622A"a%!)Q99955A!B$2q5.1RU72Qr1uW<r1uDaLaLaLabbAq5A::::#a&&!!A!A#!$$$A!ad(Qr1uW,aSVVc!ffWs1vv=M4NOOAq5A::::$q''""A$q!tAv,,''A	
QA!D!aLL       rC   c                      t          d          } t          t          j        |           d          \  }}t	          |dz
  |                               | dz  | z             }t	          d| z  dz
  |z   |           }||k    sJ t	          |dz  dz   |                               | dz  | dz  z   dz             }t	          d| dz  z  d	| d
z  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  dz
  |z  z   d| dz  z  d| z  z   |dz  z  z   |           }||k    sJ t	          |dz  | z  | z   |                               d| dz  z  | dz  z   dz             }t	          d| d
z  z  d| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  d| dz  z  z   d| dz  z  z   d| z  z
  dz
  |z  z   d| dz  z  d| dz  z  z   | dz  z   d| dz  z  z   | z   |dz  z  z   |           }||k    sJ t	          |dz  dz   |                               d| dz  z
            }t	          d| dz  z  |z
  | |dz  z  z   |           }||k    sJ t	          |dz  dz   |                               | d| dz  dz   z  z
            }t	          | dz  d| dz  z  z   d| d
z  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d | dz  z  z   d| z  z   dz   d| dz  z  d!| dz  z  z   d| dz  z  z   dz
  |z  z   | dz  d| dz  z  z   d| d
z  z  z   d| dz  z  z   d| dz  z  z   d"| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d| dz  z  z   d| z  z   dz   |dz  z  z   |           }||k    sJ d S )#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!""21"5"5t<<EAr"Q$""..q!tAv66A2a4!8r/1--A6666"a%'1%%11!Q$q!t)A+>>A3q"u9s1a4x/"QT'9AadFBs1a4xRS|UWFWW	
1a4!A#r1u	! 	!A6666"a%'!)Q''33AadF1a4KMB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 6666"a%'1%%11!AqD&99A1QT6R-!BE'1155A6666"a%'1%%11!aAl2BC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	8 	8A 666666rC   c                     t          d          } t          t          j        |           d          \  }}t	          ddgt          dd          g| dz  dz            }t          d| z  d| dz  z  dz
  |z  z   | dz  d| z  z
  |dz  z  z   | ddt          d          z  t          z  d	z  d
t          d          z  t          z  dz  t          dd          z   g          }t          |          }||k    sJ t          t	          dgt          dd          g| dz  dz                      }t          |  | dz   dz  dz   |z  z   | |dz  z  z   |           }d}t          |j                  |k    sJ |j        |j        k    sJ d S )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      s   A!""21"5"5t<<EArq!fx1~~&1Q//A1Q31QT6A:r/1QTAaCZQ4FF1qQUVWQXQXyY[|\]~_abfghbibi_ijl_lmo_orz{|~  sA  sA  `A  OB  	C  	CA1A66665!x1~~.1Q7788A1"Aa!R//!BE'91==A	JB::=AM))))))rC   c                     t          d          } t          t          j        |           d          \  }}t	          t          g t          dd          gft          j        gt          j        dgf|                     }t          | dz  t          dd          z
  | dz   | dz  z   |z  z   | dz  |dz  z  z   | dz  |dz  z  z   | ddt          t                    z  ddt          t                    z  z  ddt          t                    z  z  g          }||k    sJ t	          t          g g fdgg f|                     }t          d|z   | ddg          }||k    sJ t	          t          dgg ft          j        gdgf|                     }t          | t          j        z   |z  | |dz  z  z   | dt          t                    t          d          z  t          d          g          }||k    sJ t	          t          dgdgfdgg fd| dz  z                      }t          d| dz  z  dz
  |z  | dz  |dz  z  z   | dt          t          dd                     dz   t          t          dd                     g          }||k    sJ d S )	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      sz   A!""21"5"5t<<EArWb8Aq>>"23qvh5LaPPQQA!A#A.1a4%!A#+r1AAAqDQJNQRTUQUVXZ[V[Q[[]^`a	
488Q$r((
^R488_5	7 	7A6666Wb"XRy!4455A!b&!Q,,A6666Wqc2Y!&A3;;<<A1qv:r/Ab!eG3QDHHSVVOSQSWW;UVVA6666WqcA3Z1#rAadF;;<<A1QT6A:r/AqDQJ61HRQROO@T@T?TWX?X[^_ghjlm_n_n[o[oZo>pqqA666666rC   c                     t          d          } t          t          j        |           d          \  }}t          dd          }t	          t          j        |          d          \  }}t          | dz  |dz  z  | z   |z   |                                           }t          d	|dz   |dz  z  z   |dz  d
|dz  z  z   d|dz  z  z   d
|z  z   |dz  z  z             dd	fg}||k    sJ t          | dz  |dz  z  | dz  z   |dz  z   |                                           }t          d	|dz  d|dz  z  z   d|dz  z  z   d|z  z   dz   |dz  z  z             ddfg}||k    sJ t          | dz  |dz  z  d	z   |dz  z   |                                           }t          d	|dz  d|dz  z  z
  |dz  z
  d|z  z   |z  z   |dz  d|z  z   dz   |dz  z  z             ddfg}||k    sJ t          d| dz  z  |dz  z  d| z  |z  z   | |dz  z  z   |                                           }t          d|z  d|dz  z  d
|dz  z  z
  d|dz  z  z
  d
|z  z   |z  z   |dz  d|dz  z  z   d|z  z   |dz  z  z             dd	fg}||k    sJ d S )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!""21"5"5t<<EArT"""A 0 3 3T::EAr!Q$r1u*q.2-q11==??A
AQA-A!Q$AqD1H1Q31NPRTUPU0UU
V
VXY[\	]^A6666!Q$r1u*q!t+b!e3Q77CCEEA
AA1a4"QT'!9CE!AC!GQ NN
O
OQRTU	VWA6666!Q$r1u*q.2q50!44@@BBA
AA!Q$A!5!!;R ??1a4!A#:PQ>SUWXSXBXX
Y
Y[\^_	`aA6666!AqD&Q,1R/!BE'91==IIKKA
AaC1QT6AadF?Qq!tV#;ac#A2"EEAPQRSUVRVPVYZ[\Y\I\^`bc^cHcc
d
dfgij	klA666666rC   c                     t          d          } t          t          j        |           d          \  }}t          dd          }t	          t          j        |          d          \  }}t          |dz
  | ddg                                          }t          d	|dz   |z  z   d          dfg}||k    sJ t          |d
z  dz   | dddg                                          }t          d|d
z  d|z  z   d
z   |d
z  z  z   ddg          dfg}||k    sJ t          |d
z  dz   | dz  |z  z   | dd
dg                                          }t          ||d
z  z   |d
z  d|z  z   dz   |dz  z  z   d
dd	t          d	d
          t          dd          g          dfg}||k    sJ t          | dz  |dz  z  dz   |z   |                                           }t          d|dz   |z  z   |dz  d|dz  z  z
  d|z  z   |d
z  z  z             ddfg}||k    sJ t          d          \  }}	}
}t          t          d| d
z  z                       }t          |d
z  |d
z  d
|z  z   |d
z  z  z   dd|
g          ddfg}|                                |k    sJ |                                }t          |d
z   |d
z   |d
z  z  z   |dg          ddfg}|                                |k    sJ t          t          |           | z                                             }t          d
|d
z  z  d
|z  z
  |dz  d
|d
z  z  z   |z
  d
z
  |d
z  z  z   ddd
t          t                    z  z   d|g          dd
fg}||k    sJ d S )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     s   A!""21"5"5t<<EArT"""A 0 3 3T::EAr"q&!Q,,88::A
B!a%OQ
/
/	34A6666"a%!)QAq622>>@@A
AA!aQ 66A
?
?	CDA6666"a%!)ad2g-q!aV<<HHJJA
AAIA!b"a%(??!QHUWYZOO]efgik]l]lAm
n
npq	rsA6666!Q$r1u*q.2-q11==??A
AQ
NadQq!tVmac.A2q5-HH
I
I1a	PQA6666 !566Cc3#a1f++&&A
AqDAqD1Q3JA#551c{
C
CQ	JKA==??a	A
QUq1ub!em3c1X
>
>1	EFA==??a#a&&1*%%1133A
Qq!tVac\adQq!tVma.?!.CRU-JJQPQTUVZ[]V^V^T^P^`acfLg
h
hjkmn	opA666666rC   c                     t          d          } t          t          j        |           d          \  }}t	          |dz  d| z  |z  z   | dddg                              d          }| | dz  dz  z
  | d	z  dz  z   | d
z  dz  z
  | dz  dz  z   t          | dz            z   }||k    sJ t	          |dz
  |                               | dz  ddg          }t	          |dz  dz   | dddg          }||z                      d          }d| dz  dz  z   | dz  dz  z   d| dz  z  dz  z
  d| dz  z  dz  z
  t          | dz            z   }||k    sJ t	          d| z   |dz  z  |z   | dddg          }||z  |z                       d          }d| z   | dz  z
  d| dz  z  dz  z   d| dz  z  dz  z
  d| d	z  z  dz  z   d| dz  z  dz  z
  d| d
z  z  dz  z   d| dz  z  dz  z
  d| dz  z  dz  z   t          | dz            z   }||k    sJ t	          dd| z  z   d| dz  z  z
  d| z  d| dz  z  z
  d| dz  z  z
  |z  z
  dd| dz  z  z
  d| dz  z  z   |dz  z  z   | dddg                              d
          }| | dz  dz  z   d| dz  z  dz  z
  | d	z  d z  z   d!| dz  z  d"z  z
  t          | d
z            z   }||k    sJ t	          dd| z  z   d| dz  z  z
  d| z  d| dz  z  z
  d| dz  z  z
  |z  z
  dd| dz  z  z
  d| dz  z  z   |dz  z  z   | dddg                              d
          }dd| dz  z  dz  z
  | dz  dz  z
  d	| dz  z  d#z  z
  d| d	z  z  d$z  z
  d| dz  z  d%z  z
  t          | d
z            z   }||k    sJ t          t          |           | z                                 d          }t          d&          }t          |           | z                       d          }|
                    |d'dt          t                    z  z            |k    sJ t          t          | dz  | z                                           d          t          | dz  | z                                 d          k    sJ t          d| z  d| dz  z  z
  t          dd          z                                            d| z  d| dz  z  z
  t          dd          z                                  k    sJ t          t          | dz  | z
                                                      t          | dz  | z
                                            k    sJ t          t          |           dz  | dz  z  d'g d(i)                              d          t          |           dz  | dz  z                      d          k    sJ t          t          |           dz  | dz  z  d*                              d                                          t          |           dz  | dz  z                      dd+                                          k    sJ t          t          | dz
            dz  | dz
  dz  z  dd'g d(i,                              d          t          | dz
            dz  | dz
  dz  z                      dd-          k    sJ d S ).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!""21"5"5t<<EAr"a%!A#b&.!QA77>>>DDA	AqDF
QT"Wq!tBw&Ac1AaeHH<A6666"q&!$$00Aq1#>>A"a%!)QAq622A	
QA	AqDF
QT"Wr!Q$ws{*SAXd]:Qq"uXXEA66661q5"a%-",aQF;;A	
QR  A	A1qAvax"QT'"*,r!Q$wrz9C1HSLH1WS[	A:e#	$&)!Q$hsl	356q"uXX	>A66661QqS51a4<BqD1a4K!Q$,>+BB	
1QT6!AqD&"a% !"A1v	/ 	//5vv{{ 	AqDF
Qq!tVBYAb(2ad73;61a4@A6666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ggMA6666#a&&1*%%,,r,22A
%..C	Q!b!!A66#r1T"XX:''1,,,,T!Q$(^^,,33b399T!Q$(^^=R=RUW=R=X=XXXXXacAadFlXa^^;<<CCEE1Q3QRSTVWSWQW<ZbcdfgZhZhJhIpIpIrIrrrrrd1a46ll++2244ad1f8M8M8O8OOOOOSVVQYq!t^ZZZ0@AAAHH2HNNSVWXSYSY[\S\]^`a]aSaRiRilnRiRoRoooooSVVQYq!t^22299B9??HHJJsSTvvWXyYZ\]Y]~NeNehjopNeNqNqNzNzN|N|||||S1XXq[!A#1aR<LMMMTTWYTZZ!HHaK1q ((A(445 5 5 5 5 5rC   c                  F	   t          d          } t          t          j        |           d          \  }}t	          d| z   |dz  z  |z   | dddg          }g d}d}t          |                    |d	          d
                   |k    sJ ddt          z  z   g}t          d          D ]+}|	                    |d
         dz   dt          z  z              ,t          d          D ]+}|	                    |d
         dz   dt          z  z
             ,d}t          |                    |d	          d
                   |k    sJ t	          |dz  dz   | dddg          }d}t          |                    |d	          d
                   |k    sJ dg}t          d          D ] }|	                    |d
         dz              !|	                    t          dz             d}t          |                    |d	          d
                   |k    sJ dt          z  g}t          d          D ](}|	                    |d
         dt          z  z              )t          d          D ] }|	                    |d
         dz              !|	                    t          dz  t          z              t          d          D ](}|	                    |d
         dt          z  z
             )d}t          |                    |d	          d
                   |k    sJ t	          |dz  dz   | dddg          }dg}t          d          D ] }|	                    |d
         dz              !|	                    t                     d}t          |                    |d	          d
                   |k    sJ dt          z  g}t          d          D ](}|	                    |d
         dt          z  z              )t          d          D ] }|	                    |d
         dz              !t          d          D ](}|	                    |d
         dt          z  z
             )t	          |dz  dz   | dddg                              |d	          }d}t          |d
                   |k    sJ d S )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!""21"5"5t<<EAr 	1q5"a%-",aQF;;A 	988AA'**2.//14444 
s1uA1XX " "	2s3q5!!!!2YY " "	2s3q5!!!! 	2A'**2.//14444 	"a%!)QAq622A4A'**2.//14444 
A2YY  	2HHRTNNNA'**2.//14444 
QA1XX  	2s1u2YY  	2sHHRT!V2YY  	2s1u 	5A'**2.//14444 	"a%!)QAq622A	A2YY  	2tHHRLLLA'**2.//14444 
QA1XX  	2s1u2YY  	2s2YY  	2s1u"a%!)QAa51177'7JJA4A";;!rC   c                  P	   t          d          } t          t          j        |           d          \  }}t	          d| z   |dz  z  |z   | dddg          }g d}d}t          |                    |          d                   |k    sJ d	d	t          z  z   g}t          d
          D ]+}|	                    |d         d	z   d	t          z  z              ,t          d          D ]+}|	                    |d         d	z   d	t          z  z
             ,d}t          |                    |          d         
                    d                    |k    sJ t	          |dz  dz   | dddg          }d}t          |                    |          d                   |k    sJ d	g}t          d          D ] }|	                    |d         d	z              !|	                    t          dz             d}t          |                    |          d                   |k    sJ d	t          z  g}t          d
          D ](}|	                    |d         d	t          z  z              )t          d          D ] }|	                    |d         d	z              !|	                    t          dz  t          z              t          d          D ](}|	                    |d         d	t          z  z
             )d}t          |                    |          d                   |k    sJ t	          |dz  dz   | dddg          }dg}t          d          D ] }|	                    |d         dz              !|	                    t                     d}t          |                    |          d                   |k    sJ d	t          z  g}t          d
          D ](}|	                    |d         d	t          z  z              )t          d          D ] }|	                    |d         d	z              !t          d          D ](}|	                    |d         d	t          z  z
             )t	          |dz  dz   | dddg                              |          }d}t          |d                   |k    sJ d S )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!""21"5"5t<<EAr 	1q5"a%-",aQF;;A 	988AA

21$$$$ 
s1uA1XX " "	2s3q5!!!!2YY " "	2s3q5!!!! 	"A

2  ##$$)))) 	"a%!)QAq622A3A

21$$$$ 
A2YY  	2HHRTNNNA

21$$$$ 
QA1XX  	2s1u2YY  	2sHHRT!V2YY  	2s1u 	4A

21$$$$ 	"a%!)QAq622A	A2YY  	2tHHRLLLA

21$$$$ 
QA1XX  	2s1u2YY  	2s2YY  	2s1u"a%!)QAa51177::A4A";;!rC   c                  d   t          d          } t          t          j        |           d          \  }}t	          t          |           | z  dz            }t          d| z  d| dz  z  dz   |z  z   d| z  |dz  z  z   | dz  |dz  z  z   | dd	dt          d
d          g          }||k    sJ t	          d	d	| dz  z   dz  z            }t          d| z  | dz  d	z   |z  z   | dd	g          }||k    sJ t	          t          |           t          |           z  | t          d	| z             z  z             }t          d| dz  z  d| dz  z  z   d| z  z   dz   d
| dz  z  d| dz  z  z
  d| dz  z  z
  d| z  z
  |z  z   d| dz  z  d| dz  z  z   d| dz  z  z   d| dz  z  z   d| z  z   dz
  |dz  z  z   d
| dz  z  d| dz  z  z
  d| dz  z  z
  d| dz  z  z   | z
  dz   |dz  z  z   | dz  d| dz  z  z   | dz  z
  d| dz  z  dz  z
  | z   t          dd          z   |dz  z  z   | dg d          }||k    sJ t	          | t          |           z  t          |           z   d	z             }t          |  dz
  |z  | dz   |dz  z  z   |  dz
  |dz  z  z   | dz   |dz  z  z   | dg d          }||k    sJ | t          |           z  t          |           z   d	z                       d          |                    d          k    sJ t	          t          d	| z             dz  d	z             }t          |d| z  dz   |dz  z  z   | dz  d| z  z   d	z   |dz  z  z   | dg d          }||k    sJ t	          t          |           dz  | z             }t          d| dz  z  d| dz  z  z
  dz   |dz  z  d| dz  z  | dz  z
  |dz  z  z   | dz  t          d	d          z   |dz  z  z   | ddd	dt          z  dg          }||k    sJ t	          t          |           | z            }t          | dz   dz   d| z  |z  z
  | dz  |dz  z  z   | ddd	g          }||k    sJ t	          t          d|                     }t          | dz  dz
  | |z  z   | dz  |dz  z  z   | dddg          }||k    sJ t	          t          d|           t          |           z             }t          | dz   | dz  z
  t           j        z   | dz  | dz  z
  t          dd          z
  |z  z   | dz   | dz  z   d	z   |dz  z  z   | dz  | dz  z   |dz  z  z   | ddd	t           j        g          }||k    sJ t	          t          |           dz  | z            }t          dd| z  |z  z   d|dz  z  z   | |dz  z  z   | dg d          }||k    sJ t	          t          |           dz  | z  d          }t          dd| z  |z  z   d|dz  z  z   | |dz  z  z   | dt          d          dz  dz  t          d          t          d          z  t          d          dz  dz  z
  dt          d          dz  z  dz  t          d          dz  z   t          d          t          d          z  z
  g          }||k    sJ t	          t          |           dz  t%          d| z            dz  z
  t%          d          dz  z             }t          d|z  d| z  |dz  z  z   d|dz  z  z   | |dz  z  z   | dt          d           dz  t&          dz  z
  t%          d          dz  z   dd	dg          }||k    sJ |                                }t          |           dz  t%          d| z            dz  z
  t%          d          dz  z   }||k    sJ t	          | t           j        z  d	          }t          | |z  t           j        z
  | d	d	g          }||k    sJ t	          t+          d	| dz  z                       }t          |  | dz  d	z   |z  z   | dd	g          }||k    sJ t	          t+          |           t+          d| z            z                                             t+          |           t+          d| z            z   z
                                  dk    sJ t	          d| z  dt+          |           z  z                                             d| z  dt+          |           z  z   k    sJ t	          | dz  | dz  z   d| dz  z  z   d| z  z   dz   | dz  z  d          }t          d
| dz  z  | dz  z
  d| z  z   dz   | dz  | dz  z   d| dz  z  z   d| dz  z  z   d| z  z   |z  z   | dd
g di          }||k    sJ t	          d	| d	z
  dz  z  dd	          }t          d| d	z
  |z  z   | d	d
g di          }||k    sJ t          d          }t	          t+          || z            |           }|                                t+          |          t+          |           z  k    sJ d S )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     sW   A!""21"5"5t<<EAr3q66!8a-((A!A#1a4!R/!A#b!e);ad2q5jH!Q	
AxA	! 	!A6666!Qq!tVaK-((A!A#A2-q!aS99A6666#a&&Q-#ac((
23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MMM	C 	CA 6666!CFF(3q66/!+,,AA262+QA5!aQF!a%QSUVQVVXY	<<<	 	A6666c!ffHSVVOA%%%++qxx"x~~====#a!e**a-!+,,A"!aQ.!Q$1*q."a%1GGAyyyYYA6666#a&&!)a-((A1QT6AadF?Q.A51a4!A#r1u8LL	
Ax1~~	r1u$%&'Q1R4O	= 	=A6666$q''!)$$AAqD519qs2v-1RU
:Aq1a&IIA6666'!Q--((A1a4!8qt+ad2q5j8!QAGGA6666'!Q--#a&&011AAqD51Q3;/AqD1Q3J!Q4OQS3SSXY[\X\W\_`ab_bWbefWfhjlmhmVmm	
A!RUq1a.	2 	2A6666#a&&!)A+&&A!ac"f*qQw.2q58!Q			JJA6666#a&&!)A+!,,,A11b.Ar1u942q5y@!QQQRSTAs1vvA	!#RA	\!^c!ffai%?#a&&Q-%OIQ 	R 	RA6666#a&&(R!WWQY.Aq899A!B$1RU*Qr1uW4qQw>1
a&&Z\	!BqEE!G	+Q15	7 	7A6666			AAq2ac7719r!uuQw&A6666!QV)***A!B$-As33A6666$q1a4x..))AA2!Q$(B.1qc::A6666d1ggQqS		122::<<	a4!99	'xzzQ/ / / /QqS477]++33551QtAwwYFFFF1a419Qq!tV+AaC/11a47BBBA2ad7QT>AaC/!31q!ta1f8LqQRTUQUv8U	!98 AIII	( 	(A6666!QqS1H*Q1555A1Q
*Aq2yyy/BBA6666A$qs))q)))A99;;$q''$q''/))))))rC   c                  L   t          d          } t          t          j        |           d          \  }}t	          |dz
  | ddg                                          }dt          g g d| z            z  }||k    sJ t          t	          d| z   |z  dz
  | ddg                                                                                    }d| dz  z  d| dz  z  z   d| z  z   dz   }||k    sJ t	          d| z   |dz  z  |z   | dddg                                          }| dz   t          dd	|            z  dz  | z   }||k    sJ t	          d| z  |z  |dz  z   | dddt          t                    z  g                                          }d| z  t          t          j        ft          dd          f| dz             z  t          t                    z  }||k    sJ t          t	          d| z  |z  |dz  z   | ddd
t          t                    z  g                                                    }t          |           }|                    t                    |k    sJ t          t	          | dz  dz
  | |z  z   | dz  |dz  z  z   | ddt          j        g                                                    }t!          d|           }||k    sJ t          t	          | |dz  z  |z   | z   | dddg                                                    }t!          d|           }||k    sJ d S )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!""21"5"5t<<EAr"q&!Q,,5577A	E"b!A#A6666%q1ulQ&61qcBBKKMMNNUUWWA	!Q$1a4!A#!A66661q5"a%-",aQF;;DDFFA	
AeIvr***1,q0A6666!A#b&2q5.!QAd2hhJ@@IIKKA	!E16)hq!nn.A666tBxx?A6666%ac"fr1unaQ488<LMMVVXXYYAQA99T??a	&1qAbD'81a4A:'E	1q!&k #8::
' 
'A1A6666%aAglQ&61q!fEENNPPQQA1A666666rC   c                     t          d          } t          t          j        |           d          \  }}t	          |dz
  | ddg                                          }t          |           }||k    sJ t	          |dz  dz   | dddg                                          }t          |           }||k    sJ t	          |dz  dz
  | dddg                                          }t          |           }||k    sJ t	          dd| z  dz
  |z  z   | dz  | z
  |dz  z  z   | dddg                                          	                                }d| dz  d| z  z
  dz   z  }||k    sJ t          t          |           dz  | z                                | d| f                                          }t          |           dz  | z                      | d| f          }||k    sJ t          d          \  }}}}t          t          d| dz  z                                                       }|t          | dz  dz             z  }||k    sJ t          t          d| dz  z                                                                                       }|| z  | dz  dz   z  }||k    sJ t          t          |           | z                                             }d|z  | z  dt!          t"                    z  |z  t          |           z  dz  z
  | z   d| z  t!          t"                    z  z   }||k    sJ t          t!          |           d	                                          }|t!          |           k    sJ t          t!          |                                                     t!          |           k    sJ t          t!          d| dz  z                                                       }|t!          d| dz  z             k    sJ t          d| dz  z  dz   t%          dd          z                                            }|d| dz  z  dz   t%          dd          z  k    sJ t          t!          | dz   d| z  z                                                       }|t!          |           t!          |  dz             z  k    sJ t          d
| dz  z  d| z  z   t%          dd          z                                            }| t%          dd          z  d
| dz  z  dz   t%          dd          z  z  }||k    sJ t'          t)          dt*          j        f|                     }t/          t)          dt*          j        f|                     }	t1          d          }
t1          d          }|                                                    |d|
di          |	z
                                  dk    sJ ddgt*          j        dgi|_        |                                |	k    sJ t          | dz                                            | dz  k    sJ t          d| dz  z  d| dz  z  z
                                            	                                d| dz  z  d| dz  z  z
  k    sJ t          d          }t          d| z            t          || z  |           z                                  }d|z  | dz  z  }||k    sJ t          d| z            t          || z  |           z                                   }| |dz   z  }||k    sJ t          d| z            t          |           z                                   }|d| z  k    sJ d S )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!""21"5"5t<<EAr"q&!Q,,4466AAA6666"a%!)QAq622::<<AAA6666"a%!)QAq622::<<AQA6666!qsQwl*	
A2q5QA	( 	((/		&&(( 	1a4!A#:>A6666#a&&!)A+&&00!Q;;CCEEA	Q1Aq	**A6666 !566Cc3#a1f++&&..00AC1qMMA6666#a1f++&&++--5577AAq!taxA6666#a&&1*%%--//A	#a!DHH*S.Q'))A-!DHH<A6666$q''a(((0022AQ<<<<T!WW%%--//477::::$q1a4x..))1133AQq!tV1QT6A:A677??AAA1a4!hq!nn,,,,,$1uQqSy//**2244AQaR!V$$$$$2ad71Q3;!Q788@@BBA	8Aq>>2ad7Q;!Q77A66665AF:q1122AE(QVJ2233A
--C
--CIIKKc!S^,,q0::<<AAAAsAFQC AD99;;!QT""**,,14444Qq!tVAadF]++3355<<>>	!Q$qAv   A	3q5	!	!"3AaC";";	;DDFFAAad
A6666	3q5	!	!"3AaC";";	;DDFFA	1s7A6666	3q5	!	!"3A"6"6	6??AAAA::::::rC   c                     t          d          } t          t          j        |           d          \  }}t	          t          |           dz  | z  d                              | ddf          }d}t          |          |k    sJ t	          t          |                                         | d| f                                          }dt          |           z
  }||k    sJ t	          t          |                                         | ddf          }dt          d          z
  }||k    sJ t	          t          |           | z  d                              | ddf          }d	}t          |          |k    sJ t	          t          |           dz  | z  d                              | ddf          }d
}t          |          |k    sJ t	          t          |           | z            }|                    |                                           t          |           k    sJ |                    | ddf          t          d          k    sJ t	          t          |           dz  | z            }|                                }|                    |                                           |                    | d| f          k    sJ |                    | ddf          |                    | ddf          k    sJ t	          d| z  d                              |                                           t          |           k    sJ t	          | dz   dz  t          |            z  d                              |                                           }| dz   d| dz  z  z
  d| z  z
  dt          | dz             z  z   dz
  t          |            z  }||k    sJ t	          t          |           dz  | dz  z  dg di                              |                                           }t          d| z             t          |           dz  | z  z
  }||k    sJ t	          t          | dz  | z                                           |                                           }| t          dd          z  d| dz  z  d| z  z   dz   z  | t          | dz             z  t          t          |                     z  z
  d| z  t          | dz             z  z  }||k    sJ t	          t          | dz  dz                                           |                                           }t          | dz  dz                                 |           }||z
                                  dk    sJ t	          d| dz  z  dg di          }t	          d| dz  z  d          }||k    sJ t	          t          |           dz            }||z                      |                                           t          d| z             t          |           dz  | z  z
  k    sJ d S )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!""21"5"5t<<EAr#a&&!)A+!,,,661ayAAAA77a<<<<#a&&!!++Q1I66>>@@A	CFF
A6666#a&&!!++Q1I66A	CFF
A6666#a&&(q)))33Q1I>>AA77a<<<<#a&&!)A+!,,,661ayAAAA77a<<<<#a&&(##A;;q>>!!##r!uu,,,,;;1ay!!RUU****#a&&!)A+&&A			A;;q>>!!##q{{Aq!9'='=====;;1ay!!Q[[!Q%;%;;;;;QqSQ'''11!44<<>>#a&&HHHH1q51*S!WW,444>>qAAIIKKA
Q$1a4"Q$	3q1u::	-	2CGG;A6666#a&&!)AqD.b***-=>>>HHKKSSUUA	AaC3q6619Q;A6666$q!tAv,,''11!44<<>>A	
HQNN	AadFQqSL1,	-$q1u++eDGGnn0L	LqQRsSWXY\]X]S^S^_A6666$q!tAv,,''11!44<<>>A	ad1f  ##AaC>>q    !AqD&b^444A!AqD&+++A6666#a&&!)$$AaC??1%%''BqsGG8c!ffaik+AAAAAAArC   c                     t          d          \  } }t          t          j        |           d          \  }}t	          | |dz  z  dz   | dddg          }|                                                                |                                                                                                k    sJ t	          |dz  dz
  | dddg          }|                    | d                                          |                                k    sJ t          t          |                     }|                                                                t          |           | z  k    sJ |                    |          dk    sJ t          d          \  }}}}t          |           }	|                    |                                           |	                                k    sJ |                    | d                                                              |t          dd                                                    |	                    | d                                          k    sJ |                    | d                                                              |t          dd          |di          |	                    | d                                          k    sJ d S )	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??DAq!""21"5"5t<<EAr!BE'A+q!aV44A6688!1!1!3!3!<!<!>!>>>>>"a%!)QAq622A66!Q<<!!QYY[[0000"Q%%  A6688Q))))66!99>>>> !566Cc3
1A66!99!&&((****66!Q<<!!&&sHROO<<CCEEPQSTI\I\I^I^^^^^66!Q<<  %%sHROOS!&DEEPQSTI\I\I^I^^^^^^^rC   c                     t          d          } t          dt          d| z            z            }|                                dt          d| z            z  k    sJ t	          |                    |                                                     dk    sJ t          t          j        |           d          \  }}t          d| z            }t          dd| z  |z  z   | dd	dgi          }||k    sJ |                                d| z  k    sJ t	          |                    | d	d
f                    t	          d| z                      | d	d
f                    k    sJ t          d          \  }}t          t          | |z  |z            |           }|                                t          | |z  |z            k    sJ |                    |                                           t          | |z  |z             d	z   ||z  z  k    sJ t          t          | |z  |z             |                               |                                           }t          |          t          | |z  |z             z
  |z  }||k    sJ t          d          }t          || z  |           }|                                || z  k    sJ |                    |                                           || d
z  z  d
z  k    sJ t          d          \  }}	t          |           t          dt          |           z            z   }|                                                    |d          }|| z
  dt          d| z            z  z
  dk    sJ t          |           t          dt          |           z            z  }|                                                    |	d          }|d| z  t          d| z            z  z
  dk    sJ d S )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%jj.))A99;;#c#a%jj.((((A&&(())-KKKKK!""21"5"5t<<EAr,q.))A=\!^R,??AL>GZ[[A666699;;,q.((((Q1I&&''4a0J0JAqRS90U0U+V+VVVVV6??DAq#ac!e*****A99;;#ac!e**$$$$;;q>>!!##QqSUa!A#'>>>>>#acAg,,!,,,66q99AACCA	Q#acAg,,	!A6666A!A#q!!A99;;!A#;;q>>!!##qAvax////z""HC!0SVV<<<A			a  Aq53s3q5zz>!Q&&&&!0SVV<<<A			a  As1uSQZZ1$$$$$$rC   c            	      
   t          d          } t          t          t          |                                                               t          |           k    sJ t          t          t          |                                                               t          |           k    sJ t          t          t          |                                                               t          |           k    sJ t          t          t          |                                                                                               t          |           k    sJ t          d| dz  z  dz  dz                                             d| dz  z  dz  dz   k    sJ t          t          t          d|           d                                                    t          d|           k    sJ t          t          dd          dfd	|           }t          |                                          t          |          k    sJ t          t          j        t          d          ft          d          f|           }t          t          |                                                    t          |          z
                                  d
k    sJ t          t          dt          j        f|                     }t          t          dt          j        f|                     }t#          d          }t#          d          }t#          d          }t          |                                                              |d|d
i          |z
                                  d
k    sJ d
dgt          j        d
gi|_        t          |                                          |z
                                  d
k    sJ t          t          t          j        |           d          }|                                |t          |           z  |t          |           z  z   |t          |           z  z   t+          |           z  z
                                  d
k    sJ t          t          t          j        |           t          dd          t+          d          t+          t,                    z  t+          d          t+          t,                    z  gi          }|                                t          t          j        |           z
  t          t          dd          |           z
                                  d
k    sJ d S )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     sU   A(Q00;;==>>#a&&HHHH(Q00;;==>>#a&&HHHH(Q00;;==>>#a&&HHHH(Q00;;==>>GGIISQRVVSSSSQq!tVAX\**55771QT6!8a<GGGG(AqAAALLNNOOSZ[\^_S`S`````xA#R++Aa==##%%Q7777quaddmaddXq))A
1002233k!nnDLLNNRSSSSS5AF:q1122AE(QVJ2233A
--C
--C
--C'',,c!S^<<q@JJLLPQQQQQsAFQC AD''!+55771<<<<'!&!,,u===AIIKK3s1vv:CFF
2SQZ?aHHRRTTXYYYYY'!&!,,(2q//DGGDQSHHDTVZ[\V]V]^bce^f^fVfCg1hiiiAIIKK'!&!,,,wxA/J/JJTTVVZ[[[[[[[rC   c                     t          d          \  } }t          dd          }t          | |f                                         }t          d          t	          |  |z   dz   d|dz  z  z            z  dt          t
                    z  |z  z  }t          |||          }t          |                    |          d          \  }}t          |  |dz  z  ||dz  z  z   d|z  z   |          }||k    sJ d S )	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    FOOEB		%	%	%B
2r6
AQrcAg\M1RU7+,,,aRjm<A	1a	*	*	*B!!//!"4"4d;;EAr	RCAI"a%/Ar691	=	=B888888rC   c                     t          dd          \  } }}|| dz
  z  | dz   |dz
  z  z  t          | |          z  }t          | |f                                         }t	          |||          }t          |                    |          d          \  }}t          | ||  |z
  dz   z  z   dz
  |dz  |z
  |z  z   |          }||k    sJ d S )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---GAq!	AE
QBFa!e$$T!QZZ/A
1a4A	1a	*	*	*B!!//!"4"4d;;EAr	AA26A:.2q!taxmCQ	G	GB888888rC   c                     t          dd          \  } }}||  z  || dz
  z  z  t          | |z            z  t          |           z  }t          | |f                                         }t          |||          }t          |                    |          d          \  }}t          |  dz   ||z  z   ||z  z   |          }||k    sJ d S )Nr   Tr   r,   r   r*   )	r   r   r   r&   r   r   r   r8   r   r   s	            rA   
test_gammar     s    g---GAq!	QBAE
3r!t99$U1XX-A
1a4A	1a	*	*	*B!!//!"4"4d;;EAr	QBFQqSLQF2A	6	6B888888rC   c                  $   t          d          \  } }t          |                                         }t          |                    |           d          \  }}t          d| |z  z   |           | z  }t          || |z  z   |           }||k    sJ d S )Nx nr*   rh   r   r&   r   r   r8   r   r)   re   r   r   r*   r   r   s          rA   test_symbolic_powerr     s    5>>DAq
1A!!//!"4"4d;;EAr	B1b&=!	,	,	2B	A!R<	+	+B888888rC   c                      t          d          } t          t          j        |           d          \  }}t	          d| |z  z   |           dz  }t	          d| |z  z   |           }||k    sJ d S )Nr)   r*   rh   r]   r+   )r   r   r&   r8   r   )r)   r   r*   r   r   s        rA   test_negative_powerr   )  so    A!""21"5"5t<<EAr	B1b&=!	,	,	2B	A!R<	+	+B888888rC   c                  0   t          d          \  } }t          |                                         }t          |                    |           d          \  }}t          d| |z  z   |           |dz
  z  }t          | dz   | |z  z   |           }||k    sJ d S )Nr   r*   rh   r.   r   r   s          rA   test_expr_in_powerr   2  s    5>>DAq
1A!!//!"4"4d;;EAr	B1b&=!	,	,Q	7B	QBFq"f,a	0	0B888888rC   c                  ,   t          dd          } t          t          j        |           d          \  }}t	          | dz  |j        j        |j        j        g|          }t	          | dz  d| g|          }||k    rJ |j        d         }||k    rJ d S )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!""21"5"5t<<EAr	q!tQV[!&+>	B	BB
1a|Q
/
/CSyyyy 
	BbyyyyyyrC   c                  @   t          dd          } t          t          j        |           d          \  }}t	          | dz  |j        j        |j        j        g|          }t	          |j        j        g|          }t          d          D ]}|||z  k    sJ ||z  }d S )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!!4!4d;;DAq	q!tQV[!&+>	B	BBafj\1--A2YY  BEzzzz	R 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 M M M M M M M ! ! ! ! ! ! 0 0 0 0 0 0 0 0 0 0 " " " " " " / / / / / / / / = = = = = = = = ? ? ? ? ? ? ? ? 9 9 9 9 9 9 ? ? ? ? ? ? ? ? 2 2 2 2 2 2 7 7 7 7 7 7 G G G G G G G G G G G G 9 9 9 9 9 9 : : : : : : : : # # # # # #             2 2 2 2 2 2 . . . . . . 0 0 0 0 0 0 , , , , , ,  "  D  4   1  1  1F#! #! #!L  4* * *  $  &  8"5 "5 "5HK K KZK K K\F* F* F*P  4; ; ;|*B *B *BZ_ _ _"% % %>\ \ \4
 
 
	 	 		 	 	             rC   