
    g3                         d 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 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZ ddlmZmZmZmZmZm Z m!Z!m"Z" d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-y)z;Tests for Gosper's algorithm for hypergeometric summation.     )Rationalpi)S)Symbol)binomial	factorial)explog)sqrt)gamma)Poly)simplify)gosper_normal
gosper_sumgosper_term)abjkmnrxc            
         dt         z  dz   ddt         z  dz   z  dt         z  dz   z  t         f} t        |  t        t        dd      t               t        t         t        dd      z         t        t         t        dd      z         fk(  sJ t        | ddit        dd      t         t        dd      z   t         t        dd      z   fk(  sJ y )N               polysF)r   r   r   r   )eqs    U/var/www/openai/venv/lib/python3.12/site-packages/sympy/concrete/tests/test_gosper.pytest_gosper_normalr#      s    	
1q!QqS1W+qsQw'	*B"	hq!na	 $q8Aq>'9":DXaQR^AS<TUV V V"*E*	!QXa^+Q!Q-?@A A A    c                      t        dt        z  dz   t        t              z  t        dt        z  dz         z  t              t         t        j                  z
  t        t        dd      z   z  k(  sJ y )Nr   r   r   )r   r   r   r   Halfr    r$   r"   test_gosper_termr(      sj    !a	" QqS1W "'(b166kAA4F%GH H Hr$   c                  	   t        dt        dt        f      dt        z   k(  sJ t        t        t        dt        f      t        dt        z   z  dz  k(  sJ t        t        dz  t        dt        f      t        dt        z   z  ddt        z  z   z  dz  k(  sJ t        t        dz  t        dt        f      t        dz  dt        z   dz  z  dz  k(  sJ t        dt        z  t        dt        f      ddt        z  z  dz
  k(  sJ t        t        t              t        dt        f      J t        t	        t        t              t        dt        f      J t        t        t              t        dz  z  t        dt        f      J t        t        dz
  t        t              z  t        dt        f      J t        t        t        t              z  t              t        t              k(  sJ t        t        t        t              z  t        dt        f      t        t        t              z  t        t              z   dz
  k(  sJ t        dt        z  t	        t        t              z  t        dt        f      dk(  sJ t        dt        z  t	        t        t              z  t        dt
        f      dt
        z   t
        t        z
  z  t	        t        t
              z  t        z  k(  sJ t        dt        z  dz   t        t              z  t        dt        z  dz         z  t        dt        f      dt        dt        z  dz         z  t        t              z
  t        dt        z  dz         z  k(  sJ t        t        t        t        z   t        z   z  t        t        z  z  t        t        z  z  t        t        t        z         t        t        t        z         z  z  t        dt
        f      j                         t        t
        t        t              z  t
        t        t              z  z          t        t        dz         z  t        t        dz         z  t        t              t        t              z  t        t        t
        z   dz         z  t        t        t
        z   dz         z  z  dt        t              t        t              z  z  z   k(  sJ y )Nr   r   r      r   r   )r   r   r   r   r   r   r   r   r   r	   r
   r   r'   r$   r"   test_gosper_sumr,      s   a!Q#q1u,,,a!Q#q!a%y{222adQ1I&!QU)Q1W*=a*????adQ1I&!Q$Az/!*;;;;adQ1I&!AqD&1*444ilQ1I.666hq!nq!Qi0888il1a4'!Q3;;;q1uil*Q1I6>>>a	!na(IaL888	)A,Aq	#&'	!ny|&Ca&GH H H rAghq!n,q!Qi8A===
Q1~ !1ay*/1AgXq1u-=hq!n-LQ-NO O O qsQw	!,YqsQw-??!QK	
9QqS1W		!	,i!a.@@A A A 	1q519ad1a41q5!1)AE2B!BC	
Aq	8:#aAh3q6&9":!:5Q<!G	q1u"Qxa(q1uqy)99%A	:JJ"L
U1XeAh
"      r$   c                     t        t        t              t        t        dz
  z  dz  k(  sJ t        t        dz  t              t        t        dz
  z  dt        z  dz
  z  dz  k(  sJ t        dt        t        dz   z  z  t              dt        z  k(  sJ t        dt        dz  z  dt        dz  z  z   d	t        dz  z  z   d
t        z  z   dz    t        dt        z  dz         z  ddt        z  dz   z  t        dt        z  dz         z  z  t              dt        z  dz   t        dz  dt        z  z   dz   z  t        dt        z  dz         z  t        dt        z  dz         z  k(  sJ y )Nr   r   r*   r+      r      r   i  i  i     r   )r   r   r   r'   r$   r"   test_gosper_sum_indefiniter1   >   sP   aq!a%y{***adA!QU)QqS1W"5a"7777aAEmQ'2a4///1a4#ad(*SAX5A=CDU1Q3L F qsQwKacAg689:<	
1q1a4!A#:>"51q>1%!a.@A A Ar$   c                     t        t        t        j                  t        t
        z
  dz         t        t        j                  t        t
        z         z  t
        dt        f      t        dt        z   t        z
  z  ddt        z  z   dt        z  z   z  t        t        j                  dt        z   t        z
        z  t        t        j                  t        t        z         z  t        ddt        z  z   z  z  k(  sJ y )Nr   r+   r   )r   r   r   r&   r   r   r   r'   r$   r"   test_gosper_sum_parametricr3   H   s    hqvvq1uqy1(1661q52IIAqRS9U	1q519rAaCx!A#~&xA	'BBQ	 !"A!G	.. . .r$   c                      t        t        dz  t        d      z   t        dt        f      t        dz   dt        dz  z  t        z   dt        d      z  z   z  dz  k(  sJ y )Nr   r   r   r*   )r   r   r   r   r'   r$   r"   test_gosper_sum_algebraicr5   N   s]    	1tAwAq	#'(1uqAvzAd1gI/E&Fq&HI I Ir$   c                  D   t        dt        z  t              dt        z  z  } ddt        z  z   t        dt        z  t              z  dt        z  z  }ddt        z  z   ddt        z  z   z  t        dt        z  t              z  ddt        z  z  z  }ddt        z  z   ddt        z  z   z  ddt        z  z   z  t        dt        z  t              z  ddt        z  z  z  }ddt        z  z   ddt        z  z   z  ddt        z  z   z  ddt        z  z   z  t        dt        z  t              z  ddt        z  z  z  }t        | t        d	t        f      |k(  sJ t        |t        d	t        f      |k(  sJ t        |t        d	t        f      |k(  sJ t        |t        d	t        f      |k(  sJ y )
Nr   r   r   r   r      r0   i   r   )r   r   r   r   )f1f2f3f4f5s        r"   test_gosper_sum_iteratedr>   S   sy   	!A#q	!Q$	B
ac'8AaC#	#AqD	(B
ac'A!G	Xac1-	-qAv	6B
ac'A!G	a!A#g	&x!Q'7	7AqD	AB
ac'A!G	a!A#g	&AaC	0!A#q1A	A3q!t8	LBb1a)$***b1a)$***b1a)$***b1a)$***r$   c                  8   t         dz  } t         dz  dt         z  z  }dt         dz  t        d      t         z  z   dz
  z  }t         dz  dt         z  z  t        dt         z  t               z  }t        dt         z        t        t               t        t         dz         z  t        t         dz         z  dt         z  z  z  }t        dt         z  t               dz  t         dz   ddt         z  z  z  z  }dt         z  dz
  t        dt         z  t               dz  z  dt         z  dz
  dz  ddt         z  z  z  z  }t         t        t         t        j
                  z
        dz  z  t        t         dz         dz  z  }t        t        dz   z  dt        z  dz   z  dt        dz  z  dt        z  z   dz
  z  dz  }ddt        dz   z  t        dz  dt        dz  z  z
  d	t        z  z   d
