a
    lº”hš,  ã                   @   sŠ  d dl mZmZ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 d dlmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZmZ d dl m!Z!m"Z"m#Z# d dl$m%Z%m&Z& edƒZ'eddd\Z(Z)edƒ\Z*Z+Z,dd„ Z-dd„ Z.dd„ Z/e#dd„ ƒZ0dd„ Z1dd„ Z2dd „ Z3d!d"„ Z4d#d$„ Z5d%d&„ Z6d'd(„ Z7d)d*„ Z8e"d+d,„ ƒZ9d-d.„ Z:d/d0„ Z;d1d2„ Z<d3d4„ Z=d5S )6é    )ÚFunctionÚLambdaÚexpand)ÚIÚRational)ÚEq)ÚS)ÚSymbolÚsymbols)ÚrfÚbinomialÚ	factorial)ÚAbs)Úsqrt)ÚcosÚsin)Úfactor)ÚrsolveÚrsolve_hyperÚrsolve_polyÚrsolve_ratio)ÚraisesÚslowÚXFAIL)ÚaÚbÚyzn,kT)ÚintegerzC0,C1,C2c                   C   s,  t g d¢dtƒdksJ ‚t g d¢dtƒdks0J ‚t dtd gttƒdksLJ ‚t ddgttƒttd t d  kstJ ‚t t d tgdtƒtt d ksšJ ‚t dt d dgdt d tƒdksÂJ ‚t ddgtd td	  tƒttd	 d  td d  td d
  td
 d
  dtd  d	  ks(J ‚d S )N©éÿÿÿÿr   é   r   r    r   é   éüÿÿÿé   é   é   é   )r   ÚnÚC0© r)   r)   úM/var/www/auris/lib/python3.9/site-packages/sympy/solvers/tests/test_recurr.pyÚtest_rsolve_poly   s    (&(Bÿr+   c                  C   s´   t dtd  td  dt  d dtd  td  dt  dtd  dtd   dt  d dtd  d	td   d
t  d gdtƒ} | tdt d  td d  d ks°J ‚d S )Néþÿÿÿr%   r!   r    r&   é   é   é	   é   é   é   r   )r   r'   r(   )Zsolutionr)   r)   r*   Útest_rsolve_ratio!   s    :Dÿÿr3   c                   C   s¾  t g d¢dtƒttjtjtdƒ  t  ttjtjtdƒ  t   ttjtjtdƒ  t  ttjtjtdƒ  t   fv s„J ‚t td d dt d dgdtƒtttdƒtƒ tttdƒ tƒ  tttdƒtƒ tttdƒ tƒ  fv söJ ‚t td t dt d dgdtƒttttƒtƒ ttttƒ tƒ  ttttƒtƒ ttttƒ tƒ  fv sjJ ‚t dt td  td  dt  d td gdtƒtt	tƒ tdt   ks¼J ‚t td dt d  dtd  d	t  d
  td gdtƒdksJ ‚t t d ddgdtƒdks$J ‚t ddgttƒ 
¡ ttd d  td  ksVJ ‚t ddgdt tƒ 
¡ ttd d  td  ksŒJ ‚t ddgdttd   tƒ 
¡ ttd  t ksÂJ ‚t t dgdtƒ 
¡ ttt  ksêJ ‚t t ddgdtƒ 
¡ dt t ttd   tttd    ks0J ‚t g d¢dtƒ 
¡ ttddƒtdƒt d  t  ttddƒtdƒt d  t   ksŽJ ‚t ddt t dt  dgdtƒdksºJ ‚d S )Nr   r   r$   r!   r,   r    r%   é   é3   é'   r   )r    r    r    )r   r'   r(   r   ÚHalfr   ÚC1r   Úkr   r   r   r   r   r)   r)   r)   r*   Útest_rsolve_hyper'   s@    66þ
 $$þ
 $$þ.ÿÿ
6ÿÿ
"266(FBÿ
r:   c                   C   s"   t t td gttƒd usJ ‚d S )Nr!   )r   r'   r)   r)   r)   r*   Útest_rsolve_ratio_missedO   s    r;   c                    s    t ‡ ‡fdd„ttˆ ƒƒD ƒƒS )z9Compute RHS of recurrence in f(n) with coefficients in c.c                 3   s&   | ]}ˆ | ˆ  tt| ¡ V  qd S )N)Úsubsr'   )Ú.0Úi©ÚcÚfr)   r*   Ú	<genexpr>X   ó    z"recurrence_term.<locals>.<genexpr>)ÚsumÚrangeÚlenr?   r)   r?   r*   Úrecurrence_termV   s    rG   c               
   C   s  t t d t d t d t d t t d  dt  dt d   dt d   dt d   dt d   g} d	dgg d
