U
    ZÊ¹jŠ  ã                   @   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*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s¶t‚| | | 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�sðt‚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/bwave/python/venv/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s¶t‚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�s¢t‚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�sÖt‚| 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�sºt‚d S )'Nr'   r(   r)   r*   r,   iÊÿÿÿé~   é–   iyÿÿÿéü   i  éŒ   iåÿÿÿr1   é   é   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�s€t‚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   sj   t dƒ} tt | ¡dƒ\}}t||  | |d   | ƒ}t|| ƒ}tdƒD ]}||| ks\t‚||9 }qHd S )Nr'   r(   r)   r4   )r   r   r$   r6   r   Úranger7   )r'   r<   r(   r=   ÚaÚnr?   r?   r@   Útest_HolonomicFunction_powerg   s    
ra   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s‚t‚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�s–t‚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�sºt‚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�söt‚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   ri   r?   r?   r@   Útest_addition_initial_conditionq   s~    (Rÿ&ÿÿ  
ÿ*H*ÿ&ÿ
ÿÿÿÿ  
þ4ÿ  
ÿL  "ÿrn   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sît‚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�s¬t‚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�s¼t‚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   rc   iôÿÿÿièÿÿÿé   rg   )r   r   r%   r6   r   r7   r   r   r   r   r   rk   r   r\   r?   r?   r@   Ú%test_multiplication_initial_condition”   s¢    "Dÿÿ  
ÿ Hÿÿÿÿ:ÿ
ÿÿÿÿÿ:ÿÿÿþLýVüÿÿü8û  û"&2J8r~   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sôt‚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�søt‚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�s¸t‚d S )#Nr'   r(   r*   r)   rY   r+   é}   rX   rC   r0   r3   r-   r/   r,   iìÿÿÿr1   éØ   iD  é´   r.   é˜   ép   rd   rF   rZ   r4   rH   é0   éD   éH   éo   é6   re   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s¼t
‚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   rp   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sÊt‚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�sît‚d S )	Nr'   r(   r,   r)   r*   r1   rb   r   )r   r   r%   r6   r   r    r   r   rj   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sºt‚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�s¾t‚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(   r`   T©Ú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sÖt‚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�sÈt‚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�sòt‚d S )Nr'   r(   r`   TrŽ   r�   r*   r   rb   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_0ri   Ú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s’t‚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�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| d	  d$  d| d  d%  t| d
 ƒ }||k�s¬t‚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�sŠt‚t	t| d |  ƒƒ ¡ t| d |  ƒ ¡ k�s¼t‚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�sÀt‚d S ).Nr'   r(   r)   r   r*   r4   ©r`   r,   r+   r.   é*   r0   r€   r1   rF   rR   r-   iÐ  é³   r/   i€  r}   r5   iá  rS   éi   i¿N  i€�  i{  iH  rZ   r2   é   iÀ  re   rJ   i€  r˜   rY   rb   ©r‹   rg   )r`   rh   )rh   r‹   )rh   r`   )r   r   r$   r6   r   Úseriesr"   r7   r‰   r   r   rl   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  ¡ qŽt	dƒD ]}| 
|d d dt  ¡ q¶d}t|j|dd�d ƒ|ksøt‚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�s�t‚dt g}t	dƒD ]}| 
|d dt  ¡ �q¢t	dƒD ]}| 
|d d ¡ �qÈ| 
td t ¡ t	dƒD ]}| 
|d dt  ¡ �qüd}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�s®t‚dt g}t	dƒD ]}| 
|d dt  ¡ �qÀt	dƒD ]}| 
|d d ¡ �qæt	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)Úmethodrb   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   r^   Úappendr   ©r'   r<   r(   r=   rU   rV   Úir?   r?   r@   Útest_evalf_eulerH  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  ¡ qŠt	dƒD ]}| 
|d d dt  ¡ q²d}t| |¡d  d¡ƒ|ksöt‚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�s†t‚dt g}t	dƒD ]}| 
|d dt  ¡ �q˜t	dƒD ]}| 
|d d ¡ �q¾| 
td t ¡ t	dƒD ]}| 
|d dt  ¡ �qòd}t| |¡d ƒ|k�s0t‚t|d d | dddgƒ}dg}t	dƒD ]}| 
|d d ¡ �qX| 
t¡ d}t| |¡d ƒ|k�sœt‚dt g}t	dƒD ]}| 
|d dt  ¡ �q®t	dƒD ]}| 
|d d ¡ �qÔt	dƒD ]}| 
|d dt  ¡ �qöt|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.693146363174626rb   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sŽt‚td	d	| d  d  ƒ}td|  | d d	 |  | dd	gƒ}||ksÖt‚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�s°t‚| t	| ƒ t| ƒ d	 jdd�|jdd�k�sât‚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�sÞt‚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�s‚t‚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�sÊt‚| ¡ }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�s†t‚tt| ƒtd|  ƒ ƒ ¡ t| ƒtd|  ƒ   ¡ dk�sÄt‚td|  dt| ƒ  ƒ ¡ d|  dt| ƒ  k�sút‚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�s¨t‚td	| d	 d  dd	d�}td| d	 |  | d	d
d	ddgiƒ}||k�sôt‚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.   rb   rš   rg   rc   ©Úlenics)r¶   rh   r_   ©r'   )r   r   r%   r6   r   r   r   r   r7   r   r   r   r    r   r   r   r   r   rj   r   r
   rk   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s¬t‚td|  |d  | | dddgƒ ¡ }| d  tdd	|  ƒ d |  }||ksþt‚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�s¶t‚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#   rm   r   r   r   rj   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s¬t‚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�s¨t‚ttd| d  ƒƒ ¡  ¡ }||  | d d  }||k�sæt‚tt| ƒ|  ƒ ¡ }d| |  dttƒ | t| ƒ d  |  d|  ttƒ  }||k�sDt‚tt| ƒdd	� ¡ }|t| ƒk�sjt‚tt| ƒƒ ¡ t| ƒk�sˆt‚ttd| d  ƒƒ ¡ }|td| d  ƒk�sºt‚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�sšt‚ttdtjf| ƒƒ}ttdtjf| ƒƒ}	tdƒ}