z
  z  z   }	t        dz   t        t        dz  dt        z  z
  dz   z  t        d      z  dt        dz  z  dt        dz  z  z
  dt        z  z   dz
  z
  z  dt        dz  z  t        d      z  t        dz  z   dt        dz  z  z   dz
  z  dz  }
t        dd      ddt        z  z  t        dz   z  dt        dz  z  dt        dz  z  z   dt        dz  z  z   dt        z  z
  dz   z  dt        dt        z  t              z  z  z   }t        dd      dt        dz  z  dt        z  z   dz   t        dt        z  dz         z  ddt        z  z  t        t              z  t        t        dz         z  t        t        dz         z  z  z   }dt        z  dz   dz  t        dt        z  t              dz  z  ddt        z  z  t        dz   z  z  }t        dt        z  t              dz   ddt        z  z  z  }dt        z  dt        z  dz   dz  dt        z  dz   z  t        t        t        j
                  z
        dz  z  t        t        dz         dz  z  z
  }t        | t         dt        f      }|t        ||z
        dk(  sJ t        |t         dt        f      }|t        ||	z
        dk(  sJ t        |t         dt        f      }|t        ||
z
        dk(  sJ t        |t         dt        f      }|t        ||z
        dk(  sJ t        |t         dt        f      }|t        ||z
        dk(  sJ t        |t         dt        f      }|t        ||z
        dk(  sJ t        |t         dt        f      }|t        ||z
        dk(  sJ t        |t         dt        f      }|$t        ||z
        j                  t              dk(  sJ y )Nr   r   r   r   r   r.         	      r0      r*      ?   p         i  iQ   i     (   r   )r   r   r   r   r   r&   r   r   r   r   r   rewriter   )f1af1bf1cf1df1ef1ff1gf1hg1ag1bg1cg1dg1eg1fg1gg1hgs                    r"   test_gosper_sum_AeqB_part1r`   c   sM   