¢g d¢t  dgt d t  d dgg}| D ]x}|D ]n}t||ƒ}| t ¡rÆt||t ƒ|ksÆJ ‚| t ¡ršt|ƒdkršt||t ƒ tt	dƒg d¢ƒ¡ 
¡ |ksšJ ‚qšq’dS )zSome bulk-generated tests.r    r!   r%   r#   é   é4   é   r$   r,   )r,   r   r    )r   r    r    r   r    zC:3)r   r   r   N)r'   rG   Zis_polynomialr   Zis_hypergeometricrF   r   r<   Úzipr
   r   )ÚfuncsZcoeffsÚpr@   Úqr)   r)   r*   Útest_rsolve_bulk[   s*    8ÿ
ÿ
ÿ ÿÿÿ

rO   c                   C   s@   t td t d dgttd t d  t d tƒtks<J ‚d S )Nr!   rJ   r    )r   r'   r)   r)   r)   r*   Útest_rsolve_0_sol_homogeneousl   s    rP   c               	   C   sä	  t td ƒt td ƒ t tƒ } tdƒtjtjtdƒ  t  tdƒtjtjtdƒ  t   }t| t tƒƒttjtjtdƒ  t  ttjtjtdƒ  t   ttjtjtdƒ  t  ttjtjtdƒ  t   fv sâJ ‚t| t tƒddgƒ|ksþJ ‚t| t tƒdddœƒ|ksJ ‚t| t tƒt dƒdt dƒdiƒ|ksHJ ‚tt tƒt td ƒ t td ƒ t tƒddgƒ|ks‚J ‚ttt tƒt td ƒt td ƒ ƒt tƒddgƒ|ks¾J ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dksðJ ‚td t td ƒ td dt  d t td ƒ  dt td  t tƒ  } tttƒ tdt   }dttƒ ddt   }t| t tƒƒ|ks„J ‚t| t tƒg ƒ|ksžJ ‚t| t tƒi ƒ|ks¸J ‚t| t tƒddgƒ|ksÖJ ‚t| t tƒdddœƒ|ksöJ ‚t| t tƒt dƒdt dƒdiƒ|ks J ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dksRJ ‚t tƒt td ƒ d } t| t tƒt dƒdiƒdt ksJ ‚t| t tƒt dƒdiƒdt d ksºJ ‚t| t tƒt dƒdt dƒdiƒd u säJ ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dksJ ‚dt td ƒ t tƒ d } t| t tƒt dƒdiƒdt  d tj ksdJ ‚t| t tƒt dƒdiƒdt d tj ks”J ‚t| t tƒt dƒdiƒddt  d tj ksÈJ ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dksúJ ‚t tƒdt t td ƒ  } t| t tƒƒtttƒ ks6J ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dkshJ ‚t tƒdt t td ƒ  d } t| t tƒƒd u s J ‚dt td ƒ dt t tƒ t  } t| t tƒt dƒdiƒdtd  t ksòJ ‚t| t tƒt dƒdiƒdtd  t d ks$J ‚t| t tƒt dƒdiƒdtd  t d ksVJ ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dksˆJ ‚td td  t td ƒ td td  t tƒ  } t| t tƒt dƒdt d	ƒd
iƒttd  td  ksöJ ‚t| t tƒt dƒdt d	ƒdiƒt td  td  dt  ks:J ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dkslJ ‚ttt td ƒtt tƒ ƒt tƒt dƒtiƒ ¡ tt ks¬J ‚tt tƒtt td ƒ  t tƒt dƒttƒtt  t dƒttt  iƒ ¡ ttd d  tttƒ t   ks J ‚dtd  dt  d t td ƒ d	td  dt  d t tƒ  } t| t tƒt dƒtdt d dƒiƒ}ddt  t dt d d  dt d  d }tt|ddƒ|ksÔJ ‚tt tƒtt td ƒt td ƒ  d  t tƒƒ}t|ƒdk	sJ ‚ttd t tƒ t tƒƒd u 	s<J ‚ttd t tƒ td t td ƒ  td t td ƒ  t tƒƒd u 	sˆJ ‚tt tƒt td ƒ dt  dt  t tƒƒdt t dt d  dt d	  k	sàJ ‚d S )Nr!   r    r$   r   )r   r    r%   éýÿÿÿr&   r#   é   ièÿÿÿr   iðÿÿÿé    rJ   r/   T)Úfuncz@C0*((-sqrt(1 - a**2) - 1)/a)**n + C1*((sqrt(1 - a**2) - 1)/a)**n)r   r'   r   r   r7   r   r(   r8   r   r<   r   r9   Zsimplifyr   r   r   r   r   r   Ústr)rA   ÚhÚgZynÚsolr)   r)   r*   Útest_rsolver   sŠ     ÿ66þ
 *:<2L *2&**22042 2 $.2224:ÿÿ
