U
    9%eȇ                     @   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*t|t|jj|jj	g|ksHt| | | d |d   td| | d g|ksxt| d d | | |d   t| d d dddd| g|kst| | | d  d || d |    d d| d	  d
| d  |  d| d  |d   | d  |d   ks&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	   }||kstd S )NxDx   r            i   i   i   	         <   
      )
r   r   r%   old_poly_ringZderivative_operatorAssertionErrorr   basezerooner'   Rr(   pq r?   c/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/holonomic/tests/test_holonomic.pytest_DifferentialOperator   s8    00,&rA   c                  C   s  t d} tt| d\}}t|d |  | }td| | |d   | }||ksTtt| | d | }t|d | }t| d | d d |  | d |  |d   | }|| |kst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st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st| 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st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   r7   diff)r'   r<   r(   r=   r>   rsr?   r?   r@   test_HolonomicFunction_addition+   sl    2"@*6B4

*@2rW   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,tt|d d | }t|d | }tdd|  d|d   | }|| |ks|t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tt| |d  d | }t||  |  | }t| d d|  d |  | |d   | }|| |kstd S )Nr'   r(   r)   r/   r-   r1   r,   rF   r+   r2      r*   r.   rM         rK   rH   r4   )r   r   r$   r6   r   r7   r'   r<   r(   r=   r>   rU   r?   r?   r@   %test_HolonomicFunction_multiplicationM   s\    L.&TJN



&*r]   c                  C   sl  t d} tt| d\}}t|d | ddg}t|d d | dddg}td| |d  |d  | ddddg}|| |kst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ddddg}|| |kst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ddddg}|| |kstt|d |  | ddddg}t|d | ddg}t| d  |  d | d |  |  |  d |d   | d |d   | dddddg}|| |ksRt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stt d}t	t| }t	t| d |  }||  |t d  }|tt|  t|  d  t|  kshtd S )Nr'   r(   r*   r   r,   r)   r1   r.   rY   r-   r+   $       r0   r4   ix0C_1)r   r   r%   r6   r   r7   r   r   Halfr   r   r   r   to_exprsubsr   expand)r'   r<   r(   r=   r>   rU   re   r?   r?   r@   test_addition_initial_conditiong   s~    (R&  
*H*&
  
4  
L  "rj   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ddddg}|| |kstt|d |  | dddg}t|d | 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|   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dddd$d%d&g}|| |kstt|d | ddg}t|d d | dddg}tdd|  |d  | dddg}|| |kstt| |d  d d|  | dddg}t| d d |  d |  | |d   | dddg}|| |ksxtt|d d | dddg}t|d d | ddddg}td| d|d   d|d   d|d   |d  | ddddd'd'dg}|| |ks
ttt| }td|  dd(}t| d|  | |d   | dtdtd t	d g}|| |kspttt
| }tt
| d |  }||  }|t|  t
|  d  kstd S ))Nr'   r(   r)   r*   r   r,   r1   rG   r3   r0   r2   rK   r4   r/   %   r.      r-      r+         i  rJ      b      R   L      P   rY      @   rP   r_   ii   rc   )r   r   r%   r6   r   r7   r   r   r   r   r   rg   r   r\   r?   r?   r@   %test_multiplication_initial_condition   s    "D  
 H:
:LV8  "&2J8rz   c                  C   s  t d} tt| d\}}t|d | | d |  }td|  d | | }||ksZtt|d d | | d | d  d }td| d  d	| d
   d| d   d| d   d| d  d |  d| d  d|   |d   | }||kst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stt|d d | d| d  }td| d  | | |d   | }||ksHt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std S )#Nr'   r(   r*   r)   rY   r+   }   rX   rC   r0   r3   r-   r/   r,   ir1      iD     r.      p   r`   rF   rZ   r4   rH   0   D   H   o   6   ra   r2   )r   r   r$   r6   r   compositionr7   )r'   r<   r(   r=   rU   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st
