a
    kh                     @   s(  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d Z:dd Z;dd Z<dd Z=dd Z>d d! Z?d"d# Z@d$d% ZAd&d' ZBd(d) ZCd*d+ ZDd,d- ZEd.d/ ZFd0d1 ZGd2d3 ZHd4d5 ZId6d7 ZJd8d9 ZKd:d; ZLd<d= ZMd>d? ZNd@dA ZOdBdC ZPdDdE ZQdFdG ZRdHdI ZSdJdK ZTdLdM ZUdNdO ZVdPS )Q    )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                  C   s  t d} tt| d\}}||jks*J |t|jj|jjg|ksHJ | | | d |d   td| | d g|ksxJ | d d | | |d   t| d d dddd| g|ksJ | | | d  d || d |    d d| d	  d
| d  |  d| d  |d   | d  |d   ks&J | |d  | d d |d   || d   }d|  d| d  |  | d |d   d| d  |  d |d   d| d  d|   |d   | d d| d   |d   | d d |d	   }||ksJ d S )NxDx   r            i   i   i   	         <   
      )	r   r   r%   old_poly_ringZderivative_operatorr   basezerooner'   Rr(   pq r>   R/var/www/auris/lib/python3.9/site-packages/sympy/holonomic/tests/test_holonomic.pytest_DifferentialOperator   s8    00,&r@   c                  C   s  t d} tt| d\}}t|d |  | }td| | |d   | }||ksTJ t| | d | }t|d | }t| d | d d |  | d |  |d   | }|| |ksJ t| | |d | d d   | }t|d | }td| d  d|   d d	| d  d
| d   d|   d |  d| d  d| d   d|   d |d   d| d  d| d   d| d   d|   d |d   | }|| |ksJ t|d d | }t| d | | }t| d  d| d   d| d   d| d   | d  d| d   | d  d| d   d| d    d!| d   d |  | d d| d   d| d   d| d   | d  d| d   |d   | d d| d   d| d    d!| d   d |d   | }|| |ksJ | d d|   d" }| d d |   d }|| |  }|| |  }t|| t||  }td| d  d|   d d#| d  d| d   d$|   d |  | d d| d   d%| d   d|   d& |d   | }||ksJ d S )'Nr'   r(   r)   r*   r,   i~      iy   i     ir1         r0      &   r5   (   r+      -   i  r4   i'  r-   iv        r.      r/   >      G   )r   r   r$   r6   r   diff)r'   r;   r(   r<   r=   rsr>   r>   r?   test_HolonomicFunction_addition+   sl    2"@*6B4