Q$C
Q$q!t)C
QTDGAI!
"C
Q$q!t)HQqS!$
$C
AaC.)A,yQ'77	!a%8HHQN
OC
1Q3
A
Aq1Q3x/
0CQ37HQqS!$a'
'!A#'Aa!A#h)>
?C
Ia!&&j!1$
$Yq1u%5q%8
8C
QU)QqS1W
qAv!|a/
0
3C
q1q5z1a4!AqD&=1Q3.34
4Cq51adQqSj1n%d1g-	!Q$1a4"Q$"$ %&'1fT!Wnq!t&;a1f&Dq&HJJKLC
2s
a1fa!enbAgAqD.@2ad7.JT// HQqS!,,. .C
2q/R1Ws1u_s2I	!a5 RU(9Q<'	!a%(881q59IIK KCQ37Q,x!Q'*
*A!Ha!e,<
=CAaCQ
q1Q3x
'C
B$1q1acAg&yQVV'<a'??	!a%@PRS@SS
SC3Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333Aq	"A =Xa#g.66u=BBBBr$   c                     t         dz  t        t         z  z  } t         t        dz  z
  t        t        t               z  }t	        t         dz
        dz  t	        t         t
        z
        t	        t         t
        z         z  z  }t         t        dz   z  t        dz
  dz  z  t        t        dz   z  t        dz  t        dz  z  dt        z  t        dz  z  z
  t        dz  z   dt        z  t        z  z
  dt        z  z   t        z   dz   z  t        dz
  dz  z  z   }t        t        z
  t        t        t              z  dz  }t	        dt
        z
        t	        dt
        z         z  }d|z  ddt
        dz  z  z
  z  t	        t              dz  t
        dz  t	        t        t
        z
        z  t	        t        t
        z         z  z  z   }t        | t         dt        f      }|t        ||z
        dk(  sJ t        |t         dt        f      }|t        ||z
        dk(  sJ t        |t         dt        f      }|t        ||z
        dk(  sJ y )Nr   r   r   r   )	r   r   r   r   r   r   r   r   r   )f2af2bf2cg2ag2bffg2cr_   s           r"   test_gosper_sum_AeqB_part2ri      s   
Q$q!t)Cqs7HQN
"C
AE
A
yQ/	!a%0@@
AC"a!e*a!eaZ
!	A#1QT	AaC1H$q!t+ac!e3ac9A=A#CDEEA:#N NCq5(1a.
 