t	tdgtddg| d d }t|  | d  d d |  | |d   | }d}t|j|ks$t
|j|jks6t
d S )Nr'   r(   r*   r,   r)   r1   r+   r/   r0   rP   rl   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   r7   r!   y0Zannihilator)r'   r<   r(   r=   r>   rU   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stttg g fdgg f| }t	d| | ddg}||kst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slt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std S )	Nr'   r(   r,   r)   r*   r1   r^   r   )r   r   r%   r6   r   r    r   r   rf   r   r   r   r7   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stt| d |d  | d  |d  |  }td	|d d|d   d|d   d|  d |d   ddfg}||ks6tt| d |d  d	 |d  |  }td	|d d|d   |d  d|  |  |d d|  d |d   ddfg}||kst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sjtd S )Nr'   r(   nTintegerSnr)   r1   r*   r-   r,   rM   r   rG   r      rE   r+   )	r   r   r$   r6   r   r   to_sequencer	   r7   )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|tt|d
 d | dddg }td|d
 d|  d
 |d
   ddgdfg}||kst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sXtt| d |d  d | |  }td|d |  |d d|d   d|  |d
   ddfg}||kstt d\}}	}
}t
td| d
  }t|d
 |d
 d
|  |d
   dd|
gddfg}| |ks2t| }t|d
 |d
 |d
   |dgddfg}| |ksvtt
t| |   }td
|d
  d
|  |d d
|d
   | d
 |d
   ddd
tt  d|gdd
fg}||kstd S )Nr'   r(   r   Tr   r   r*   r   r^   r)   r,   r.   rX   r1   r+   C_0, C_1, C_2, C_3)r   r   r%   r6   r   r   r   r	   r7   r   r   r   rT   r   r   r   )r'   r<   r(   r   r   r   r=   r>   C_0re   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st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s0t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 t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st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stt	t
| |  jdd}t d&}t
| |  jdd}||d'dtt  |kstt	t| d |  jddt| d |  jddks<tt	d|  d| d   tdd  d|  d| d   tdd  kstt	t| d |   t| d |   kstt	t| d | d  d'ddd(gid)jddt| d | d  jddkstt	t| d | d  dd*jdd t| d | d  jddd+ ks\tt	t| d d | d d  dd'ddd(gid,jddt| d d | d d  jddd-kstd S ).Nr'   r(   r)   r   r*   r4   r   r,   r+   r.   *   r0   r|   r1   rF   rR   r-   i     r/   i  ry   r5   i  rS   i   iN  i  i{  iH  rZ   r2      i  ra   rJ   i  r   rY   r^   r   rc   )r   rd   )rd   r   )rd   r   )r   r   r$   r6   r   seriesr"   r7   r   r   r   rh   r   r   r   r   Ztogether)	r'   r<   r(   r=   r>   rU   rV   tr   r?   r?   r@   test_series  sp    *@H"N
<"  H<"  \":N2PP6$r   c               
   C   sh  t d} tt| d\}}td|  |d  | | dddg}dddd	d
dddddg
}d}t|j|ddd |ksxtddt  g}t	dD ]}|
|d d dt   qt	dD ]}|
|d d dt   qd}t|j|ddd |kstt|d d | dddg}d}t|j|ddd |ks6tdg}t	dD ]}|
|d d  qD|
td  d}t|j|ddd |kst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>tt|d d | dddg}dg}t	dD ]}|
|d d  qf|
t d}t|j|ddd |kstdt g}t	dD ]}|
|d dt   qt	dD ]}|
|d d  qt	dD ]}|
|d dt   qt|d d | dddgj|dd}d}t|d |ksdtd S ) Nr'   r(   r*   r)   r   皙?皙?333333?皙?      ?333333?ffffff?皙??z0.699525841805253ZEuler)methodr^   r0   r4   z'1.07530466271334 - 0.0251200594793912*Iz*0.905546532085401 - 6.93889390390723e-18*IrG   z1.08016557252834rH   z*0.976882381836257 - 1.65557671738537e-16*I皙?=   z-1.08140824719196r2   z*0.501421652861245 - 3.88578058618805e-16*I)r   r   r%   r6   r   r!   evalfr7   r   rangeappendr   r'   r<   r(   r=   rU   rV   ir?   r?   r@   test_evalf_euler>  sb    "  
 
 
$r   c               
   C   sR  t d} tt| d\}}td|  |d  | | dddg}dddd	d
