
    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-dS )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 d S )N               polysF)r   r   r   r   )eqs    \/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/concrete/tests/test_gosper.pytest_gosper_normalr#      s    	
1q!QqS1W+qsQw'	*B"	hq!nna	 	 $q8Aq>>'9":":DXaQR^^AS<T<TUV V V V"*E**	!QXa^^+Q!Q-?@A A A 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 d S )Nr   r   r   )r   r   r   r   Halfr    r$   r"   test_gosper_termr(      s    !a	" " QqS1W " "'(b16kAA4F%GH H H 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                                          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 d S )Nr   r   r      r   r   )r   r   r   r   r   r   r   r   r   r	   r
   r   r'   r$   r"   test_gosper_sumr,      st   a!Q##q1u,,,,a!Q##q!a%y{2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4illQ1I..666hq!nnq!Qi00888ill1a4'!Q33;;;q1uill*Q1I66>>>a	!na((IaLL8888	)A,,Aq	# #&'	!ny||&Ca&GH H H H rAghq!nn,q!Qi88A====
Q1~~ !1ay* */1AgXq1u-=hq!nn-LQ-NO O O O qsQw	!,YqsQw-?-??!QKK	
9QqS1W		!	,i!a.@.@@A A A A 	1q519ad1a41q5!1!1)AE2B2B!BC	
Aq	 8::#aAh3q66&9":":!:5Q<<!G	q1u"Qxxa(q1uqy)9)99%A	:J:JJ"L
U1XXeAhh
"            r$   c                  D   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 d S )Nr   r   r*   r+      r      r   i  i  i     r   )r   r   r   r'   r$   r"   test_gosper_sum_indefiniter1   >   s   aq!a%y{****adA!QU)QqS1W"5a"77777aAEmQ''2a4////1a4#ad(*SAX5A=CDU1Q3L F F qsQwKacAg689:< <	
1q1a4!A#:>"51q>>1%!a..@A A 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 d S )Nr   r+   r   )r   r   r   r&   r   r   r   r'   r$   r"   test_gosper_sum_parametricr3   H   s    hqvq1uqy11(161q52I2IIAqRS9UU	1q519rAaCx!A#~&xA	'B'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 d S )Nr   r   r   r*   )r   r   r   r   r'   r$   r"   test_gosper_sum_algebraicr5   N   sx    	1tAwwAq	# #'(1uqAvzAd1ggI/E&Fq&HI I I I I Ir$   c                     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 d S )
Nr   r   r   r   r      r0   i   r   )r   r   r   r   )f1f2f3f4f5s        r"   test_gosper_sum_iteratedr>   S   s   	!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	7AqD	AB
ac'A!G	a!A#g	&AaC	0!A#q1A1A	A3q!t8	LBb1a)$$****b1a)$$****b1a)$$****b1a)$$******r$   c                  .   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
                                t                    dk    sJ d S )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   s   
Q$C
Q$q!t)C
QTDGGAI!
"C
Q$q!t)HQqS!$$
$C
AaC..)A,,yQ'7'77	!a%8H8HHQN
OC
1Q3

A
Aq1Q3x/
0CQ37HQqS!$$a'
'!A#'Aa!A#h)>
?C
Ia!&j!!1$
$Yq1u%5%5q%8
8C
QU)QqS1W
qAv!|a/
0
3C
q1q5z1a4!AqD&=1Q3.34
4Cq51adQqSj1n%d1gg-	!Q$1a4"Q$"$ %&'1fT!WWnq!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 5 RU(9Q<<'	!a%(8(881q59I9IIK KCQ37Q,x!Q''*
*A!Ha!e,<
=CAaCQ
q1Q3x
'C
B$1q1acAg&yQV'<'<a'??	!a%@P@PRS@SS
SC3Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33333Aq	""A =Xa#g..66u==BBBBBBr$   c                  h   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 d S )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      s7   
Q$q!t)Cqs7HQNN
"C
AE

A
yQ//	!a%0@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
llAoq!tIa!e,<,<'<Yq1u=M=M'MNOC 	3Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33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 d S )
Nr   T)positiver   r   )integerr   r   r   )r   r   r   r   )r   r   r   r   f2dg2dr_   s          r"   test_gosper_nanro      s7   sT"""AsT"""AsD!!!AsD!!!A
QUQY-1
QT
!9QU#3#3Ia!e4D4D#D
EC
Yq1ui	A   a!e*QQZ'1q5)9)9)AE:J: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 d S )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      s   
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9993Aq	""A=Xa#g..!33333Aq1u&&A=Xa#g..!33333Aq	""A=Xa#g..!33333Aq1u&&A9993Aq	""A=Xa#g..!33333Aq	""A=Xa#g..!33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      s   A A - - - - - - - - " " " " " " $ $ $ $ $ $ J J J J J J J J = = = = = = = = 9 9 9 9 9 9 9 9 9 9 9 9 & & & & & & , , , , , , H H H H H H H H H H , , , , , , , , , , , , , , , , , , , ,A A AH H H
     BA A A. . .I I I

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