2@&ÿ þ
D&02$@ÿ
rY   c                      sl   t dƒ‰ ttdd„ ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ttdd„ ƒ tt‡ fdd„ƒ ttdd„ ƒ d S )	NÚxc                   S   s   t ttƒttd ƒ ttƒƒS ©Nr    )r   r   r'   r9   r)   r)   r)   r*   Ú<lambda>Ñ   rC   z$test_rsolve_raises.<locals>.<lambda>c                      s   t ttƒttd ƒ ˆ tƒƒS r[   ©r   r   r'   r)   ©rZ   r)   r*   r\   Ò   rC   c                      s   t ttƒˆ td ƒ ttƒƒS r[   r]   r)   r^   r)   r*   r\   Ó   rC   c                   S   s&   t ttƒttƒttd ƒ  ttƒƒS r[   )r   r   r'   r   r)   r)   r)   r*   r\   Ô   rC   c                      s(   t ttƒttd ƒ ttƒˆ dƒdiƒS )Nr    r   r]   r)   r^   r)   r*   r\   Õ   rC   c                   S   s.   t ttƒttd ƒ dt  ttƒ ttƒƒS )Nr    r!   )r   r   r'   r   r)   r)   r)   r*   r\   Ö   rC   )r   r   Ú
ValueErrorr)   r)   r^   r*   Útest_rsolve_raisesÏ   s    r`   c                  C   s’   t td ƒt td ƒ t tƒd  } t| t tƒƒdt d  t t dt  t  ksZJ ‚t| t tƒt dƒdt dƒdiƒddt  t ksŽJ ‚d S )Nr!   r    r#   r   )r   r'   r   r8   r(   ©rA   r)   r)   r*   Útest_issue_6844Ù   s    $6rb   c               	   C   s®   t ddd} t ddd}ttƒd|  t|ƒ ttd ƒ  | d ttd ƒ  }t|ttƒƒt| t|ƒttt|ƒƒ   t  t	| t|ƒttt|ƒƒ   t   ksªJ ‚d S )NÚrT)ZpositiveÚtheta)Úrealr!   r    )
r	   r   r'   r   r   r(   r   r   r   r8   )rc   rd   rA   r)   r)   r*   Útest_issue_18751ß   s    8Fÿrf   c                	   C   s  t ttd ƒttd ƒ ttd ƒ ttƒ ttƒƒdt t t tt  ksRJ ‚t ttd ƒdttd ƒ  dttd ƒ  ttƒ ttƒƒ ¡ dt t dt t t  dt t td   ksÈJ ‚t ttƒdttd ƒ  dttd ƒ  dttd ƒ  ttƒg d¢ƒddt  t d ks*J ‚t ttd ƒdttd ƒ  dttƒ  ttƒtdƒdtdƒd	tdƒd
iƒd
t dt  ksŒJ ‚d S )Nr%   r!   r    r   r$   r#   )r    r%   r2   r   r2   r,   )r   r   r'   r8   r(   ÚC2r   r)   r)   r)   r*   Útest_constant_namingç   s    Rvbrh   c                  C   sž   t tƒdt td ƒ  dt td ƒ  dt td ƒ  dt td ƒ  dt td	 ƒ  dt td
 ƒ  dt td ƒ  t td ƒ } t| t tƒƒd usšJ ‚d S )Né   r    i  r!   iD  r%   i  r#   r$   r&   é   r2   )r   r'   r   ra   r)   r)   r*   Útest_issue_15751ñ   s    „rk   c               
   C   sP  dt tƒ dt td ƒ  dt td ƒ  dt td ƒ  } t| t tƒƒ}tdd	tdƒd   d
 ddtdƒt  ddtdƒ  tdƒd    dtdƒt   ddtdƒ  tdƒd   d  dtdƒt  ddtdƒ  tdƒd    t  tdd	tdƒd   d
 ddtdƒt  ddtdƒ  tdƒd    dtdƒt   ddtdƒ  tdƒd   d  dtdƒt  ddtdƒ  tdƒd    t   tdd	tdƒd   d
ddtdƒ  tdƒd    tdƒd  ddtdƒ  tdƒd  d  t   }||ksJ ‚| 	tdtdtdtdi¡ 
¡ }t|d ƒdk sLJ ‚d S )Niöÿÿÿr#   r    r&   r!   é.   r%   éV   r.   éE   iôÿÿÿr   iln iÜ  iÍ#  i‰^  éý   i  iÕÿÿÿé   éŠ   gYÈB²À?g‚vIhÂ%<=)r   r'   r   r(   r   r   r   r8   rg   r<   ZevalfÚabs)rA   rX   ÚexpectedÚer)   r)   r*   Útest_issue_17990÷   s`    <*
ÿ
ÿÿ
ÿÿþ*þý,ÿ
ÿÿ
ÿÿþ*þýý4
ÿÿÿúru   c               	   C   s   t dƒ} | td ƒ| td ƒ | td ƒ | tƒ }t|| tƒƒdt t t tt  ks^J ‚| td ƒd| td ƒ  d| td ƒ  | tƒ }t|| tƒƒdt t dtd  t t  dtd  t td   ksÜJ ‚t| tƒd| td ƒ  d| td ƒ  d| td ƒ  | tƒ| dƒd| dƒd| dƒd	iƒddt  t d ksRJ ‚t| tƒd| td ƒ  t | tƒ| dƒdiƒddt  t d ksœJ ‚d S )
Nr   r%   r!   r    r   r$   r#   r   r2   )r   r'   r   r8   r(   rg   )r   ÚeqZeq2r)   r)   r*   Útest_issue_8697  s    ,*46ÿ8 ÿÿ
rw   c                  C   sò   t tƒt td ƒ dt td ƒ  dt  } t| t tƒƒdt t dt t  t tddƒ ksdJ ‚t| t tƒt dƒdt dƒdiƒdt  d ddt   t tddƒ ks°J ‚tdt tƒ t td ƒ t d t tƒƒdt t t ksîJ ‚d S )Nr    r!   r   r$   r   r,   )r   r'   r   r(   r8   r   ra   r)   r)   r*   Útest_diofantissue_294  s    ,86ÿÿ
rx   c                  C   sú  t dƒ} tt| tƒd| td ƒ t ƒ| tƒƒdt t t d ksHJ ‚tt| td ƒd| tƒ td  d ƒ| tƒƒdt t td  dt  d ksœJ ‚tt| td ƒd| tƒ td  d ƒ| tƒ| dƒdiƒddt  d td  dt  d ksþJ ‚tt| tƒd| td ƒ dtd   ƒ| tƒƒdt t dtd   dt  d	 ksXJ ‚tt| tƒd| td ƒ td  ƒ| tƒƒdt t td  dt  d
 ksªJ ‚tt| tƒd| td ƒ t ƒ| tƒ| dƒdiƒddt  t d ksöJ ‚d S )NrA   r!   r    r#   r   rj   r%   rJ   r.   r&   )r   r   r   r'   r(   ra   r)   r)   r*   Útest_issue_15553   s    @TbZRry   N)>Zsympy.core.functionr   r   r   Zsympy.core.numbersr   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr	   r
   Z(sympy.functions.combinatorial.factorialsr   r   r   Z$sympy.functions.elementary.complexesr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.polys.polytoolsr   Zsympy.solvers.recurrr   r   r   r   Zsympy.testing.pytestr   r   r   Z	sympy.abcr   r   r   r'   r9   r(   r8   rg   r+   r3   r:   r;   rG   rO   rP   rY   r`   rb   rf   rh   rk   ru   rw   rx   ry   r)   r)   r)   r*   Ú<module>   sD   (
]



