a
    <bȇ                     @   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 ZTdLS )M    )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zeroZoner'   Rr(   pq r=   t/Users/vegardjervell/Documents/master/model/venv/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rU   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,   rD   r+   r2      r*   r.   rK         rI   rF   r4   )r   r   r$   r6   r   r'   r:   r(   r;   r<   rS   r=   r=   r>   %test_HolonomicFunction_multiplicationM   s\    L.&TJN



&*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)   rW   r)   r-   r+   $       r0   r4   )r1   r+   r\   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<   rS   rc   r=   r=   r>   test_addition_initial_conditiong   sn    &R&
*H*&

4
L&rh   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   rE   r3   r0   r2   rI   r4   )r,   r1   r)   r,   )r,   r,   r,   r/   %   r.      r-      r+         i  rH      b      R   L      P   rW      @   rN   )r,   r,   r,   r]   ii)r*   r)   r*   )r*   r+   rE      rw   r)   ra   )r   r   r%   r6   r   r   r   r   r   r   re   r   rZ   r=   r=   r>   %test_multiplication_initial_condition   s    "D
H:
:LV8
"&2B8rx   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)   rW   r+   }   rV   rA   r0   r3   r-   r/   r,   ir1      iD     r.      p   r^   rD   rX   r4   rF   0   D   H   o   6   r_   r2   )r   r   r$   r6   r   composition)r'   r:   r(   r;   rS   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   rN   rj   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<   rS   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   r\   r   )r   r   r%   r6   r   r    r   r   rd   r   r   r   r   r   r9   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(   nTintegerSnr)   r1   r*   r-   r,   rK   r   rE   r      rC   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   r\   r)   r,   r.   rV   r1   r+   C_0, C_1, C_2, C_3)r   r   r%   r6   r   r   r   r	   r   r   r   rR   r   r   r   )r'   r:   r(   r   r   r   r;   r<   C_0rc   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   rz   r1   rD   rP   r-   i     r/   i  rw   r5   i  rQ   i   iN  i  i{  iH  rX   r2      i  r_   rH   i  r   rW   r*   r   r\   r   ra   )r   rb   )rb   r   )rb   r   )r   r   r$   r6   r   seriesr"   r   r   r   rf   r   r   r   r   Ztogether)	r'   r:   r(   r;   r<   rS   rT   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)methodr\   r   r0   r4   z'1.07530466271334 - 0.0251200594793912*Iz*0.905546532085401 - 6.93889390390723e-18*IrE   z1.08016557252834rF   z*0.976882381836257 - 1.65557671738537e-16*I皙?=   z-1.08140824719196r2   z*0.501421652861245 - 3.88578058618805e-16*I)r   r   r%   r6   r   r!   evalfr   rangeappendr   r'   r:   r(   r;   rS   rT   ir=   r=   r>   test_evalf_euler>  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.693146363174626r\   r   r0   r4   z1.098616 + 1.36083e-7*Ir.   z)0.90929463522785 + 1.52655665885959e-16*IrE   z0.999999895088917rF   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*   rW   r4   r2   rI   r+   r.   )r   r*   r1   r\   )r)   r*   r*   r,   r   )r*   r   r)   )r   r*   r   ra   r]   lenics)r)   r,   r+   )r   rb   r*   r   r   ar'   )r   r   r%   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   r   r
   re   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)   rW   )r   r   r%   r6   r   Zto_hyperr   r#   rg   r   r   r   rd   r   r   Zrewriter   r9   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,   ra   rW   r.   rW   r]   D_0r   r+   r   gffffff?g333333@)r   r   r$   r6   r   re   r   r   r   rg   r   r   	integrater   rR   r   r   r   r   r   r   r   rd   r#   r   rf   r   r   )r'   r:   r(   r;   r<   r   rc   r   r   rT   r   r   r=   r=   r>   test_to_expr;  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*   ra   r,   z0.166270406994788r   z0.659329913368450z-0.423690480850035r\   r-   rF   rX   rW   r   r   r1   r   r   )r   r   r$   r6   r   r   r   r!   re   r   r   r   r   r   r   r   r   rZ   r=   r=   r>   test_integratey  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   r\   r,   )r   r   r$   r6   r   rR   re   r   r   r   r   rf   r   cancelr   )
r'   yr:   r(   r;   r   rc   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   re   r!   r   r   r&   r6   r   r   rf   )
r'   r;   r   r(   r<   r   zr   ZD_2rc   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   r\   r]   r=   r   r   r   rc   r   r*   F)Zinitcondr   )r   r#   r   r   Z
to_meijergr   r   r   r   r   r   r   r   r   ZOnerg   rd   r   rf   r   re   r   r   )r'   r;   rT   r   rc   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(   r\   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(   r\   rW   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(   r\   r,   r   r   r=   r=   r>   test_expr_in_power(  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_DifferentialOperatorEqPoly1  s    
r   N)UZ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?   rU   r[   rh   rx   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>   s^    "#&$MNH>-
		