"C	1q5	)AE*	*B
B$	AadF
lAoq!tIa!e,<'<Yq1u=M'MNOC 	3Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333r$   c                     t        dd      } t        dd      }t        dd      }t        dd      }||| z   |z   z  | |z  z  ||z  z  t        || z         t        ||z         z  z  }dt        | dz
        t        |dz
        z  z  | |dz   z  ||dz   z  z  t        | |z         t        ||z         z  z  z
  }t        ||d	|f      }t        ||z
        d	k(  sJ y )
Nr   T)positiver   r   )integerr   r   r   )r   r   r   r   )r   r   r   r   f2dg2dr_   s          r"   test_gosper_nanro      s    sT"AsT"AsD!AsD!A
QUQY-1
QT
!9QU#3Ia!e4D#D
EC
Yq1ui	A  a!e*QQZ'1q5)9)AE:J)JKLC3Aq	"AAG!!!r$   c                     dt         dz  z  } dt         z  dz   dt         dz  z  dt         dz  z  z   dt         dz  z  z   dt         z  z   dz   z  }dt         z  t         dz  dt         z  z
  dz
  z  t         dz  t         dz   dz  z  z  }t         dz  dt         z  z  t         dz   t         dz   z  z  }dt         z  t         dz   z  }dt         dz
  z  t         dz  dt         z  z
  dz
  z  t         dz  t         dz   dz  z  t         dz
  dz  z  t         dz
  dz  z  z  }t         dz  dt         dz  z  z
  dt         z  z
  d	z
  dt         z  z  t         dz  t         dz   dz  z  t         dz   dz  z  t         dz   dz  z  z  }t        t        dz   z  dt        dz  z  dt        z  z   dz   z  }dt        z  t        dz  z  dz
  }t        dd      dt        dz   z  t        dz
  z  t        dz   z  dz  z   }	t        d
d      dt        dz
  dz  t        dz   dz  z  z  z    }
t        dd	      dt        dz   z  t        dz   dz  t        dz   dz  z  z  z   }t        | t         dt        f      }|J t        |t         dt        f      }|t	        ||z
        dk(  sJ t        |t         dt        dz
  f      }|t	        ||z
        dk(  sJ t        |t         dt        f      }|t	        ||	z
        dk(  sJ t        |t         dt        dz
  f      }|J t        |t         dt        f      }|t	        ||
z
        dk(  sJ t        |t         dt        f      }|t	        ||z
        dk(  sJ y )Nr   r   r*   r      r         rB   r+      rE   r   )r   r   r   r   r   )f3af3bf3cf3df3ef3ff3gg3bg3cg3dg3fg3gr_   s                r"   test_gosper_sum_AeqB_part3r      sX   
AqD&CQ37Qq!tVa1f_qAv-!3a7
8C
Q$1qs
Q
Aq1uqj
1C
Q$q!t)a!ea!e_
%C
Q$A,C
QU)QTAaCZ!^
$adAEA:oq1uqj&@!a%!&K
LCa4"QT'>BqD 1$ad
*AqD!a%!OQUQJ,FEA:- C QU)Qq!tVac\A%
&C
Q$q!t)a-C
1a.1q1u:q1u-q1u5a7
7CRq1q51*a!eaZ"788
9C
2q/AAJQ
AEA:(=>
>C3Aq	"A993Aq	"A=Xa#g.!3333Aq1u&A=Xa#g.!3333Aq	"A=Xa#g.!3333Aq1u&A993Aq	"A=Xa#g.!3333Aq	"A=Xa#g.!3333r$   N).__doc__sympy.core.numbersr   r   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.combinatorial.factorialsr   r   &sympy.functions.elementary.exponentialr	   r
   (sympy.functions.elementary.miscellaneousr   'sympy.functions.special.gamma_functionsr   sympy.polys.polytoolsr   sympy.simplify.simplifyr   sympy.concrete.gosperr   r   r   	sympy.abcr   r   r   r   r   r   r   r   r#   r(   r,   r1   r3   r5   r>   r`   ri   ro   r   r'   r$   r"   <module>r      sp    A - " $ J = 9 9 & , H H , , ,AH
 BA.I

+ 'CT4(	"4r$   