o
    jgš,  ã                   @   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sJ ‚t dtd gttƒdks&J ‚t ddgttƒttd t d  ks:J ‚t t d tgdtƒtt d ksMJ ‚t dt d dgdt d tƒdksaJ ‚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)   úW/var/www/html/zoom/venv/lib/python3.10/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sXJ ‚d S )Néþÿÿÿr%   r!   r    r&   é   é   é	   é   é   é   r   )r   r'   r(   )Úsolutionr)   r)   r*   Útest_rsolve_ratio!   s   :Dÿÿ,r4   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 sBJ ‚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 s´J ‚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s(J ‚t ddgdt tƒ 
¡ ttd d  td  ksCJ ‚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srJ ‚t t ddgdtƒ 
¡ dt t ttd   tttd    ks•J ‚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
ÿ0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   s   €& 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 ]<}|D ]7}t||ƒ}| t ¡rct||t ƒ|kscJ ‚| t ¡r„t|ƒdkr„t||t ƒ tt	dƒg d¢ƒ¡ 
¡ |ks„J ‚qMqId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   Úis_polynomialr   Úis_hypergeometricrF   r   r=   Úzipr
   r   )ÚfuncsÚcoeffsÚprA   Úqr)   r)   r*   Útest_rsolve_bulk[   s0   8ÿ
ÿ
ÿ ÿÿÿ

,€úþrR   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   @rS   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 sqJ ‚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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sJJ ‚t| t tƒi ƒ|ksWJ ‚t| t tƒddgƒ|ksfJ ‚t| t tƒdddœƒ|ksvJ ‚t| t tƒt dƒdt dƒdiƒ|ks‹J ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dks¤J ‚t tƒt td ƒ d } t| t tƒt dƒdiƒdt ksÃJ ‚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s-J ‚t| t tƒt dƒdiƒdt d tj ksEJ ‚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sxJ ‚t tƒdt t td ƒ  } t| t tƒƒtttƒ ks–J ‚|  	t t
tt| t tƒƒ 	tt¡ƒ¡ ¡ dks¯J ‚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s&J ‚|  	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svJ ‚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s±J ‚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seJ ‚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   r8   r   r(   r9   r   r=   r   r:   Úsimplifyr   r   r   r   r   r   Ústr)rB   ÚhÚgÚynÚsolr)   r)   r*   Útest_rsolver   sŒ    ÿ66
þ(8:0L *2&**22042 2 $.2224:ÿ
ÿ2@&ÿ 
þD&02$@
ÿ\r^   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'   r:   r)   r)   r)   r*   Ú<lambda>Ñ   ó    z$test_rsolve_raises.<locals>.<lambda>c                      s   t ttƒttd ƒ ˆ tƒƒS r`   ©r   r   r'   r)   ©r_   r)   r*   ra   Ò   rb   c                      s   t ttƒˆ td ƒ ttƒƒS r`   rc   r)   rd   r)   r*   ra   Ó   rb   c                   S   s&   t ttƒttƒttd ƒ  ttƒƒS r`   )r   r   r'   r   r)   r)   r)   r*   ra   Ô   s   & c                      s(   t ttƒttd ƒ ttƒˆ dƒdiƒS )Nr    r   rc   r)   rd   r)   r*   ra   Õ   s   ( 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*   ra   Ö   s   . )r   r   Ú
ValueErrorr)   r)   rd   r*   Útest_rsolve_raisesÏ   s   rf   c                  C   s’   t td ƒt td ƒ t tƒd  } t| t tƒƒdt d  t t dt  t  ks-J ‚t| t tƒt dƒdt dƒdiƒddt  t ksGJ ‚d S )Nr!   r    r#   r   )r   r'   r   r9   r(   ©rB   r)   r)   r*   Útest_issue_6844Ù   s   $68rh   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sUJ ‚d S )NÚrT)ÚpositiveÚtheta)Úrealr!   r    )
r	   r   r'   r   r   r(   r   r   r   r9   )ri   rk   rB   r)   r)   r*   Útest_issue_18751ß   s   8Fÿrm   c                	   C   sŒ  t ttd ƒttd ƒ ttd ƒ ttƒ ttƒƒdt t t tt  ks)J ‚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sdJ ‚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'   r9   r(   ÚC2r   r)   r)   r)   r*   Útest_constant_namingç   s   Rv`dro   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sMJ ‚d S )Né   r    i  r!   iD  r%   i  r#   r$   r&   é   r2   )r   r'   r   rg   r)   r)   r*   Útest_issue_15751ñ   s   „rr   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 s&J ‚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   r9   rn   r=   ÚevalfÚabs)rB   r]   ÚexpectedÚer)   r)   r*   Útest_issue_17990÷   s`   <*
ÿ
ÿÿ
ÿÿþ*þý,ÿ
ÿÿ
ÿÿþ*þýý4
ÿÿÿúr}   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snJ ‚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s¨J ‚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   r9   r(   rn   )r   ÚeqÚeq2r)   r)   r*   Útest_issue_8697  s   ,*46ÿ8 ÿÿLr€   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s2J ‚t| t tƒt dƒdt dƒdiƒdt  d ddt   t tddƒ ksXJ ‚tdt tƒ t td ƒ t d t tƒƒdt t t kswJ ‚d S )Nr    r!   r   r$   r   r,   )r   r'   r   r(   r9   r   rg   r)   r)   r*   Útest_diofantissue_294  s   ,86ÿ
ÿBr   c                  C   sô  t dƒ} tt| tƒd| td ƒ t ƒ| tƒƒdt t t d ks$J ‚tt| td ƒd| tƒ td  d ƒ| tƒƒdt t td  dt  d ksNJ ‚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s«J ‚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 )NrB   r!   r    r#   r   rq   r%   rJ   r.   r&   )r   r   r   r'   r(   rg   r)   r)   r*   Útest_issue_15553   s   @TbXPNr‚   N)>Úsympy.core.functionr   r   r   Úsympy.core.numbersr   r   Úsympy.core.relationalr   Úsympy.core.singletonr   Úsympy.core.symbolr	   r
   Ú(sympy.functions.combinatorial.factorialsr   r   r   Ú$sympy.functions.elementary.complexesr   Ú(sympy.functions.elementary.miscellaneousr   Ú(sympy.functions.elementary.trigonometricr   r   Úsympy.polys.polytoolsr   Úsympy.solvers.recurrr   r   r   r   Úsympy.testing.pytestr   r   r   Ú	sympy.abcr   r   r   r'   r:   r(   r9   rn   r+   r4   r;   r<   rG   rR   rS   r^   rf   rh   rm   ro   rr   r}   r€   r   r‚   r)   r)   r)   r*   Ú<module>   sF    (
]