dddddg
}d}t||d |ksttddt  g}t	dD ]}|
|d d dt   qt	dD ]}|
|d d dt   qd}t||d d|kstt|d d | dddg}d}t||d |ks0tdg}t	dD ]}|
|d d  q>|
td  d}t||d |kst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s0tt|d d | dddg}dg}t	dD ]}|
|d d  qX|
t d}t||d |kst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sNtd S )Nr'   r(   r*   r)   r   r   r   r   r   r   r   r   r   r   z0.693146363174626r^   r0   r4   z1.098616 + 1.36083e-7*Ir.   z)0.90929463522785 + 1.52655665885959e-16*IrG   z0.999999895088917rH   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   r7   r   r   r   r   r   r   r?   r?   r@   test_evalf_rk4  sb    " 


 r   c               
   C   s2	  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sttd	d	| d  d  }td|  | d d	 |  | dd	g}||kst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dd	ddg}||ks4tt| t	|  t|  d	 }t|  d | | d |d   |  d |d   | d |d   | ddd	d	dg}||kst| t	|  t|  d	 jdd|jddksttt
d	|  d d	 }t|d|  d |d   | d d|   d	 |d   | dd	ddg}||ksLt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sttt| |  }t| d  d d|  |  | d |d   | ddd	g}||ks4tttd| }t| d d | |  | d |d   | dddg}||kst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$ttt| d |  }tdd|  |  d|d   | |d   | ddd	dg}||ks~t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s0t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st| }t
| d td|  d  tdd  }||kstt| tj d	d}t| | tj | d	d	g}||ksBtttd	| d  }t|  | d d	 |  | dd	g}||ksttt| td|    t| td|     dksttd|  dt|    d|  dt|   kst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
dddgi}||ksttd	| d	 d  dd	d}td| d	 |  | d	d
d	ddgi}||kstt d}tt||  | d}| t|t|  k	s.td S )Nr'   r(   r)   r/   r1   r-   r,   r   r*   rY   r4   r2   rK   r+   r.   r^   r   rc   r_   lenics)r   rd   ar'   )r   r   r%   r6   r   r   r   r   r7   r   r   r   r   r   r   r   r   r   rf   r   r
   rg   r   simplify)r'   r<   r(   r=   r>   r   r?   r?   r@   test_expr_to_holonomic  s    @$$FB>  
B 
2D@  82T  
8: .,4(("
68F  $r   c               	   C   sP  t d} tt| d\}}t|d | ddg }dtg g d|   }||ksTtttd|  | d | ddg 	 }d| d  d| d   d|   d }||ksttd|  |d  | | dddg }| d  tdd	|   d |  }||ksttd|  | |d  | dddt
t g }d|  ttjftddf| d   t
t }||kshtttd|  | |d  | ddd
t
t g }t| }|t|ksttt| d d | |  | d |d   | ddtjg }td| }||ks
ttt| |d  | |  | dddg }td| }||ksLtd S )Nr'   r(   r)   r   r,   r*   r-   )r)   r)   r*   )r,   r)   rY   )r   r   r%   r6   r   Zto_hyperr   r7   r#   ri   r   r   r   rf   r   r   Zrewriter   r;   r?   r?   r@   test_to_hyper!  s6    ($& ..2&  

*
r   c                  C   s*  t d} tt| d\}}t|d | ddg }t| }||ksHtt|d d | dddg }t| }||ksztt|d d | dddg }t	| }||ksttdd|  d |  | d |  |d   | dddg 
 }d| d d|   d  }||ksttt| d |  | d| f }t| d |  | d| f}||ks^tt d\}}}}ttd| d   }|t| d d  }||kstttd| d    }||  | d d  }||ksttt| |   }d| |  dtt | t|  d  |  d|  tt  }||ksDttt| dd	 }|t| ksjttt|  t| kstttd| d   }|td| d  ksttd| d  d tdd  }|d| d  d tdd ks ttt| d  d|    }|t| t|  d  ks>ttd
| d  d|   tdd  }| tdd d
| d  d tdd  }||kstttdtjf| }ttdtjf| }	td}
td}| |d|
di|	  dkstddgtjdgi|_| |	ks tt| d  | d ks>ttd| d  d| d    
 d| d  d| d   kstt d}td|  t||  |   }d| | d  }||ksttd|  t||  |   }| |d  }||ksttd|  t|   }|d|  ks&td S )Nr'   r(   r*   r   r)   r1   r   r,   rc   rY   r.   rY   r_   D_0r   r+   r   gffffff?g333333@)r   r   r$   r6   r   rg   r   r7   r   r   ri   r   r   	integrater   rT   r   r   r   r   r   r   r   rf   r#   r   rh   r   r   )r'   r<   r(   r=   r>   r   re   r   r   rV   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sTttt| | d| f	 }dt