*@2rV   c                  C   s  t d} tt| d\}}t||  | |d   | }t| | ||   |d  | }td| d  d| d   d| d   d d| d	  d| d   d|   |  d| d  d
| d   d| d   d |d   d| d	  d| d   d|   |d   d| d  | d  |d   | }|| |ks,J t|d d | }t|d | }tdd|  d|d   | }|| |ks|J t|d d |  | | }t||  d d | }td| d  d| d   d| d	   d| d   d| d   d| d   d|   d d| d  d| d	   d| d   d| d   d| d   d|   d |  d| d  d| d	   d| d   d| d   d| d   d|   d |d   d| d	  d| d   d| d   d| d   d|   |d   d| d	  d| d   | d  |d   | }|| |ksJ t| |d  d | }t||  |  | }t| d d|  d |  | |d   | }|| |ksJ d S )Nr'   r(   r)   r/   r-   r1   r,   rE   r+   r2      r*   r.   rL         rJ   rG   r4   )r   r   r$   r6   r   r'   r;   r(   r<   r=   rT   r>   r>   r?   %test_HolonomicFunction_multiplicationM   s\    L.&TJN



&*r\   c                  C   sj   t d} tt| d\}}t||  | |d   | }t|| }tdD ]}||| ks\J ||9 }qHd S )Nr'   r(   r)   r4   )r   r   r$   r6   r   range)r'   r;   r(   r<   anr>   r>   r?   test_HolonomicFunction_powerg   s    
r`   c                  C   s\  t d} tt| d\}}t|d | ddg}t|d d | dddg}td| |d  |d  | dg d}|| |ksJ t||  |d  | dddg}t|d |  | dddg}t| d	  | d d	  | d  tdd	 | d | d d	  | tdd	  d |  | td
d tdd	 |d   | d | tdd	  tdd	 |d   | d | d	  tj |d	   | dg d}|| |ksJ t|d d	|  |  | d  | ddd	g}t|d d | dddg}t| d d| d	   d| d   d d	| d  d| d   d|   |  | d d| d	   d| d   d |d   d	| d  d| d   d|   |d   | d	 d| d   d |d	   | dg d}|| |ksJ t|d |  | dg d}t|d | ddg}t| d  |  d | d |  |  |  d |d   | d |d	   | dg d}|| |ksBJ tt	| }td|  dd}t| d d | d d|   |  | d d |d   | d d|   |d   | dt	dd dt
d t	d d g}|| |ksJ t d}tt| }tt| d |  }||  |t d  }|tt|  t|  d  t|  ksXJ d S )Nr'   r(   r*   r   r,   r)   )r1   r,   r)   r1   r.   )r)   r)   rX   r)   r-   r+   $       r0   r4   )r1   r+   ra   i)r,   r   r*   )r1   r*   r)   x0C_1)r   r   r%   r6   r   r   r   Halfr   r   r   r   to_exprsubsr   expand)r'   r;   r(   r<   r=   rT   rh   r>   r>   r?   test_addition_initial_conditionq   sn    &R&
*H*&

4
L&rm   c                  C   s  t d} tt| d\}}t|d | |  d | dddg}t|d d | dddg}t| d d| d   d	 d|  |  | d d
| d   d |d   d| d  d|   |d   | d d |d   | dg d}|| |ksJ t|d |  | dddg}t|d | d  | dg d}t| d d| d  d  d| d  d  d| d  d
  d| d  d
  d| d  d  d| d  d
  d|   tdd d| d  d| d  d
  d| d  d
  d| d  d
  d| d  d
  d| d   | tdd
  d |  d| d  d| d  d
  d| d  d
  d| d  d  d | d  d
  | td!d  |d   d"| d  d| d  d  d| d  d  d!| d  d
  td#d
 |d   d| d  d$| d  d
  d| d  d
  d| d   | tdd
  tdd |d   d%| d  d$| d  d
  | tdd  |d   | d d$| d  d  d| d  d  tdd
 |d   | dg d&}|| |ksJ t|d | ddg}t|d d | dddg}tdd|  |d  | dddg}|| |ks J t| |d  d d|  | dddg}t| d d"|  d |  | |d   | dddg}|| |ksjJ t|d d | dddg}t|d d | dg d'}td| d|d   d|d   d|d   |d  | dg d(}|| |ksJ tt| }td|  dd)}t| d|  | |d   | dtdtd td g}|| |ksXJ tt	| }tt	| d |  }|| 
 }|t|  t	|  d  ksJ d S )*Nr'   r(   r)   r*   r   r,   r1   rF   r3   r0   r2   rJ   r4   )r,   r1   r)   r,   )r,   r,   r,   r/   %   r.      r-      r+         i  rI      b      R   L      P   rX      @   rO   )r,   r,   r,   rb   ii)r*   r)   r*   )r*   r+   rF      r|   r)   rf   )r   r   r%   r6   r   r   r   r   r   r   rj   r   r[   r>   r>   r?   %test_multiplication_initial_condition   s    "D
H:
:LV8
"&2B8r}   c                  C   s  t d} tt| d\}}t|d | | d |  }td|  d | | }||ksZJ t|d d | | d | d  d }td| d  d	| d
   d| d   d| d   d| d  d |  d| d  d|   |d   | }||ksJ t|d |  |  | d| d  | d  d }td| d
  d| d   d| d   d| d   d| d   d| d   d| d   d| d  d| d   d| d   d|   d |  d| d  d| d   | d  d| d   |  |d   | }||ksJ t|d d | d| d  }td| d  | | |d   | }||ksHJ t|d d | | d| d d   }t| d d| d   d| d
   d| d   d| d   d| d   d| d   d| d   d| d   d | d   d|   d d| d  d!| d   d| d   d |  | d d| d   d| d
   d| d   d| d   d"| d   d| d   d| d   d| d   d| d   d|   d |d   | }||ksJ d S )#Nr'   r(   r*   r)   rX   r+   }   rW   rB   r0   r3   r-   r/   r,   ir1      iD     r.      p   rc   rE   rY   r4   rG   0   D   H   o   6   rd   r2   )r   r   r$   r6   r   composition)r'   r;   r(   r<   rT   r>   r>   r?   "test_HolonomicFunction_composition   s    (D0<

2
 "(D




N


r   c               	   C   s:  t d} tt| d\}}tddgtddg| d d }td|  d| d  d |  | d d|   |d   | ddtd t d	 d
td t d tdd g}t	|}||ksJ t	tdgtddg| d d }t|  | d  d d |  | |d   | }d}t
|j|ks$J |j|jks6J d S )Nr'   r(   r*   r,   r)   r1   r+   r/   r0   rO   ro   z?[sqrt(pi)*exp(1/4)*erf(1/2), -sqrt(pi)*exp(1/4)*erf(1/2)/2 + 1])r   r   r%   r6   r   r   r   r   r   r   r!   y0Zannihilator)r'   r;   r(   r<   r=   rT   r   r>   r>   r?   test_from_hyper   s     l".r   c               
   C   s  t d} tt| d\}}ttg tddgftjgtjdgf| }t	| d tdd | d  | d  |  | d |d   | d |d   | ddt
t ddt
t  ddt
t  g}||ksJ ttg g fdgg f| }t	d| | ddg}||ksJ ttdgg ftjgdgf| }t	| tj | | |d   | dt
ttd tdg}||kslJ ttdgdgfdgg fd| d  }t	d| d  d | | d |d   | dttdd d ttdd g}||ksJ d S )	Nr'   r(   r,   r)   r*   r1   ra   r   )r   r   r%   r6   r   r    r   r   ri   r   r   r   r   r   r:   r>   r>   r?   test_from_meijerg   s     *L( 8&Nr   c                  C   sn  t d} tt| d\}}t ddd}tt|d\}}t| d |d  |  | |  }td	|d |d   |d d
|d   d|d   d
|  |d   dd	fg}||ksJ t| d |d  | d  |d  |  }td	|d d|d   d|d   d|  d |d   ddfg}||ks6J t| d |d  d	 |d  |  }td	|d d|d   |d  d|  |  |d d|  d |d   ddfg}||ksJ td| d  |d  d|  |  | |d   |  }td| d|d  d
|d   d|d   d
|  |  |d d|d   d|  |d   dd	fg}||ksjJ d S )Nr'   r(   r_   TintegerSnr)   r1   r*   r-   r,   rL   r   rF   r      rD   r+   )r   r   r$   r6   r   r   to_sequencer	   )r'   r;   r(   r_   _r   r<   r=   r>   r>   r?   test_to_Sequence   s     "P*D&T6hr   c               	   C   s  t d} tt| d\}}t ddd}tt|d\}}t|d | ddg }td	|d |  ddfg}||ks|J t|d
 d | dddg }td|d
 d|  d
 |d
   ddgdfg}||ksJ t|d
 d | d |  | dd
dg }t||d
  |d
 d|  d |d   d
dd	td	d
tddgdfg}||ksXJ t| d |d  d | |  }td|d |  |d d|d   d|  |d
   ddfg}||ksJ t d\}}	}
}t	t
d| d
  }t|d
 |d
 d
|  |d
   dd|
gddfg}| |ks2J | }t|d
 |d
 |d
   |dgddfg}| |ksvJ t	t| |   }td
|d
  d
|  |d d
|d
   | d
 |d
   ddd
tt  d|gdd
fg}||ksJ d S )Nr'   r(   r_   Tr   r   r*   r   ra   r)   r,   r.   rW   r1   r+   C_0, C_1, C_2, C_3)r   r   r%   r6   r   r   r   r	   r   r   r   rS   r   r   r   )r'   r;   r(   r_   r   r   r<   r=   C_0rh   C_2C_3r>   r>   r?   #test_to_Sequence_Initial_Coniditons  s4    0*J"@4*Zr   c            	      C   s  t d} tt| d\}}t|d d|  |  | dddgjdd}| | d d  | d	 d  | d
 d  | d d  t| d  }||ksJ t|d | | d ddg}t|d d | dddg}|| jdd}d| d d  | d d  d| d  d  d| d  d  t| d  }||ks0J td|  |d  | | dddg}|| | jdd}d|  | d  d| d  d  d| d  d  d| d	  d  d| d  d  d| d
  d  d| d  d  d| d  d  t| d  }||ks J tdd|   d| d   d|  d| d   d| d   |  dd| d   d| d   |d   | dddgjd
d}| | d d  d| d  d  | d	 d   d!| d  d"  t| d
  }||ksJ tdd|   d| d   d|  d| d   d| d   |  dd| d   d| d   |d   | dddgjd
d}dd| d  d  | d d  d	| d  d#  d| d	  d$  d| d  d%  t| d
  }||ksJ tt	| |  jdd}t d&}t	| |  jdd}|
|d'dtt  |ksJ tt| d |  jddt| d |  jddks<J td|  d| d   tdd  d|  d| d   tdd  ksJ tt| d |   t| d |   ksJ tt| d | d  d'g d(id)jddt| d | d  jddks
J tt| d | d  dd*jdd t| d | d  jddd+ ksZJ tt| d d | d d  dd'g d(id,jddt| d d | d d  jddd-ksJ d S ).Nr'   r(   r)   r   r*   r4   r_   r,   r+   r.   *   r0   r   r1   rE   rQ   r-   i     r/   i  r|   r5   i  rR   i   iN  i  i{  iH  rY   r2      i  rd   rI   i  r   rX   r*   r   ra   r   rf   )r_   rg   )rg   r   )rg   r_   )r   r   r$   r6   r   seriesr"   r   r   r   rk   r   r   r   r   Ztogether)	r'   r;   r(   r<   r=   rT   rU   tr   r>   r>   r?   test_series$  sh    *@H"N
<"
H<"
\":N2NP4$r   c                  C   sX  t d} tt| d\}}td|  |d  | | dddg}g d}d}t|j|dd	d
 |kshJ ddt  g}tdD ]}|	|d
 d dt   q~tdD ]}|	|d
 d dt   qd}t|j|dd	d
 |ksJ t|d d | dddg}d}t|j|dd	d
 |ks&J dg}tdD ]}|	|d
 d  q4|	t
d  d}t|j|dd	d
 |ksJ dt g}tdD ]}|	|d
 dt   qtdD ]}|	|d
 d  q|	t
d t  tdD ]}|	|d
 dt   qd}t|j|dd	d
 |ks.J t|d d | dddg}dg}tdD ]}|	|d
 d  qV|	t
 d}t|j|dd	d
 |ksJ dt g}tdD ]}|	|d
 dt   qtdD ]}|	|d
 d  qtdD ]}|	|d
 dt   qt|d d | dddgj|dd	}d}t|d
 |ksTJ d S )Nr'   r(   r*   r)   r   
皙?g?g333333?g?g      ?g333333?gffffff?g?g?r*   z0.699525841805253ZEuler)methodra   r   r0   r4   z'1.07530466271334 - 0.0251200594793912*Iz*0.905546532085401 - 6.93889390390723e-18*IrF   z1.08016557252834rG   z*0.976882381836257 - 1.65557671738537e-16*I皙?=   z-1.08140824719196r2   z*0.501421652861245 - 3.88578058618805e-16*I)r   r   r%   r6   r   r!   evalfr   r]   appendr   r'   r;   r(   r<   rT   rU   ir>   r>   r?   test_evalf_eulerH  sb    "  
 
 
$r   c                  C   sB  t d} tt| d\}}td|  |d  | | dddg}g d}d}t||d |ksdJ d	d	t  g}td
D ]}|	|d d	 d	t   qztdD ]}|	|d d	 d	t   qd}t||d 
d|ksJ t|d d | dddg}d}t||d |ks J d	g}tdD ]}|	|d d	  q.|	td  d}t||d |ksvJ d	t g}td
D ]}|	|d d	t   qtdD ]}|	|d d	  q|	td t  tdD ]}|	|d d	t   qd}t||d |ks J t|d d | dddg}dg}tdD ]}|	|d d  qH|	t d}t||d |ksJ d	t g}td
D ]}|	|d d	t   qtdD ]}|	|d d	  qtdD ]}|	|d d	t   qt|d d | dddg|}d}t|d |ks>J d S )Nr'   r(   r*   r)   r   r   z0.693146363174626ra   r   r0   r4   z1.098616 + 1.36083e-7*Ir.   z)0.90929463522785 + 1.52655665885959e-16*IrF   z0.999999895088917rG   z)1.00000003415141 + 6.11940487991086e-16*Ir   r   z-0.999999993238714r2   z*0.493152791638442 - 1.41553435639707e-15*I)r   r   r%   r6   r   r!   r   r   r]   r   r_   r   r   r>   r>   r?   test_evalf_rk4  sb    " 


 r   c               
   C   s"	  t d} tt| d\}}tt| |  d }td|  d| d  d |  d|  |d   | d |d   | dd	dtd
dg}||ksJ td	d	| d  d  }td|  | d d	 |  | dd	g}||ksJ tt| t|  | t	d	|    }td| d  d| d   d|   d d
| d  d| d   d| d   d|   |  d| d  d| d   d| d   d| d   d|   d |d   d
| d  d| d   d| d   d| d   |  d |d   | d d| d   | d  d| d  d  |  tdd |d   | dg d}||ks0J t| t|  t
|  d	 }t|  d | | d |d   |  d |d   | d |d   | dg d}||ksJ | t|  t
|  d	 jdd|jddksJ tt	d	|  d d	 }t|d|  d |d   | d d|   d	 |d   | dg d}||ksBJ tt| d |  }td| d  d| d   d |d  d| d  | d  |d   | d td	d |d   | ddd	dt dg}||ksJ tt| |  }t| d  d d|  |  | d |d   | ddd	g}||ks*J ttd| }t| d d | |  | d |d   | dddg}||ksxJ ttd| t|  }t| d  | d  tj | d | d  tdd |  | d  | d  d	 |d   | d | d  |d   | ddd	tjg}||ksJ tt| d |  }tdd|  |  d|d   | |d   | dg d}||ksrJ tt| d |  dd}tdd|  |  d|d   | |d   | dtdd d tdt
d tdd d  dtdd  d t
dd  tdt
d  g}||ks$J tt	| d td|  d  tdd  }td| d|  |d   d|d   | |d   | dt	d d td  tdd  dd	dg}||ksJ | }t	| d td|  d  tdd  }||ksJ t| tj d	d}t| | tj | d	d	g}||ks6J ttd	| d  }t|  | d d	 |  | dd	g}||kszJ tt| td|    t| td|     dksJ td|  dt|    d|  dt|   ksJ t| d | d  d| d   d|   d | d  dd}td
| d  | d  d|   d | d | d  d| d   d| d   d|   |  | dd
g di}||ksJ td	| d	 d  dd	d}td| d	 |  | d	d
g di}||ksJ t d}tt||  | d}| t|t|  k	sJ d S )Nr'   r(   r)   r/   r1   r-   r,   r   r*   rX   r4   r2   rJ   r+   r.   )r   r*   r1   ra   )r)   r*   r*   r,   r   )r*   r   r)   )r   r*   r   rf   rb   lenics)r)   r,   r+   )r   rg   r*   r   r   r^   r'   )r   r   r%   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   ri   r   r
   rj   r   simplify)r'   r;   r(   r<   r=   r^   r>   r>   r?   test_expr_to_holonomic  s    @$$FB>
B2B@82T6:L,4(("
68F"r   c               	   C   sP  t d} tt| d\}}t|d | ddg }dtg g d|   }||ksTJ ttd|  | d | ddg  }d| d  d| d   d|   d }||ksJ td|  |d  | | dddg }| d  tdd	|   d |  }||ksJ td|  | |d  | dddt	t
 g }d|  ttjftddf| d   t	t
 }||kshJ ttd|  | |d  | ddd
t	t
 g }t| }|t|ksJ tt| d d | |  | d |d   | ddtjg }td| }||ks
J tt| |d  | |  | dddg }td| }||ksLJ d S )Nr'   r(   r)   r   r,   r*   r-   )r)   r)   r*   )r,   r)   rX   )r   r   r%   r6   r   Zto_hyperr   r#   rl   r   r   r   ri   r   r   Zrewriter   r:   r>   r>   r?   test_to_hyper+  s2    ($& ..2&

*
r   c                  C   s*  t d} tt| d\}}t|d | ddg }t| }||ksHJ t|d d | dddg }t| }||kszJ t|d d | dddg }t| }||ksJ tdd|  d |  | d |  |d   | dddg 	 }d| d d|   d  }||ksJ t
t| d |  | d| f }t| d |  | d| f}||ks^J t d\}}}}t
td| d   }|t| d d  }||ksJ t
td| d    }||  | d d  }||ksJ t
t| |   }d| |  dtt | t|  d  |  d|  tt  }||ksDJ t
t| dd	 }|t| ksjJ t
t|  t| ksJ t
td| d   }|td| d  ksJ t
d| d  d tdd  }|d| d  d tdd ks J t
t| d  d|    }|t| t|  d  ks>J t
d
| d  d|   tdd  }| tdd d
| d  d tdd  }||ksJ ttdtjf| }ttdtjf| }	td}
td}| |d|
di|	  dksJ ddgtjdgi|_| |	ks J t
| d  | d ks>J t
d| d  d| d    	 d| d  d| d   ksJ t d}t
d|  t
||  |   }d| | d  }||ksJ t
d|  t
||  |   }| |d  }||ksJ t
d|  t
|   }|d|  ks&J d S )Nr'   r(   r*   r   r)   r1   r   r,   rf   rX   r.   rX   rb   D_0r   r+   r^   gffffff?g333333@)r   r   r$   r6   r   rj   r   r   r   rl   r   r   	integrater   rS   r   r   r   r   r   r   r   ri   r#   r   rk   r   r   )r'   r;   r(   r<   r=   r   rh   r   r   rU   r   r^   r>   r>   r?   test_to_exprE  s~    
$<"$ &(("
r   c                  C   s  t d} tt| d\}}tt| d |  dd| ddf}d}t||ksTJ tt| | d| f }dt	|  }||ksJ tt| | ddf}dt	d }||ksJ tt| |  dd| ddf}d	}t||ksJ tt| d |  dd| ddf}d
}t||ks&J tt| |  }||  t
| ksRJ || ddft
dkspJ tt| d |  }| }||  || d| fksJ || ddf|| ddfksJ td|  dd|  t| ksJ t| d d t|   dd|  }| d  d| d   d|   dt| d   d t|   }||kspJ tt	| d | d  dg did|  }t
d|   t	| d |   }||ksJ tt| d |  |  }| tdd d| d  d|   d  | t| d  tt|   d|  t| d   }||ksLJ tt| d d |  }t| d d | }||  dksJ td| d  dg did}td| d  dd}||ksJ tt	| d }|| |  t
d|   t	| d |   ksJ d S )Nr'   r(   r)   r*   rf   r,   z0.166270406994788r   z0.659329913368450z-0.423690480850035ra   r-   rG   rY   rX   r   r   r1   r   r   )r   r   r$   r6   r   r   r   r!   rj   r   r   r   r   r   r   r   r   r[   r>   r>   r?   test_integrate  sT    $ $$&((<.Vr   c            
      C   sx  t d\} }tt| d\}}t| |d  d | dddg}|  |   ks^J t|d d | dddg}|| d | ksJ tt	| }|  t
| |  ksJ ||dksJ t d\}}}}t	| }	||  |	 ksJ || d |tdd |	| d ks:J || d |tdd|di|	| d kstJ d S )	Nzx, yr(   r)   r*   r   r   ra   r,   )r   r   r$   r6   r   rS   rj   r   r   r   r   rk   r   cancelr   )
r'   yr;   r(   r<   r   rh   r   r   r=   r>   r>   r?   	test_diff  s     8r   c            
      C   s  t d} tdtd|   }| dtd|   ks8J t||  dksRJ tt| d\}}td|  }t	dd|  |  | dd	dgi}||ksJ | d|  ksJ t|| d	d
ftd|  | d	d
fksJ t d\}}tt
| | | | d}| t
| | | ks$J ||  t| | |  d	 ||  ksVJ tt
| | | | d|  }t|t| | |  | }||ksJ t d}t||  | }| ||  ksJ ||  || d
  d
 ksJ t d\}}	t| tdt|   }| |d}||  dtd|    dksHJ t| tdt|   }| |	d}|d|  td|    dksJ d S )Nr'   g333333?g@z0.387096774193548*sin(3.1*x)r(   gݷ:>j ?gݷ:>j r   r*   r)   zy, zr   r^   zD_2, C_1g      ?)r   r   r   rj   r!   r   r   r&   r6   r   r   rk   )
r'   r<   r   r(   r=   r   zr^   ZD_2rh   r>   r>   r?   )test_extended_domain_in_expr_to_holonomic  s8     02"$"r   c                  C   s  t d} ttt|  t| ks(J ttt|  t| ksHJ ttt|  t| kshJ ttt|   t| ksJ td| d  d d  d| d  d d ksJ ttt	d| dd t	d| ksJ t
tdddfd	| }t| t|ksJ t
tjtdftdf| }tt| t|  d
ksZJ tt
dtjf| }tt
dtjf| }td}td}td}t| |d|d
i|  d
ksJ d
dgtjd
gi|_t| |  d
ksJ tt	tj| dd}| |t|  |t|   |t|   t|    d
ksNJ tt	tj| tddtdtt tdtt gid}| t	tj|  t	tdd|   d
ksJ d S )Nr'   r1   r)   r,   r.   r   ra   rb   r>   r   r   r   rh   r   r*   F)Zinitcondr   )r   r#   r   r   Z
to_meijergr   r   r   r   r   r   r   r   r   ZOnerl   ri   r   rk   r   rj   r   r   )r'   r<   rU   r   rh   r   r>   r>   r?   test_to_meijerg  s.       $4(&,B:r   c            	      C   s   t d\} }t ddd}t| |f  }tdt|  | d  d|d    dtt |  }t|||d}t||d\}}t	|  |d  ||d   d|  |}||ksJ d S )	Nzmu xsdTZpositiver)   domainr(   r*   )
r   r%   	get_fieldr   r   r   r   r   r6   r   )	mur'   r   Qeh1r   r(   h2r>   r>   r?   test_gaussian  s    8(r   c            	      C   s   t ddd\} }}|| d  | d |d   t| | }t| |f  }t|||d}t||d\}}t| ||  | d   d |d | |  |}||ksJ d S )Na b xTr   r*   r   r(   r)   )r   r   r%   r   r   r   r6   r   	r^   br'   r   r   r   r   r(   r   r>   r>   r?   	test_beta  s    (0r   c            	      C   s   t ddd\} }}||   || d   t| |  t|  }t| |f  }t|||d}t||d\}}t|  d ||  ||  |}||ksJ d S )Nr   Tr   r*   r   r(   )	r   r   r   r%   r   r   r   r6   r   r   r>   r>   r?   
test_gamma  s    , r   c                  C   sf   t d\} }t|  }t|| d\}}td| |  | |  }t|| |  | }||ksbJ d S )Nx nr(   ra   r   r%   r   r   r6   r   r'   r_   r   r   r(   r   r   r>   r>   r?   test_symbolic_power  s    r   c                  C   sT   t d} tt| d\}}td| |  | d }td| |  | }||ksPJ d S )Nr'   r(   ra   rX   r)   )r   r   r%   r6   r   )r'   r   r(   r   r   r>   r>   r?   test_negative_power)  s
    r   c                  C   sn   t d\} }t|  }t|| d\}}td| |  | |d  }t| d | |  | }||ksjJ d S )Nr   r(   ra   r,   r   r   r>   r>   r?   test_expr_in_power2  s    r   c                  C   sv   t ddd} tt| d\}}t| d |jj|jjg|}t| d d| g|}||kr\J |jd }||krrJ d S )Nr'   Tr   r(   r)   r*   r   )r   r   r%   r6   r   r7   r8   Z
listofpoly)r'   r;   r(   doZdo2p2r>   r>   r?   test_DifferentialOperatorEqPoly<  s    
r   c                  C   sv   t ddd} tt| d\}}t| d |jj|jjg|}t|jjg|}tdD ]}||| kshJ ||9 }qTd S )Nr'   Tr   r(   r)   r4   )	r   r   r%   r6   r   r7   r8   r9   r]   )r'   r;   r   r   r^   r_   r>   r>   r?   test_DifferentialOperatorPowL  s    r   N)WZsympy.holonomicr   r   r   r   r   r   Zsympy.holonomic.recurrencer   r	   Z
sympy.corer
   Zsympy.core.numbersr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z&sympy.functions.elementary.exponentialr   r   Z%sympy.functions.elementary.hyperbolicr   r   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.functions.special.besselr   Z&sympy.functions.special.beta_functionsr   Z'sympy.functions.special.error_functionsr   r   r   r   Z'sympy.functions.special.gamma_functionsr   Zsympy.functions.special.hyperr   r    Zsympy.printing.strr!   Zsympy.series.orderr"   Zsympy.simplify.hyperexpandr#   Zsympy.polys.domains.integerringr$   Z!sympy.polys.domains.rationalfieldr%   Zsympy.polys.domains.realfieldr&   r@   rV   r\   r`   rm   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>   r>   r>   r?   <module>   sb    "
#&$MNH>-
	