tdƒ}| ¡  |d|
di¡|	  ¡ dk�sút‚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�s€t‚t dƒ}td|  ƒt||  | ƒ  ¡ }d| | d  }||k�sÄt‚td|  ƒt||  | ƒ  ¡ }| |d  }||k�süt‚td|  ƒt| ƒ  ¡ }|d|  k�s&t‚d S )Nr'   r(   r*   r   r)   r1   r•   r,   rg   rY   r.   ©rY   rc   ÚD_0r–   r+   r_   gffffffö?g333333@)r   r   r$   r6   r   rk   r   r7   r   r   rm   r   r   Ú	integrater   rT   r   r   r   r   r   r   r   rj   r#   r   rl   r¸   r‹   )r'   r<   r(   r=   r>   r–   ri   r—   r˜   rV   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sTt‚tt| ƒƒ | d| f¡ 	¡ }dt
| ƒ }||ksˆt‚tt| ƒƒ | ddf¡}dt
dƒ }||ks¸t‚tt| ƒ|  dd� | ddf¡}d	}t|ƒ|ksìt‚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�s°t‚| | ddf¡| | ddf¡k�sÖt‚td|  dd� | ¡ 	¡ t| ƒk�sþt‚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�sÌt‚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�s˜t‚td| d  ddddgid�}td| d  dd�}||k�sØt‚tt
| ƒd ƒ}||  | ¡ 	¡ td|  ƒ t
| ƒd |   k�st‚d S )Nr'   r(   r)   r*   rg   r,   z0.166270406994788r   z0.659329913368450z-0.423690480850035rb   r-   rH   rZ   rY   rŸ   r1   rµ   )r   r   r$   r6   r   r   r½   r!   r7   rk   r   r   r   r   r   r   r   r¸   r\   r?   r?   r@   Útest_integrateƒ  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s”t‚t	t
| ƒƒ}| ¡  ¡ t| ƒ|  ks¼t‚| |¡dksÎt‚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•   rb   r,   )r   r   r$   r6   r   rT   rk   r¸   r7   r   r   r   rl   r   Úcancelr    )
r'   Úyr<   r(   r=   r–   ri   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sžt‚| ¡ d|  ks²t‚t| | d	d
f¡ƒtd|   | d	d
f¡ƒksât‚t dƒ\}}tt| | | ƒ| d�}| ¡ t| | | ƒk�s$t‚| | ¡ ¡ t| | | ƒ d	 ||  k�sVt‚tt| | | ƒ| d� | ¡ ¡ }t|ƒt| | | ƒ | }||k�s¢t‚t dƒ}t||  | ƒ}| ¡ ||  k�sÎt‚| | ¡ ¡ || d
  d
 k�sòt‚t dƒ\}}	t| ƒtdt| ƒ ƒ }| ¡  |d¡}||  dtd|  ƒ  dk�sHt‚t| ƒtdt| ƒ ƒ }| ¡  |	d¡}|d|  td|  ƒ  dk�s’t‚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   rk   r7   r!   r½   r   r&   r6   r   r   rl   )
r'   r=   r“   r(   r>   rÁ   Úzr_   ZD_2ri   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sŒt‚td| d  d d ƒ ¡ d| d  d d ksÀt‚ttt
d| ƒdd� ¡ ƒt
d| ƒksèt‚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�sÆt‚d
dgtjd
gi|_t| ¡ ƒ|  	¡ d
k�søt‚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�sºt‚d S )Nr'   r1   r)   r,   r.   rµ   rb   rc   r?   r   r»   r–   ri   r¼   r*   F)ZinitcondrŸ   )r   r#   r   r   Z
to_meijergr7   r   r   r   r¸   r   r   r   r   r   ZOnerm   rj   r   rl   r‹   rk   r   r   )r'   r=   rV   r–   ri   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s¶t
‚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s¨t‚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sœt	‚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(   rb   ©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(   rb   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(   rb   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\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do2Z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sht	‚||9 }qTd S )Nr'   TrŽ   r(   r)   r4   )
r   r   r%   r6   r   r8   r9   r:   r^   r7   )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&   rA   rW   r]   ra   rn   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>-
	