|  }||ksttt| | ddf}dt
d }||ksttt| |  dd| ddf}d	}t||ksttt| d |  dd| ddf}d
}t||ks&ttt| |  }|| 	 t| ksRt|| ddftdkspttt| d |  }|	 }|| 	 || d| fkst|| ddf|| ddfksttd|  dd| 	 t| kstt| d d t|   dd| 	 }| d  d| d   d|   dt| d   d t|   }||kspttt
| d | d  ddddgid| 	 }td|   t
| d |   }||ksttt| d |  | 	 }| tdd d| d  d|   d  | t| d  tt|   d|  t| d   }||ksNttt| d d | 	 }t| d d | }||  dksttd| d  ddddgid}td| d  dd}||ksttt
| d }|| | 	 td|   t
| d |   kstd S )Nr'   r(   r)   r*   rc   r,   z0.166270406994788r   z0.659329913368450z-0.423690480850035r^   r-   rH   rZ   rY   r   r1   r   )r   r   r$   r6   r   r   r   r!   r7   rg   r   r   r   r   r   r   r   r   r\   r?   r?   r@   test_integratey  sT    $ $$&((<0Vr   c            
      C   sx  t d\} }tt| d\}}t| |d  d | dddg}|  |   ks^tt|d d | dddg}|| d | kstt	t
| }|  t| |  kst||dkstt d\}}}}t
| }	||  |	 kst|| d |tdd |	| d ks:t|| d |tdd|di|	| d ksttd S )	Nzx, yr(   r)   r*   r   r   r^   r,   )r   r   r$   r6   r   rT   rg   r   r7   r   r   r   rh   r   cancelr   )
r'   yr<   r(   r=   r   re   r   r   r>   r?   r?   r@   	test_diff  s     8r   c            
      C   s  t d} tdtd|   }| dtd|   ks8tt||  dksRttt	| d\}}td|  }t
dd|  |  | dd	dgi}||kst| d|  kstt|| d	d
ftd|  | d	d
fkstt d\}}tt| | | | d}| t| | | ks$t||  t| | |  d	 ||  ksVttt| | | | d|  }t|t| | |  | }||kstt d}t||  | }| ||  kst||  || d
  d
 kstt d\}}	t| tdt|   }| |d}||  dtd|    dksHtt| tdt|   }| |	d}|d|  td|    dkst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   rg   r7   r!   r   r   r&   r6   r   r   rh   )
r'   r=   r   r(   r>   r   zr   ZD_2re   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(tttt|  t| ksHtttt|  t| kshtttt|  	 t| ksttd| d  d d  d| d  d d kstttt
d| dd t
d| kstttdddfd	| }t| t|kstttjtdftdf| }tt| t|  d
ksZtttdtjf| }ttdtjf| }td}td}td}t| |d|d
i| 	 d
kstd
dgtjd
gi|_t| | 	 d
ksttt
tj| dd}| |t|  |t|   |t|   t|   	 d
ksNt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std S )Nr'   r1   r)   r,   r.   r   r^   r_   r?   r   r   r   re   r   r*   F)Zinitcondr   )r   r#   r   r   Z
to_meijergr7   r   r   r   r   r   r   r   r   r   ZOneri   rf   r   rh   r   rg   r   r   )r'   r=   rV   r   re   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st
d S )	Nzmu xsdTZpositiver)   domainr(   r*   )r   r%   	get_fieldr   r   r   r   r   r6   r   r7   )	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std S )Na b xTr   r*   r   r(   r)   )	r   r   r%   r   r   r   r6   r   r7   	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st	d S )Nr   Tr   r*   r   r(   )
r   r   r   r%   r   r   r   r6   r   r7   r   r?   r?   r@   
test_gamma	  s    , r   c                  C   sf   t d\} }t|  }t|| d\}}td| |  | |  }t|| |  | }||ksbtd S )Nx nr(   r^   r   r%   r   r   r6   r   r7   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sPtd S )Nr'   r(   r^   rY   r)   )r   r   r%   r6   r   r7   )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sjt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\t|jd }||krrtd S )Nr'   Tr   r(   r)   r*   r   )	r   r   r%   r6   r   r8   r9   r7   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&   rA   rW   r]   rj   rz   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>-
		