§
    PŠtjÄI ã                   óÌ  — d 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
 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ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%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZS ddlTmUZUmVZVmWZW ddlXmYZYmZZZm[Z[ ddl\m]Z] ddl^m_Z_ ddl`maZa d„ Zbd„ Zcd„ Zdd„ Zed„ Zf G d„ de¦  «        Zg G d„ de¦  «        Zh ed¦  «        Zi G d„ d¦  «        Zj G d„ d¦  «        Zk G d „ d!¦  «        Zl G d"„ d#¦  «        Zm G d$„ d%¦  «        Zn G d&„ d'en¦  «        Zo G d(„ d)en¦  «        Zp G d*„ d+en¦  «        Zq G d,„ d-en¦  «        Zr G d.„ d/en¦  «        Zs G d0„ d1en¦  «        Zt G d2„ d3en¦  «        Zu G d4„ d5en¦  «        Zv G d6„ d7en¦  «        Zw G d8„ d9en¦  «        Zx G d:„ d;en¦  «        Zy G d<„ d=en¦  «        Zz G d>„ d?en¦  «        Z{ G d@„ dAen¦  «        Z|dB„ Z}dC„ Z~dD„ ZdE„ Z€dF„ Z�dG„ Z‚dH„ ZƒdI„ Z„dJ„ Z…dK„ Z†dL„ Z‡dMaˆg  edN¦  «        dOddPfdQ„Z‰dR„ ZŠdMa‹	 	 dVdT„ZŒdVdU„Z�dMS )Wa@  
Expand Hypergeometric (and Meijer G) functions into named
special functions.

The algorithm for doing this uses a collection of lookup tables of
hypergeometric functions, and various of their properties, to expand
many hypergeometric functions in terms of special functions.

It is based on the following paper:
      Kelly B. Roach.  Meijer G Function Representations.
      In: Proceedings of the 1997 International Symposium on Symbolic and
      Algebraic Computation, pages 205-211, New York, 1997. ACM.

It is described in great(er) detail in the Sphinx documentation.
é    )Údefaultdict)Úproduct)Úreduce)Úprod)ÚSYMPY_DEBUG)ÚSÚDummyÚsymbolsÚsympifyÚTupleÚexpandÚIÚpiÚMulÚ
EulerGammaÚooÚzooÚexpand_funcÚAddÚnanÚExprÚRational)ÚMod©Údefault_sort_key)!ÚexpÚsqrtÚrootÚlogÚ
lowergammaÚcosÚbesseliÚgammaÚ
uppergammaÚexpintÚerfÚsinÚbesseljÚEiÚCiÚSiÚShiÚsinhÚcoshÚChiÚfresnelsÚfresnelcÚ
polar_liftÚ	exp_polarÚfloorÚceilingÚrfÚ	factorialÚlerchphiÚ	PiecewiseÚreÚ
elliptic_kÚ
elliptic_e)ÚpolarifyÚ
unpolarify)ÚhyperÚHyperRep_atanhÚHyperRep_power1ÚHyperRep_power2ÚHyperRep_log1ÚHyperRep_asin1ÚHyperRep_asin2ÚHyperRep_sqrts1ÚHyperRep_sqrts2ÚHyperRep_log2ÚHyperRep_cosasinÚHyperRep_sinasinÚmeijerg)ÚMatrixÚeyeÚzeros)ÚapartÚpolyÚPoly)Úresidue)Ú	powdenest©Úsiftc                 ó„   — | j         rt          | d¦  «        S |                      ¦   «         \  }} t          |d¦  «        | z   S ©Né   )Ú	is_Numberr   Úas_coeff_Add)ÚxÚcs     úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/simplify/hyperexpand.pyÚ_mod1r^   U   sA   € ð 	„{ð Ý�1�a‰yŒyÐØ�>Š>ÑÔ�D€A€qÝˆq�!‰9Œ9�q‰=Ðó    c                 ó´=  ‡ ‡‡‡‡	‡
— t          dt          ¬¦  «        \  ŠŠŠŠ
ˆˆˆˆ ˆ
fd„}ˆˆˆˆ ˆ
fd„} |ddt          ‰
¦  «        ¦  «          |‰fdt          ‰ ‰
¦  «        ¦  «          |‰‰t          j        z
  fd‰z  ft          t          ‰‰
¦  «        t          ‰t          j        z   ‰
¦  «        dz  g¦  «        t          ddgg¦  «        t          ‰t          j        z
  ‰
z  d‰
z
  z  t          j        ‰z
  ‰
z  d‰
z
  z  g‰d‰
z
  z  ‰‰
dz
  z  d‰
z
  z  gg¦  «        ¦  «          |d	d
t          t          ‰
¦  «        dg¦  «        t          d‰
z  dgg¦  «        t          d‰
‰
dz
  z  gddgg¦  «        ¦  «          |t          j        dft	          d¦  «        ft          t          ‰
¦  «        dg¦  «        t          ddgg¦  «        t          t          dd¦  «        dd‰
z
  z  dz  gddgg¦  «        ¦  «          |t          j        t          j        ft	          d¦  «        ft          t          ‰
¦  «        t          t          dd¦  «        ‰
¦  «        g¦  «        t          ddgg¦  «        t          t          dd¦  «        t          j        gd‰
d‰
z
  z  dz  gg¦  «        ¦  «          |‰t          j        ‰z   ft          j        ft          t          ‰ ‰
¦  «        t          ‰ t          j        z
  ‰
¦  «         g¦  «        t          ddgg¦  «        t          d‰ g‰
d‰z  dz
  z  dz  d‰
z
  z  t          j        ‰
d‰z  dz
  z  d‰
z
  z  z
  gg¦  «        ¦  «          |‰‰ gt          j        gt          t          ‰‰
¦  «        t          ‰‰
¦  «        g¦  «        t          ddgg¦  «        t          d‰ g‰‰
z  d‰
z
  z  dd‰
z
  z  dz  gg¦  «        ¦  «          |ddgdt          j        z  gt          t!          ‰
¦  «        dg¦  «        t          ddgg¦  «        t          ‰
t          j        z
  d‰
z
  z  dd‰
z
  z  dz  gddgg¦  «        ¦  «          |t          j        t          j        gt          j        gt          t%          ‰
¦  «        t'          ‰
¦  «        g¦  «        t          dt(          z  dgg¦  «        t          t          dd¦  «        dd‰
z  dz
  z  gt          dd¦  «        t          j        gg¦  «        ¦  «          |t          dd¦  «        t          j        gt          j        gt          t%          ‰
¦  «        t'          ‰
¦  «        g¦  «        t          ddt(          z  gg¦  «        t          t          dd¦  «        dd‰
z  dz
  z  gt          dd¦  «        t          j        gg¦  «        ¦  «          |t          dd¦  «        ddgt          j        dgt          ‰
t          ‰
¦  «        z  t          ‰
¦  «        dg¦  «        t          t          dd¦  «        t          j         d‰
z  z  t          dd¦  «        gg¦  «        t          t          j        d‰
d‰
z
  z  dz  gdd‰
‰
dz
  z  gg d¢g¦  «        ¦  «          |t          dd¦  «        ddgddgt          t          t          j        ‰
¦  «        t+          ‰
¦  «        dg¦  «        t          t          dd¦  «        dd‰
z  z  z
  dd‰
z  z  dd‰
z  z  gg¦  «        t          ‰
dz  ‰
dz
  z  ddgdd‰
dz
  z  z  dt          j        gg d¢g¦  «        ¦  «          |dg‰gt          ‰
d‰z
  z  t          ‰
¦  «        z  t-          ‰dz
  ‰
¦  «        z  dg¦  «        t          ‰dz
  dgg¦  «        t          d‰z
  ‰
z   dgddgg¦  «        ¦  «          |‰gd‰z  gt          ‰
t          j        ‰z
  z  t          ‰
dz  ¦  «        z  t/          ‰t          j        z
  ‰
dz  ¦  «        z  t1          ‰t          j        z   ¦  «        z  dt          j        ‰z
  z  z  ‰
t          j        ‰z
  z  t          ‰
dz  ¦  «        z  t/          ‰t          j        z   ‰
dz  ¦  «        z  t1          ‰t          j        z   ¦  «        z  dt          j        ‰z
  z  z  g¦  «        t          ddgg¦  «        t          ‰
dz  ‰
dz  g‰
dz  ‰
dz  d‰z  z
  gg¦  «        ¦  «         t3          d¦  «        ‰
z  } |‰g‰dz   gt          |‰ z  ‰z  t-          ‰|¦  «        z  ‰t          ‰
¦  «        z  g¦  «        t          ddgg¦  «        t          ‰ dgd‰
gg¦  «        ¦  «          |t          dd¦  «        gt          j        gt          ‰
¦  «        t5          t(          ‰
z  ¦  «        t6           z  t9          t6          t5          ‰
¦  «        z  ¦  «        z  z
  ¦  «          |dgt          dd¦  «        t          dd¦  «        gt          t5          t(          ¦  «        t6          t;          dt5          ‰
¦  «        z  ¦  «        z  t=          dt?          ‰
d¦  «        z  t          t6          t(          z  dz  ¦  «        z  t5          t(          ¦  «        z  ¦  «        z  tA          dt5          ‰
¦  «        z  ¦  «        tC          dt?          ‰
d¦  «        z  t          t6          t(          z  dz  ¦  «        z  t5          t(          ¦  «        z  ¦  «        z  z   z  t          t6           t(          z  dz  ¦  «        z  dt?          ‰
d¦  «        z  z  t5          t(          ¦  «        t?          ‰
d¦  «        z  t;          dt5          ‰
¦  «        z  ¦  «        tC          dt?          ‰
d¦  «        z  t          t6          t(          z  dz  ¦  «        z  t5          t(          ¦  «        z  ¦  «        z  t6          tA          dt5          ‰
¦  «        z  ¦  «        z  t=          dt?          ‰
d¦  «        z  t          t6          t(          z  dz  ¦  «        z  t5          t(          ¦  «        z  ¦  «        z  z   z  t          t6           t(          z  dz  ¦  «        z  dz  dg¦  «        t          g d¢g¦  «        t          t          dd¦  «        dt          dd¦  «        g‰
t          dd¦  «        dgg d¢g¦  «        ¦  «          |t          j        ‰gt          dd¦  «        ‰dz   gt          ‰d‰z  dz
  z  t6           z  t5          t(          ‰
z  ¦  «        z  t9          t6          t5          ‰
¦  «        z  ¦  «        z  ‰d‰z  dz
  z  t3          d¦  «        ‰
z  ‰ z  z  t-          ‰t3          d¦  «        ‰
z  ¦  «        z  ‰d‰z  dz
  z  t          ‰
¦  «        z  g¦  «        t          g d¢g¦  «        t          t          dd¦  «        ddgd‰ dgdd‰
gg¦  «        ¦  «          |ddgddgt          tE          ‰
¦  «        tG          ‰
¦  «        z
  t          ‰
¦  «        dtH          g¦  «        t          d‰
z  ddd‰
z  gg¦  «        t          g d¢d‰
ddgg d¢g d¢g¦  «        ¦  «          |dt          j        ftA          dt5          ‰
¦  «        z  ¦  «        ¦  «          |g ‰gt          t1          ‰¦  «        ‰
d‰z
  dz  z  z  t/          ‰dz
  dt5          ‰
¦  «        z  ¦  «        z  t1          ‰¦  «        ‰
d‰dz  z
  z  z  t/          ‰dt5          ‰
¦  «        z  ¦  «        z  g¦  «        t          ddgg¦  «        t          ddg‰
d‰z
  gg¦  «        ¦  «         d‰
t          dd¦  «        z  z  Š	ˆ	fd„}ˆ	fd„} |g t          j        ‰‰t          j        z   gt           |d‰z  dz
  ‰
¦  «         |d‰z  ‰
¦  «        ‰
t          dd¦  «        z  z   |d‰z  dz
  ‰
¦  «        t5          ‰
¦  «        z   |d‰z  ‰
¦  «        ‰
t          dd¦  «        z  z  g¦  «        dd‰z  z  z  t1          d‰z  ¦  «        z  ‰
dd‰z  z
  dz  z  z  t          g d¢g¦  «        t          g d¢dt          j        ‰z
  ddgddt          j        dg‰
ddd‰z
  gg¦  «        ¦  «         dd‰
z  t          dd¦  «        z  z  tK          t6          t(          z  dz  ¦  «        z  Š	 |g ‰‰t          j        z   d‰z  gdt5          t3          d¦  «        ‰
z  ¦  «        z  dd‰z  z
  z  t1          d‰z  ¦  «        dz  z  t          tM          d‰z  dz
  ‰	¦  «        t/          d‰z  dz
  ‰	¦  «        z  ‰	t/          d‰z  ‰	¦  «        tM          d‰z  dz
  ‰	¦  «        z  t/          d‰z  dz
  ‰	¦  «        tM          d‰z  ‰	¦  «        z  z
  z  ‰	dz  t/          d‰z  ‰	¦  «        z  tM          d‰z  ‰	¦  «        z  ‰	dz  t/          d‰z  ‰	¦  «        tM          d‰z  dz
  ‰	¦  «        z  t/          d‰z  dz
  ‰	¦  «        tM          d‰z  ‰	¦  «        z  z   z  g¦  «        z  t          g d¢g¦  «        t          dt          dd¦  «        ddgddd‰z  z
  dz  t          dd¦  «        dgdddd‰z  z
  t          dd¦  «        gd‰
z  ddd‰z
  gg¦  «        ¦  «          |‰g‰t          j        z
  d‰z  gt          ‰
t          j        ‰z
  z  t/          ‰t          j        z
  t5          ‰
¦  «        ¦  «        dz  z  ‰
d‰z
  z  t/          ‰t          j        z
  t5          ‰
¦  «        ¦  «        z  t/          ‰t          dd¦  «        z
  t5          ‰
¦  «        ¦  «        z  ‰
t          dd¦  «        ‰z
  z  t/          ‰t          dd¦  «        z
  t5          ‰
¦  «        ¦  «        dz  z  g¦  «        t          t1          ‰t          j        z   ¦  «        dz   dt          j        ‰z
  z  z  dt1          ‰t          j        z
  ¦  «        z  t1          ‰t          j        z   ¦  «        z  dd‰z
  z  z  dgg¦  «        t          dd‰z  z
  ddg‰
dz  t          j        ‰z
  t          j        gd‰
dgg¦  «        ¦  «          |t          j        g‰d‰z
  gt(          d‰z
  z  tO          t(          ‰z  ¦  «        z  t          t/          d‰z
  t5          ‰
¦  «        ¦  «        t/          ‰dz
  t5          ‰
¦  «        ¦  «        z  t5          ‰
¦  «        t/          ‰ t5          ‰
¦  «        ¦  «        t/          ‰dz
  t5          ‰
¦  «        ¦  «        z  t/          d‰z
  t5          ‰
¦  «        ¦  «        t/          ‰t5          ‰
¦  «        ¦  «        z  z   z  t/          ‰ t5          ‰
¦  «        ¦  «        t/          ‰t5          ‰
¦  «        ¦  «        z  g¦  «        z  t          g d¢g¦  «        t          ‰dz
  t          j        dg‰
d‰
gdt          j        ‰ gg¦  «        ¦  «          |t          j        gt          dd¦  «        t          dd¦  «        gt          tQ          dt5          ‰
¦  «        z  ¦  «        dz  t5          ‰
¦  «        z  t;          dt5          ‰
¦  «        z  ¦  «        dz  t5          ‰
¦  «        z  tA          dt5          ‰
¦  «        z  ¦  «        g¦  «        t          g d¢g¦  «        t          t          dd¦  «        t          j        dgdt          dd¦  «        t          j        gdd‰
z  dgg¦  «        ¦  «          |t          dd¦  «        gt          dd¦  «        t          dd¦  «        gt          t=          t          t(          t6          z  dz  ¦  «        t?          ‰
d¦  «        z  dz  t5          t(          ¦  «        z  ¦  «        t(          t          t(          t6          z  dz  ¦  «        t?          ‰
d¦  «        z  dz  t5          t(          ¦  «        z  dz  z  z  t;          dt5          ‰
¦  «        z  ¦  «        t5          ‰
¦  «        z  tA          dt5          ‰
¦  «        z  ¦  «        g¦  «        t          g d¢g¦  «        t          t          dd¦  «        t          dd¦  «        dgdt          dd¦  «        dgd‰
dgg¦  «        ¦  «          |t          dd¦  «        gt          j        t          dd¦  «        gt          t5          t(          ¦  «        t          t6           t(          z  dz  ¦  «        z  tC          dt?          ‰
d¦  «        z  t          t6          t(          z  dz  ¦  «        z  t5          t(          ¦  «        z  ¦  «        z  dt?          ‰
d¦  «        z  z  tA          dt5          ‰
¦  «        z  ¦  «        t;          dt5          ‰
¦  «        z  ¦  «        t5          ‰
¦  «        z  g¦  «        t          g d¢g¦  «        t          t          dd¦  «        t          dd¦  «        dgg d ¢d‰
t          j        gg¦  «        ¦  «          |‰‰t          j        z   gd‰z  ‰d‰z  ‰z
  dz   gt1          ‰¦  «        t1          d‰z  ‰z
  dz   ¦  «        z  t5          ‰
¦  «        dz  dd‰z  z
  z  z  t          t/          ‰dz
  t5          ‰
¦  «        ¦  «        t/          d‰z  ‰z
  t5          ‰
¦  «        ¦  «        z  t5          ‰
¦  «        t/          ‰t5          ‰
¦  «        ¦  «        z  t/          d‰z  ‰z
  t5          ‰
¦  «        ¦  «        z  t5          ‰
¦  «        t/          ‰dz
  t5          ‰
¦  «        ¦  «        z  t/          d‰z  ‰z
  dz   t5          ‰
¦  «        ¦  «        z  t/          ‰t5          ‰
¦  «        ¦  «        t/          d‰z  ‰z
  dz   t5          ‰
¦  «        ¦  «        z  g¦  «        z  t          g d¢g¦  «        t          dt          j        t          j        dg‰
dz  d‰z
  d‰
dz  g‰
dz  d‰d‰z  z
  ‰
dz  gdt          j        t          j        d‰z  gg¦  «        ¦  «          |ddgddt          dd¦  «        gt          tS          dt5          ‰
¦  «        z  ¦  «        tG          dt5          ‰
¦  «        z  ¦  «        z
  tA          dt5          ‰
¦  «        z  ¦  «        t5          ‰
¦  «        t;          dt5          ‰
¦  «        z  ¦  «        z  dtH          g¦  «        t          d‰
z  dddd‰
z  gg¦  «        t          dt          j        dt          dd¦  «        dgg d!¢d‰
t          j        ddgg d"¢g d"¢g¦  «        ¦  «          |dd‰gdd‰dz   gt          ‰tG          ‰
 ¦  «        tU          d‰
 ¦  «        z   tH          z   z  ‰
‰dz  d‰z  z
  dz   z  z  ‰‰
 ‰ z  z  t1          ‰¦  «        tW          ‰‰
 ¦  «        z
  z  ‰dz
  dz  z  ‰t          ‰
¦  «        z  ‰dz  d‰z  z
  dz   z  ‰‰
‰dz  d‰z  z
  dz   z  z  g¦  «        t          d‰z
  dd‰
z  dgg¦  «        t          ddd‰
z  dgd‰ ddgdd‰
dgg d#¢g¦  «        ¦  «         d$S )%z Create our knowledge base. za b c, z)Úclsc           
      óx   •— t          | |¦  «        }‰                     t          |‰|‰‰‰f¦  «        ¦  «         d S ©N©ÚHyper_FunctionÚappendÚFormula)	ÚapÚbqÚresÚfuncÚaÚbr\   ÚformulaeÚzs	       €€€€€r]   Úaddzadd_formulae.<locals>.addh   s>   ø€ Ý˜b "Ñ%Ô%ˆØ�Š�  a¨¨q°!°Q¨iÑ8Ô8Ñ9Ô9Ð9Ð9Ð9r_   c                 ó~   •— t          | |¦  «        }‰	                     t          |‰
d ‰‰‰f|||¦  «        ¦  «         d S rc   rd   )rh   ri   ÚBÚCÚMrk   rl   rm   r\   rn   ro   s         €€€€€r]   Úaddbzadd_formulae.<locals>.addbl   sD   ø€ Ý˜b "Ñ%Ô%ˆØ�Š�  a¨°°1°a¨y¸!¸QÀÑBÔBÑCÔCÐCÐCÐCr_   © é   rX   r   )rX   rX   )rw   éÿÿÿÿz3/2éþÿÿÿé   )r   r   r   é   é	   é   é   )rX   r   r   )rX   rx   r   )r   rX   rx   r   )r   r   r   r   c                 óF   •— t          | ‰¦  «        t          | ‰¦  «        z   S rc   ©r"   r(   ©rl   ro   r[   s     €r]   Úfpzadd_formulae.<locals>.fp÷   ó   ø€ Ý�q˜!‰}Œ}�w q¨!™}œ}Ñ,Ð,r_   c                 óF   •— t          | ‰¦  «        t          | ‰¦  «        z
  S rc   r€   r�   s     €r]   Úfmzadd_formulae.<locals>.fmú   rƒ   r_   )rX   r   r   r   )r   rX   r   r   iàÿÿÿé   )é   r   r   éýÿÿÿ)r   r   rX   )r   r   rX   r   r   )r   r   r   r   r   )r   r   r   rx   N),r
   r	   r   rA   r   ÚHalfrL   rB   rC   r@   r   rD   rF   rG   rI   rJ   rE   ÚOner;   r<   r   rH   r    r"   r#   r2   r   r   r&   r-   r0   r   r.   r1   r)   r   r   r3   r(   r'   r,   r/   r%   r$   )rn   rp   ru   Úmzr‚   r…   rl   rm   r\   r[   ro   s   `     @@@@@r]   Úadd_formulaerŒ   d   sf  øøøøøø€ å˜­Ð/Ñ/Ô/�J€A€qˆ!ˆQð:ð :ð :ð :ð :ð :ð :ð :ð :ðDð Dð Dð Dð Dð Dð Dð Dð Dð €CˆˆB•�A‘”ÑÔÐð €Cˆˆˆr•? A 2 qÑ)Ô)Ñ*Ô*Ð*ð 	€Dˆ!ˆQ•”‰Zˆ˜1˜Q™3˜'Ý	•  AÑ&Ô&Ý  ¥Q¤V¡¨QÑ/Ô/°Ñ1ð3ñ 
4ô 
4å	�!�Q��Ñ	Ô	Ý	�1•q”v‘:˜q‘. ! a¡%Ñ(­1¬6°A©:°q©.¸!¸a¹%Ñ*@ÐAØ�Q˜‘U‘)˜Q  A¡™Y¨¨A©Ñ.Ð/ð1ñ 
2ô 
2ñ	3ô 3ð 3ð 	€Dˆ�Ý	•˜qÑ!Ô! 1Ð%Ñ	&Ô	&­°°A±°q°	¨{Ñ(;Ô(;Ý	�!�Q˜˜A™‘Y� ! Q Ð(Ñ	)Ô	)ñ+ô +ð +ð 	€D�!Œ&�!ˆ•q˜‘x”x�lÝ	• Ñ"Ô" AÐ&Ñ	'Ô	'Ý	�!�Q��Ñ	Ô	Ý	•(˜2˜q‘/”/ 1 a¨!¡e¡9¨Q¡;Ð/°!°Q°Ð8Ñ	9Ô	9ñ;ô ;ð ;ð 	€D�!Œ&•!”&Ð	�A˜e™HœH˜<Ý	• Ñ"Ô"¥OµH¸RÀ±O´OÀQÑ$GÔ$GÐHÑ	IÔ	IÝ	�!�Q��Ñ	Ô	Ý	•(˜2˜q‘/”/¥1¤6Ð*¨Q°°1°q±5±	¸!±Ð,<Ð=Ñ	>Ô	>ñ@ô @ð @ð 	€Dˆ!�QŒV�a‰Zˆ�1œ6˜*Ý	• !  QÑ'Ô'­/¸1¸"½q¼v¹+ÀqÑ*IÔ*IÐ)IÐJÑ	KÔ	KÝ	�!�Q��Ñ	Ô	Ý	�!�a�R�Ø�R˜‘T˜A‘X‘,˜q‘. ! a¡%Ñ(­!¬&°1°b¸±d¸Q±h±<ÀÀQÁÑ3GÑ*GÐHðJñ 
Kô 
KñLô Lð Lð 	€Dˆ!ˆaˆRˆ•1”6�(Ý	Õ! ! QÑ'Ô'Õ)9¸!¸QÑ)?Ô)?Ð@Ñ	AÔ	AÝ	�!�Q��Ñ	Ô	Ý	�!�a�R�˜1˜Q™3  A¡™;¨¨1¨q©5©	°!©Ð4Ð5Ñ	6Ô	6ñ8ô 8ð 8ð 	€Dˆ!ˆQˆ�!•A”F‘(�Ý	• Ñ"Ô" AÐ&Ñ	'Ô	'­°!°Q°°Ñ)9Ô)9Ý	�1•q”v‘:  A¡Ñ&¨¨1¨q©5©	°!©Ð4°q¸!°fÐ=Ñ	>Ô	>ñ@ô @ð @ð
 	€D�!Œ&•!”&Ð	�AœE˜7Ý	•˜A‘”¥
¨1¡¤Ð.Ñ	/Ô	/Ý	�!•B‘$˜��Ñ	Ô	Ý	•(˜2˜q‘/”/ 2 q¨¡s¨1¡u¡:Ð.Ý˜2˜q‘/”/¥1¤6Ð*ð,ñ 
-ô 
-ñ.ô .ð .ð
 	€D�(�2�q‰/Œ/�1œ6Ð	"¥Q¤U GÝ	•˜A‘”¥
¨1¡¤Ð.Ñ	/Ô	/Ý	�!�Q•r‘T��Ñ	Ô	Ý	•(˜2˜q‘/”/ 2 q¨¡s¨1¡u¡:Ð.Ý˜2˜q‘/”/¥1¤6Ð*ð,ñ 
-ô 
-ñ.ô .ð .ð 	€D�(�2�q‰/Œ/˜1˜aÐ	 ¥1¤6¨1 +Ý	�•> !Ñ$Ô$Ñ$¥m°AÑ&6Ô&6¸Ð:Ñ	;Ô	;Ý	•(˜2˜q‘/”/¥A¤E 6¨1¨Q©3¡<µ¸!¸Q±´Ð@ÐAÑ	BÔ	BÝ	•!”&˜!˜Q  A¡™Y q™[Ð)Ø�Q˜˜1˜q™5™	Ð"Ø��ðñ 
ô 
ñô ð ð 	€D�(�2�q‰/Œ/˜1˜aÐ	  1 a &Ý	•¥¤¨Ñ+Ô+­]¸1Ñ-=Ô-=¸qÐAÑ	BÔ	BÝ	•(˜1˜a‘.”. 2 q¨¡s¡8Ñ+¨Q°°!±©W°b¸!¸A¹#±hÐ?Ð@Ñ	AÔ	AÝ	�!�A‘#�q˜1‘u‘+˜q !Ð$ q¨!¨Q°©U©)¡}°a½¼Ð&@À)À)À)ÐLÑ	MÔ	MñOô Oð Oð 	€Dˆ!ˆˆqˆc•6˜1˜q 1™u™:­¨A©¬Ñ.µ¸AÀ¹EÀ1Ñ1EÔ1EÑEÀqÐIÑJÔJÝ	�!�a‘%˜��Ñ	Ô	�v¨¨A©°©	°1 ~¸¸1°vÐ&>Ñ?Ô?ñAô Að Aà€Dˆ!ˆˆq�‰sˆeÝ	�•Q”V˜a‘Z‘¥ Q q¡S¡¤Ñ)­'°!µa´f±*¸aÀ¹cÑ*BÔ*BÑBÝ˜�QœV™Ñ$Ô$ñ%Ø%&­¬°!©¡_ñ5à•Q”V˜a‘Z‘¥ Q q¡S¡¤Ñ)­'°!µa´f±*¸aÀ¹cÑ*BÔ*BÑBÝ˜�QœV™Ñ$Ô$ñ%Ø%&­¬°!©¡_ñ5ð6ñ 
7ô 
7õ 
�!�Q��Ñ	Ô	Ý	�!�A‘#�q˜‘s�˜a ™c A a¡C¨!¨A©#¡IÐ/Ð0Ñ	1Ô	1ñ3ô 3ð 3õ 
�B‰Œ˜Ñ	€BØ€Dˆ!ˆˆq�1‰uˆgÝ	��q�b‘˜!‘�J q¨"Ñ-Ô-Ñ-¨qµ°Q±´©xÐ8Ñ	9Ô	9Ý	�!�Q��Ñ	Ô	Ý	�1�"�a�˜1˜a˜&Ð!Ñ	"Ô	"ñ$ô $ð $ð
 €C��"�a‰ŒÐ�AœF˜8¥S¨¡V¤V­dµ2°a±4©j¬j½1¸"©o½cÅ!ÅDÈÁGÄGÁ)¹n¼nÑ.LÑ%LÑMÔMÐMð 	€Dˆ!ˆ�x˜˜1‰~Œ~�x¨¨1™~œ~Ð.Ý	•$•r‘(”(�A�d 1¥T¨!¡W¤W¡9™oœoÑ-­h°q½¸aÀ¹¼±|ÅCÍÍ"ÉÈQÉÁKÄKÑ7OÕPTÕUWÑPXÔPXÑ7XÑ.YÔ.YÑYÝ" 1¥T¨!¡W¤W¡9™oœo­h°q½¸aÀ¹¼±|ÅCÍÍ"ÉÈQÉÁKÄKÑ7OÕPTÕUWÑPXÔPXÑ7XÑ.YÔ.YÑYñZñ [å�˜�2™˜a™‘L”Lñ!à"#¥D¨¨A¡J¤J¡,ñ0õ •r‘(”(�4  1™:œ:Ñ%¥t¨A­d°1©g¬g©I¡¤µxÀÅ$ÀqÈ!Á*Ä*ÁÍSÕQRÕSUÑQUÐVWÑQWÉ[Ì[Ñ@XÕY]Õ^`ÑYaÔYaÑ@aÑ7bÔ7bÑ'bÝ()­$¨qµ°a±´©y©/¬/Ñ(9½(À1ÅTÈ!ÈQÁZÄZÁ<ÕPSÕTUÕVXÑTXÐYZÑTZÑP[ÔP[ÑC[Õ\`ÕacÑ\dÔ\dÑCdÑ:eÔ:eÑ(eñ(fñ gå��r�"‘u˜Q‘w‘<”<ñ à !ñ"ð ðñ 
ô 
õ 
����Ñ	Ô	Ý	•(˜2˜q‘/”/°µ8¸A¸q±>´>ÐBØ !¥8¨A¨q¡>¤>ÀÐBØBÐBÐBðDñ 
Eô 
EñFô Fð Fð 	€D�!Œ&�!ˆ•x  1‘~”~ q¨1¡uÐ-Ý	��A�a‘C˜!‘G‘�q˜bÑ!¥$¥r¨!¡t¡*¤*Ñ,­Sµµ4¸±7´7±©^¬^Ñ;Ø�A�a‘C˜!‘G‘�j¨™nœn¨QÑ.°1°"Ñ5Ñ5Ý˜A�z¨"™~œ~¨aÑ/Ñ0Ô0ñ1à�A�a‘C˜!‘G‘�S ™VœVÑ#ð%ñ 
&ô 
&õ 
����Ñ	Ô	Ý	•(˜2˜q‘/”/ 1 aÐ(¨1¨q¨b°!¨*°q¸!¸Q°iÐ@Ñ	AÔ	AñCô Cð Cð 	€Dˆ!ˆQˆ�!�Q�Ý	•�A‘”�˜Q™œ‘¥ Q¡¤¨­JÐ7Ñ	8Ô	8Ý	�!�A‘#�q˜!˜R ™TÐ"Ð#Ñ	$Ô	$Ý	���  A q¨! ¨l¨l¨l¸L¸L¸LÐIÑ	JÔ	JñLô Lð Lð €Cˆ�QŒVˆJ�˜Q�t A™wœw™Y™œÑ(Ô(Ð(Ø€DˆˆaˆSÝ	•�q‘”˜!˜q 1™u a™i™.Ñ(­°°Q±¸½$¸q¹'¼'¹	Ñ)BÔ)BÑBÝ�q‘”˜!˜a ! A¡#™g™,Ñ&¥w¨q°!µD¸±G´G±)Ñ'<Ô'<Ñ<ð>ñ 
?ô 
?å	�!�Q��Ñ	Ô	�6 A q 6¨A°°A±¨<Ð"8Ñ9Ô9ñ;ô ;ð ;ð 	
ˆ!�X�a˜‰^Œ^Ñ
Ñ€Að-ð -ð -ð -ð -ð-ð -ð -ð -ð -ð 	€Dˆ�aŒf�a˜�QœV™Ð$Ý	���A�a‘C˜!‘G˜Q‘”   A a¡C¨¡¤¨A­x¸¸1©~¬~Ñ,=Ñ!=Ø��A�a‘C˜!‘G˜Q‘”¥ Q¡¤Ñ'¨¨¨A¨a©C°©¬°AµxÀÀ1±~´~Ñ4EÑ)EðGñ 
Hô 
Hàˆr�!‰t‰9ñ
å˜1˜Q™3‘Z”Zñ
 à ! Q¨¨1©¡W¨a¡KÑ 0ñ
1õ 
����Ñ	Ô	Ý	���Ø•Q”V˜a‘Z  AÐ&Ø�Q�œ Ð"Ø�Q˜˜1˜q™5Ð!ð#ñ 
$ô 
$ñ%ô %ð %ð 	
ˆ1ˆQ‰3•˜!˜Q‘”Ñ
Ñ¥	­!­B©$¨q©&Ñ 1Ô 1Ñ1€AØ€Dˆˆa�•Q”V‘˜Q˜q™SÐ!Ø
�D•˜B‘” Ñ!Ñ"Ô"Ñ
" a¨!¨A©#¡gÑ	.­u°Q°q±S©z¬z¸1©}Ñ	<Ý	•˜˜1™˜q™ !Ñ$Ô$¥W¨Q¨q©S°1©W°aÑ%8Ô%8Ñ8Ø•G˜A˜a™C ‘O”O¥G¨A¨a©C°!©G°QÑ$7Ô$7Ñ7Ý˜a ™c A™g qÑ)Ô)­'°!°A±#°q©/¬/Ñ9ñ:ñ ;à�A‘•g˜a ™c 1‘o”oÑ%¥g¨a°©c°1¡o¤oÑ5Ø�A‘•w˜q ™s A‘”¥w¨q°©s°Q©w¸Ñ':Ô':Ñ:Ý   1¡ q¡¨!Ñ,Ô,­W°Q°q±S¸!©_¬_Ñ<ñ=ñ >ð	?ñ 
@ô 
@ñ
@õ 
����Ñ	Ô	Ý	�!•X˜a ‘^”^ Q¨Ð*Ø�a˜!˜A™#‘g˜q‘[¥(¨2¨q¡/¤/°1Ð5Ø�Q˜˜A˜a™C™¥¨!¨Q¡¤Ð0Ø�a‘%˜˜A˜q 1™uÐ%ð'ñ 
(ô 
(ñ)ô )ð )ð 	€Dˆ!ˆˆq•1”6‰z˜1˜Q™3ÐÝ	�•Q”V˜a‘Z‘¥¨­Q¬V©µT¸!±W´WÑ!=Ô!=¸qÑ!@Ñ@Ø�Q˜‘U‘�G A­¬¡Jµ°Q±´Ñ8Ô8Ñ8Ý˜!�h q¨!™nœnÑ,­d°1©g¬gÑ6Ô6ñ7à•X˜a ‘^”^ aÑ'Ñ(­°µX¸aÀ±^´^Ñ1CÅTÈ!ÁWÄWÑ)MÔ)MÈqÑ)PÑPðRñ 
Sô 
Sõ 
•5˜�QœV™Ñ$Ô$ aÑ'Ð'¨­A¬F°Q©J©Ñ7Ø•5˜�QœV™Ñ$Ô$Ñ$¥U¨1­q¬v©:Ñ%6Ô%6Ñ6°q¸1¸q¹5±zÑAØðð ñ 
ô 
õ 
�!�a˜‘c‘'˜1˜a� 1 Q¡3­¬°©
µA´FÐ";¸aÀÀA¸YÐGÑ	HÔ	HñJô Jð Jð 	€D�!Œ&ˆ�A�q˜1‘u�:Ý	ˆQ�‰U‰•C�˜1™‘I”IÑ	Ý	•˜˜Q™¥ Q¡¤Ñ(Ô(­°°Q±½¸Q¹¼Ñ)@Ô)@Ñ@Ý�a‘”�' 1 "¥d¨1¡g¤gÑ.Ô.­w°q¸1±u½dÀ1¹g¼gÑ/FÔ/FÑFÝ# A¨¡E­4°©7¬7Ñ3Ô3µG¸A½tÀA¹w¼wÑ4GÔ4GÑGñHñ Iå˜!˜�T !™WœWÑ%Ô%¥g¨aµ°a±´Ñ&9Ô&9Ñ9ð;ñ 
<ô 
<ñ
<õ
 
����Ñ	Ô	Ý	�!�a‘%�œ Ð#Ø�Q˜�Ø•Q”V˜a˜R�ð"ñ 
#ô 
#ñ	$ô 	$ð 	$ð 	€D�!Œ&ˆ•H˜Q ‘N”N¥H¨Q°¡N¤NÐ3Ý	•�Q•t˜A‘w”w‘Y‘” Ñ!¥$ q¡'¤'Ñ)­4°µ$°q±'´'±	©?¬?¸1Ñ+<½TÀ!¹W¼WÑ+DÝ�a�˜Q™œ‘i‘”ð"ñ 
#ô 
#å	����Ñ	Ô	Ý	•(˜2˜q‘/”/¥1¤6¨1Ð-°µ8¸BÀ±?´?ÅAÄFÐ/KÈaÐQRÐSTÑQTÐVWÈ[ÐYÑ	ZÔ	Zñ	\ô \ð \ð 	€D�(�1�a‰.Œ.Ð	�H Q¨™NœN­H°Q¸©N¬NÐ;Ý	ÝÝÝ�‘T˜!‘Vñô Ý!Ø˜Añô ñà ñ!å!%Ýñ"!ô "!ñ!ñ#ô #õ
 "$¥s­2­a©4°©6¡{¤{µ4¸¸1±:´:Ñ'=¸aÑ'?ÅÅRÁÄÑ'HÈ1Ñ&LÑ!LñOõ �A•d˜1‘g”g‘I‰Œ�t A™wœwÑ&Ý�A•d˜1‘g”g‘I‰Œð!ñ
"ô 
"õ 
����Ñ	Ô	Ý	•(˜2˜q‘/”/¥H¨Q°¡O¤O°QÐ7Ø�8 B¨™?œ?¨QÐ/Ø˜A QÐ'ð)ñ 
*ô 
*ñ+ô +ð +ð& 	€D�(�1�a‰.Œ.Ð	�AœF¥H¨Q°¡N¤NÐ3Ý	ÝÝñô ÝÝ�R�‘U˜1‘Wñô ñå&Ø�4  1™:œ:™¥c­!­B©$¨q©&¡k¤kÑ1µ$µr±(´(Ñ:ñ<ô <ñ<ð >?½tÀAÀq¹z¼z¹\ñKõ �A•d˜1‘g”g‘I‰ŒÝ�A•d˜1‘g”g‘I‰Œ�t A™wœwÑ&ð)ñ
*ô 
*õ 
����Ñ	Ô	Ý	•(˜2˜q‘/”/¥H¨Q°¡N¤N°AÐ;Ø+Ð+Ð+Ø˜A¥A¤FÐ+ð-ñ 
.ô 
.ñ/ô /ð /ð" 	€Dˆ!ˆQ•”‰Zˆ˜1˜Q™3  1 Q¡3¨¡7¨Q¡;Ð/Ý	ˆq‰Œ•%˜˜!™˜a™ !™Ñ$Ô$Ñ	$­¨Q©¬°©	°Q¸¸1¹±WÑ'=Ñ	=Ý	•˜˜Q™¥ Q¡¤Ñ(Ô(­°°1±°q±½$¸q¹'¼'Ñ)BÔ)BÑBÝ�a‘”� ¥D¨¡G¤GÑ,Ô,Ñ,­W°Q°q±S¸1±W½dÀ1¹g¼gÑ-FÔ-FÑFÝ�a‘”�  Q¡­¨Q©¬Ñ0Ô0Ñ0µ¸¸1¹¸q¹À1¹ÅdÈ1ÁgÄgÑ1NÔ1NÑNÝ˜�D ™GœGÑ$Ô$¥W¨Q¨q©S°1©W°q©[½$¸q¹'¼'Ñ%BÔ%BÑBðDñ 
Eô 
Eñ
Eõ
 
����Ñ	Ô	Ý	�!•Q”V�QœV QÐ'Ø�A‘#�q˜1‘u˜a  1¡Ð%Ø�A‘#�q˜!˜a ™c™' 1 Q¡3Ð'Ø•Q”V�QœV R¨¡TÐ*ð,ñ 
-ô 
-ñ
.ô 
.ð 
.ð 	€Dˆ!ˆQˆ�!�Q�  A™œÐ'Ý	•�Q•t˜A‘w”w‘Y‘”¥# a­¨Q©¬¡i¡.¤.Ñ0Ý�a�˜Q™œ‘i‘”¥$ q¡'¤'­$¨qµ°a±´©y©/¬/Ñ"9¸1½jðJñ 
Kô 
Kå	�!�A‘#�q˜!˜Q  1¡Ð%Ð&Ñ	'Ô	'Ý	�!•Q”V˜Q¥¨¨Q¡¤°Ð3Ø ��Ø�Q�œ  1Ð%Ø ��Ø ��ð	"ñ 
#ô 
#ñ	$ô $ð $ð( 	€Dˆ!ˆQ�ˆ�Q˜˜1˜Q™3�KÝ	�•C˜˜‘G”G�f Q¨¨™mœmÑ+­jÑ8Ñ9¸1¸aÀ¹dÀQÀqÁS¹jÈ1¹nÑ;MÑNØ�Q�B˜1˜"‘:‘�u Q™xœx­*°Q¸¸Ñ*;Ô*;Ñ;Ñ<¸aÀ!¹eÀa¹ZÑGØ•3�q‘6”6‘˜1˜a™4 ! A¡#™:¨™>Ñ*Ø�A�q˜!‘t˜a ™c‘z A‘~Ñ&Ñ'ð)ñ 
*ô 
*õ 
�!�A‘#�q˜"˜Q™$ Ð"Ð#Ñ	$Ô	$Ý	�"�Q�r˜!‘t˜A�Ø�Q�B�q˜�Ø�A�a˜�Ø��ðñ 
ô 
ñ	ô 	ð 	ð 	ð 	r_   c                 ó¼  ‡ ‡‡	‡
‡‡— t          t          t          d¦  «        ¦  «        \  ŠŠ	Š
Št          d¦  «        Šˆˆ	ˆ
ˆ ˆˆfd„}ˆˆfd„} |‰‰z   gg ‰‰‰z   gg t          t	          d‰z
  ¦  «        ‰‰z  z  t          ‰¦  «        z  t          ‰‰¦  «        z  t	          d‰z
  ¦  «        ‰‰‰z   z  z  g¦  «        t          ddgg¦  «        t          ‰‰z   dgd‰‰z   gg¦  «        |¦  «         ˆfd„}t          d	t          ‰¦  «        z  ¦  «        }t          d	t          ‰¦  «        z  ¦  «        }t          d	t          ‰¦  «        z  ¦  «        t          d	z  z
  }t          d	t          ‰¦  «        z  ¦  «        } |‰gg ‰‰‰t          j        z
  gg t          t          t          ¦  «        ‰‰t          j        z
  z  z  ||z  ||z  z
  z  t          t          ¦  «        ‰‰z  z  ||z  ||z  z   z  t          t          ¦  «        ‰‰z  z  g¦  «        t          g d
¢g¦  «        t          ‰t          j        z
  ddg‰‰t          j        gdd‰gg¦  «        |¦  «         d S )NÚabczÚrhoc                 óf   •— ‰                      t          | |||‰‰‰	‰
‰g||||¦
  «
        ¦  «         d S rc   )rf   ÚMeijerFormula)Úanrh   Úbmri   rr   rs   rt   Úmatcherrl   rm   r\   rn   r�   ro   s           €€€€€€r]   rp   z!add_meijerg_formulae.<locals>.addˆ  sL   ø€ Ø�Š� b¨"¨b°"°a¸!¸QÀÀ3¸Ø&'¨¨A¨wñ8ô 8ñ 	9ô 	9ð 	9ð 	9ð 	9r_   c                 ó4  •— | j         d         }| j        \  }}d}t          ||z
                       ¦   «         ¦  «        sd}||}}t          ||z
                       ¦   «         ¦  «        s	||z
  dk    rd S ||g}|r||g}‰|‰||z
  it	          |gg |g ¦  «        fS )Nr   FT)r’   r“   r^   ÚsimplifyÚ
G_Function)rk   r[   Úyro   ÚswappedÚlrl   r�   s         €€r]   Údetect_uppergammaz/add_meijerg_formulae.<locals>.detect_uppergammaŒ  s¿   ø€ ØŒG�AŒJˆØŒw‰ˆˆ1ØˆÝ�a˜!‘e×%Ò%Ñ'Ô'Ñ(Ô(ð 	ØˆGØ˜�ˆQÝ�!�a‘%×!Ò!Ñ#Ô#Ñ$Ô$ð 	¨¨A©°ª	¨	Ø�4Ø�ˆFˆØð 	Ø�A�ˆAØ�Q˜˜1˜q™5Ð!¥:¨q¨c°2°q¸"Ñ#=Ô#=Ð=Ð=r_   rX   r   rx   c                 ó–  •‡— | j         d         Š| j        \  }}}t          ||z
                       ¦   «         ¦  «        dk    rTt          ||z
                       ¦   «         ¦  «        dk    rdS t          j        t          j        t          j        f}|||}}}n{t          ‰|z
                       ¦   «         ¦  «        dk    r*t          j        t          j        t          j        f}|||}}}n)t          j        t          j        t          j        f}|||}}}t          ‰|z
                       ¦   «         ¦  «        dk    slt          ‰|z
                       ¦   «         ¦  «        dk    sDt          ‰|z
                       ¦   «         ¦  «        t          j        k    s‰|z
  dk    s	‰|z
  dk    rdS ‰	‰it          ‰gg ˆfd„|D ¦   «         g ¦  «        fS )z.https://functions.wolfram.com/07.34.03.0984.01r   Nc                 ó4   •— g | ]}‰t           j        z
  |z   ‘ŒS rv   )r   r‰   )Ú.0Útr[   s     €r]   ú
<listcomp>z=add_meijerg_formulae.<locals>.detect_3113.<locals>.<listcomp>¸  s#   ø€ Ð+HÐ+HÐ+H¸q¨Aµ´©J¸©NÐ+HÐ+HÐ+Hr_   )r’   r“   r^   r–   r   r‰   ÚZeror—   )
rk   ÚuÚvÚwÚsigÚx1Úx2r˜   r[   rl   s
           @€r]   Údetect_3113z)add_meijerg_formulae.<locals>.detect_3113¡  s¨  øø€ àŒG�AŒJˆØ”'‰ˆˆ1ˆaÝ�!�a‘%×!Ò!Ñ#Ô#Ñ$Ô$¨Ò)Ð)Ý�a˜!‘e×%Ò%Ñ'Ô'Ñ(Ô(¨AÒ-Ð-Ø�Ý”6�1œ6¥1¤6Ð*ˆCØ˜1˜a�A�ˆBˆBå�a˜!‘e×%Ò%Ñ'Ô'Ñ(Ô(¨AÒ-Ð-Ý”v�qœv¥q¤vÐ.�Ø˜q !�r�A��å”v�qœv¥q¤vÐ.�Ø˜q !�r�2�å�1�r‘6×#Ò#Ñ%Ô%Ñ&Ô&¨!Ò+Ð+Ý�1�r‘6×#Ò#Ñ%Ô%Ñ&Ô&¨!Ò+Ð+Ý�1�q‘5×"Ò"Ñ$Ô$Ñ%Ô%­¬Ò/Ð/Ø�B‘˜’
�
˜a "™f qšj˜jØˆFà�1ˆv•z 1 # rÐ+HÐ+HÐ+HÐ+HÀCÐ+HÑ+HÔ+HÈ"ÑMÔMÐMÐMr_   rw   )ry   r   r   )ÚlistÚmapr	   rL   r#   r   r$   r'   r   r!   r+   r   r*   r   r‰   )rn   rp   r›   r¨   ÚsÚc_ÚS_rs   rl   rm   r\   r�   ro   s   `       @@@@@r]   Úadd_meijerg_formulaer®   „  sŸ  øøøøøø€ Ý•c�% Ñ(Ô(Ñ)Ô)�J€A€qˆ!ˆQÝ
�‰,Œ,€Cð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð>ð >ð >ð >ð >ð >ð €CˆˆS‰ˆ	�2˜˜Q ™W�~ rÝ•�a˜!‘e‘”˜Q ™VÑ#¥C¨¡F¤FÑ*­:°a¸Ñ+;Ô+;Ñ;Ý�a˜!‘e‘”˜Q  S¡™\Ñ)ð+ñ 	,ô 	,å��A�ˆxÑÔÝ��q‘˜"�  1 s¡7˜|Ð,Ñ-Ô-Øñô ð ðNð Nð Nð Nð Nõ2 	ˆA�d�1‰gŒg‰I‰Œ€AÝ	ˆQ�t�A‰wŒw‰Y‰Œ€BÝ	ˆA�d�1‰gŒg‰I‰Œ�˜A™Ñ	€BÝ
ˆ1�T�!‰WŒW‰9‰Œ€AØ€CˆˆˆR�!�Q˜�AœF™
Ð# RÝ••R‘”˜˜Q¥¤™Z™Ñ(¨"¨R©%°!°A±#©+Ñ6Ý•R‘”˜˜A™‘˜q ™t b¨¡d™{Ñ+Ý•R‘”˜˜A™‘ðñ 	 ô 	 õ 	�
�
�
ˆ|ÑÔÝ�•Q”V‘˜R Ð# a¨­A¬F ^°a¸¸A°YÐ?Ñ@Ô@Øñô ð ð ð r_   c                 ó   ‡ — ˆ fd„}|S )z@ Create a function that simplifies rational functions in ``z``. c                 ó  •— |                       ¦   «         \  }}|                     ¦   «         }t          |‰¦  «                             t          |‰¦  «        ¦  «        \  }}}||                     ¦   «         z  |                     ¦   «         z  S )z6 Efficiently simplify the rational function ``expr``. )Úas_numer_denomr   rP   ÚcancelÚas_expr)ÚexprÚnumerÚdenomr\   ro   s       €r]   Úsimpzmake_simp.<locals>.simpÊ  sn   ø€ à×*Ò*Ñ,Ô,‰ˆˆuØ—’‘”ˆå˜u a™.œ.×/Ò/µ°U¸A±´Ñ?Ô?‰ˆˆ5�%Ø�5—=’=‘?”?Ñ" U§]¢]¡_¤_Ñ4Ð4r_   rv   )ro   r·   s   ` r]   Ú	make_simpr¸   Ç  s#   ø€ ð5ð 5ð 5ð 5ð 5ð €Kr_   c                  ó`   — t           r&| D ]}t          |d¬¦  «         Œt          ¦   «          d S d S )NÚ )Úend)r   Úprint)Úargsrl   s     r]   Údebugr¾   Õ  sF   € Ýð Øð 	ð 	ˆAÝ�!˜ÐÑÔÐÐÝ‰Œˆˆˆðð r_   c                   ó†   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zˆ fd„Z	d„ Z
d„ Zd	„ Zd
„ Zˆ xZS )re   z( A generalized hypergeometric function. c                 ó  •— t          ¦   «                              | ¦  «        }t          t          t	          t
          |¦  «        ¦  «        Ž |_        t          t          t	          t
          |¦  «        ¦  «        Ž |_        |S rc   )ÚsuperÚ__new__r   r©   rª   r   rh   ri   )ra   rh   ri   ÚobjÚ	__class__s       €r]   rÂ   zHyper_Function.__new__ß  sU   ø€ Ý‰gŒg�oŠo˜cÑ"Ô"ˆÝ��S¥¨™_œ_Ñ-Ô-Ð.ˆŒÝ��S¥¨™_œ_Ñ-Ô-Ð.ˆŒØˆ
r_   c                 ó   — | j         | j        fS rc   )rh   ri   ©Úselfs    r]   r½   zHyper_Function.argså  s   € à”˜œÐ!Ð!r_   c                 óR   — t          | j        ¦  «        t          | j        ¦  «        fS rc   )Úlenrh   ri   rÆ   s    r]   ÚsizeszHyper_Function.sizesé  s   € å�D”G‘”�c $¤'™lœlÐ+Ð+r_   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )zt
        Number of upper parameters that are negative integers

        This is a transformation invariant.
        c              3   óL   K  — | ]}t          |j        o|j        ¦  «        V — Œ d S rc   )ÚboolÚ
is_integerÚis_negative©rž   r[   s     r]   ú	<genexpr>z'Hyper_Function.gamma.<locals>.<genexpr>ô  s3   è è € ÐIÐI¸A•4˜œÐ6¨¬Ñ7Ô7ÐIÐIÐIÐIÐIÐIr_   )Úsumrh   rÆ   s    r]   r#   zHyper_Function.gammaí  s#   € õ ÐIÐIÀÄÐIÑIÔIÑIÔIÐIr_   c                 ób   •— t          ¦   «                              ¦   «         | j        | j        fz   S rc   )rÁ   Ú_hashable_contentrh   ri   ©rÇ   rÄ   s    €r]   rÔ   z Hyper_Function._hashable_contentö  s.   ø€ Ý‰wŒw×(Ò(Ñ*Ô*¨d¬gØ”ð.ñ ð 	r_   c                 ó8   — t          | j        | j        |¦  «        S rc   )r?   rh   ri   )rÇ   Úargs     r]   Ú__call__zHyper_Function.__call__ú  s   € Ý�T”W˜dœg sÑ+Ô+Ð+r_   c                 ó¨   — t          | j        t          ¦  «        t          | j        t          ¦  «        }}d„ }| j         ||¦  «         ||¦  «        fS )a6  
        Compute the invariant vector.

        Explanation
        ===========

        The invariant vector is:
            (gamma, ((s1, n1), ..., (sk, nk)), ((t1, m1), ..., (tr, mr)))
        where gamma is the number of integer a < 0,
              s1 < ... < sk
              nl is the number of parameters a_i congruent to sl mod 1
              t1 < ... < tr
              ml is the number of parameters b_i congruent to tl mod 1

        If the index pair contains parameters, then this is not truly an
        invariant, since the parameters cannot be sorted uniquely mod1.

        Examples
        ========

        >>> from sympy.simplify.hyperexpand import Hyper_Function
        >>> from sympy import S
        >>> ap = (S.Half, S.One/3, S(-1)/2, -2)
        >>> bq = (1, 2)

        Here gamma = 1,
             k = 3, s1 = 0, s2 = 1/3, s3 = 1/2
                    n1 = 1, n2 = 1,   n2 = 2
             r = 1, t1 = 0
                    m1 = 2:

        >>> Hyper_Function(ap, bq).build_invariants()
        (1, ((0, 1), (1/3, 1), (1/2, 2)), ((0, 2),))
        c                 óÚ   — t          |                      ¦   «         ¦  «        } t          d„ | D ¦   «         ¦  «        s|                      d„ ¬¦  «         t	          d„ | D ¦   «         ¦  «        } | S )Nc              3   óL   K  — | ]}t          |d          t          ¦  «        V — Œ dS )r   N)Ú
isinstancer   rÐ   s     r]   rÑ   z>Hyper_Function.build_invariants.<locals>.tr.<locals>.<genexpr>$  s0   è è € Ð=Ð=°•z ! A¤$­Ñ,Ô,Ð=Ð=Ð=Ð=Ð=Ð=r_   c                 ó,   — t          | d         ¦  «        S ©Nr   r   ©r[   s    r]   ú<lambda>z=Hyper_Function.build_invariants.<locals>.tr.<locals>.<lambda>%  s   € Õ*:¸1¸Q¼4Ñ*@Ô*@€ r_   ©Úkeyc                 ó:   — g | ]\  }}|¯|t          |¦  «        f‘ŒS rv   ©rÉ   )rž   ÚmodÚvaluess      r]   r    z?Hyper_Function.build_invariants.<locals>.tr.<locals>.<listcomp>&  s;   € ð ð ð ±;°3¸Øð˜S¥# f¡+¤+Ð.ð ð ð r_   )r©   ÚitemsÚanyÚsortÚtuple)Úbuckets    r]   Útrz+Hyper_Function.build_invariants.<locals>.tr"  s~   € Ý˜&Ÿ,š,™.œ.Ñ)Ô)ˆFÝÐ=Ð=°fÐ=Ñ=Ô=Ñ=Ô=ð BØ—’Ð @Ð @�ÑAÔAÐAÝð ð À&ð ñ ô ñ ô ˆFàˆMr_   )rU   rh   r^   ri   r#   )rÇ   ÚabucketsÚbbucketsrì   s       r]   Úbuild_invariantszHyper_Function.build_invariantsý  sV   € õF " $¤'­5Ñ1Ô1µ4¸¼ÅÑ3GÔ3G�(ˆð	ð 	ð 	ð ”
˜B˜B˜x™LœL¨"¨"¨X©,¬,Ð7Ð7r_   c                 ó°  — | j         |j         k    rdS d„ | j        | j        |j        |j        fD ¦   «         \  }}}}d}||f||ffD �]\  }}t          t	          |                     ¦   «         ¦  «        t	          |                     ¦   «         ¦  «        z   ¦  «        D ]·}	|	|vs0|	|vs,t          ||	         ¦  «        t          ||	         ¦  «        k    r  dS t	          ||	         ¦  «        }
t	          ||	         ¦  «        }|
                     ¦   «          |                     ¦   «          t          |
|¦  «        D ]\  }}|t          ||z
  ¦  «        z  }ŒŒ¸�Œ|S )zd Estimate how many steps it takes to reach ``func`` from self.
            Return -1 if impossible. rx   c                 ó8   — g | ]}t          |t          ¦  «        ‘ŒS rv   ©rU   r^   ©rž   Úparamss     r]   r    z-Hyper_Function.difficulty.<locals>.<listcomp>1  s8   € ð 4@ð 4@ð 4@Øõ 59¸ÅÑ4GÔ4Gð 4@ð 4@ð 4@r_   r   )
r#   rh   ri   Úsetr©   ÚkeysrÉ   ré   ÚzipÚabs)rÇ   rk   Ú	oabucketsÚ	obbucketsrí   rî   Údiffrë   Úobucketrå   Úl1Úl2ÚiÚjs                 r]   Ú
difficultyzHyper_Function.difficulty,  sy  € ð Œ:˜œÒ#Ð#Ø�2ð4@ð 4@Øœ7 D¤G¨T¬W°d´gÐ>ð4@ñ 4@ô 4@Ñ0ˆ	�9˜h¨ð ˆØ!)¨9Ð 5¸À)Ð7LÐMð 
	'ñ 
	'‰OˆF�GÝ�4 §¢¡¤Ñ.Ô.µ°g·l²l±n´nÑ1EÔ1EÑEÑFÔFð 	'ð 	'�Ø˜vÐ%Ð%¨3°gÐ+=Ð+=Ý˜v cœ{Ñ+Ô+­s°7¸3´<Ñ/@Ô/@Ò@Ð@Ø˜2˜2˜2Ý˜& œ+Ñ&Ô&�Ý˜' #œ,Ñ'Ô'�Ø—’‘	”	�	Ø—’‘	”	�	Ý  B™KœKð 'ð '‘D�A�qØ�C  A¡™JœJÑ&�D�Dð'ñ	'ð ˆr_   c                 ó¾   — | j         D ]&}| j        D ]}||z
  j        r||z
  j        du r  dS ŒŒ'| j         D ]}|dk    r dS Œ| j        D ]}|j        r
|j        r dS ŒdS )a‘  
        Decide if ``self`` is a suitable origin.

        Explanation
        ===========

        A function is a suitable origin iff:
        * none of the ai equals bj + n, with n a non-negative integer
        * none of the ai is zero
        * none of the bj is a non-positive integer

        Note that this gives meaningful results only when none of the indices
        are symbolic.

        Fr   T)rh   ri   rÎ   rÏ   Úis_nonpositive)rÇ   rl   rm   s      r]   Ú_is_suitable_originz"Hyper_Function._is_suitable_originC  s¯   € ð  ”ð 	!ð 	!ˆAØ”Wð !ð !�Ø˜‘EÔ%ð !¨1¨q©5Ô*=ÀÐ*FÐ*FØ ˜5˜5˜5øð!ð ”ð 	ð 	ˆAØ�AŠvˆvØ�u�uð à”ð 	ð 	ˆAØŒ|ð  Ô 0ð Ø�u�uøØˆtr_   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÂ   Úpropertyr½   rÊ   r#   rÔ   rØ   rï   r  r  Ú__classcell__©rÄ   s   @r]   re   re   Ü  sè   ø€ € € € € Ø2Ð2ðð ð ð ð ð ð"ð "ñ „Xð"ð ð,ð ,ñ „Xð,ð ðJð Jñ „XðJðð ð ð ð ð,ð ,ð ,ð-8ð -8ð -8ð^ð ð ð.ð ð ð ð ð ð r_   re   c                   ód   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zˆ fd„Zd„ Zd„ Z	ed„ ¦   «         Z
ˆ xZS )r—   z A Meijer G-function. c                 óº  •— t          ¦   «                              | ¦  «        }t          t          t	          t
          |¦  «        ¦  «        Ž |_        t          t          t	          t
          |¦  «        ¦  «        Ž |_        t          t          t	          t
          |¦  «        ¦  «        Ž |_        t          t          t	          t
          |¦  «        ¦  «        Ž |_	        |S rc   )
rÁ   rÂ   r   r©   rª   r   r’   rh   r“   ri   )ra   r’   rh   r“   ri   rÃ   rÄ   s         €r]   rÂ   zG_Function.__new__c  s�   ø€ Ý‰gŒg�oŠo˜cÑ"Ô"ˆÝ��S¥¨™_œ_Ñ-Ô-Ð.ˆŒÝ��S¥¨™_œ_Ñ-Ô-Ð.ˆŒÝ��S¥¨™_œ_Ñ-Ô-Ð.ˆŒÝ��S¥¨™_œ_Ñ-Ô-Ð.ˆŒØˆ
r_   c                 ó6   — | j         | j        | j        | j        fS rc   )r’   rh   r“   ri   rÆ   s    r]   r½   zG_Function.argsk  s   € à”˜œ $¤'¨4¬7Ð3Ð3r_   c                 óT   •— t          ¦   «                              ¦   «         | j        z   S rc   )rÁ   rÔ   r½   rÕ   s    €r]   rÔ   zG_Function._hashable_contento  s    ø€ Ý‰wŒw×(Ò(Ñ*Ô*¨T¬YÑ6Ð6r_   c                 óP   — t          | j        | j        | j        | j        |¦  «        S rc   )rK   r’   rh   r“   ri   )rÇ   ro   s     r]   rØ   zG_Function.__call__r  s    € Ý�t”w ¤¨¬°$´'¸1Ñ=Ô=Ð=r_   c                 óÚ  ‡— d„ t          d¦  «        D ¦   «         x}\  }}}}t          || j        | j        | j        | j        f¦  «        D ]2\  }}|D ]*}|t          |¦  «                                      |¦  «         Œ+Œ3t          |d¦  «        D ]F\  }}	|                     ¦   «         D ],\  }
}|d         Š| 	                    ˆfd„|	¬¦  «         |||
<   Œ-ŒGt          d„ |D ¦   «         ¦  «        S )a«  
        Compute buckets for the fours sets of parameters.

        Explanation
        ===========

        We guarantee that any two equal Mod objects returned are actually the
        same, and that the buckets are sorted by real part (an and bq
        descendending, bm and ap ascending).

        Examples
        ========

        >>> from sympy.simplify.hyperexpand import G_Function
        >>> from sympy.abc import y
        >>> from sympy import S

        >>> a, b = [1, 3, 2, S(3)/2], [1 + y, y, 2, y + 3]
        >>> G_Function(a, b, [2], [y]).compute_buckets()
        ({0: [3, 2, 1], 1/2: [3/2]},
        {0: [2], y: [y, y + 1, y + 3]}, {0: [2]}, {y: [y]})

        c                 ó6   — g | ]}t          t          ¦  «        ‘ŒS rv   )r   r©   )rž   rÿ   s     r]   r    z.G_Function.compute_buckets.<locals>.<listcomp>�  s    € Ð%JÐ%JÐ%J¸A¥kµ$Ñ&7Ô&7Ð%JÐ%JÐ%Jr_   r{   )TFFTr   c                 ó   •— | ‰z
  S rc   rv   )r[   Úx0s    €r]   rà   z,G_Function.compute_buckets.<locals>.<lambda>•  s   ø€ ¨¨R©€ r_   )râ   Úreversec                 ó,   — g | ]}t          |¦  «        ‘ŒS rv   )Údict©rž   r¤   s     r]   r    z.G_Function.compute_buckets.<locals>.<listcomp>˜  s   € Ð-Ð-Ð- !•d˜1‘g”gÐ-Ð-Ð-r_   )Úranger÷   r’   rh   r“   ri   r^   rf   rç   ré   rê   )rÇ   ÚdictsÚpanÚpapÚpbmÚpbqÚdicÚlisr[   ÚflipÚmrç   r  s               @r]   Úcompute_bucketszG_Function.compute_bucketsu  s#  ø€ ð0 &KÐ%JÅÀqÁÄÐ%JÑ%JÔ%JÐJˆÑ"��S˜#˜sÝ˜E D¤G¨T¬W°d´g¸t¼wÐ#GÑHÔHð 	(ð 	(‰HˆC�Øð (ð (�Ø•E˜!‘H”H”×$Ò$ QÑ'Ô'Ð'Ð'ð(õ ˜UÐ$>Ñ?Ô?ð 	ð 	‰IˆC�ØŸIšI™KœKð ð ‘��5Ø˜1”X�Ø—
’
Ð/Ð/Ð/Ð/¸�
Ñ>Ô>Ð>Ø��A‘�ðõ
 Ð-Ð- uÐ-Ñ-Ô-Ñ.Ô.Ð.r_   c                 óž   — t          | j        ¦  «        t          | j        ¦  «        t          | j        ¦  «        t          | j        ¦  «        fS rc   )rÉ   r’   rh   r“   ri   rÆ   s    r]   Ú	signaturezG_Function.signatureš  s1   € å�D”G‘”�c $¤'™lœl­C°´©L¬L½#¸d¼g¹,¼,ÐGÐGr_   )r  r  r  r  rÂ   r	  r½   rÔ   rØ   r#  r%  r
  r  s   @r]   r—   r—   `  s³   ø€ € € € € Ø Ð ðð ð ð ð ð ð4ð 4ñ „Xð4ð7ð 7ð 7ð 7ð 7ð>ð >ð >ð#/ð #/ð #/ðJ ðHð Hñ „XðHð Hð Hð Hð Hr_   r—   r[   c                   ó<   — e Zd ZdZd„ Zdd„Zed„ ¦   «         Zd„ ZdS )rg   a-  
    This class represents hypergeometric formulae.

    Explanation
    ===========

    Its data members are:
    - z, the argument
    - closed_form, the closed form expression
    - symbols, the free symbols (parameters) in the formula
    - func, the function
    - B, C, M (see _compute_basis)

    Examples
    ========

    >>> from sympy.abc import a, b, z
    >>> from sympy.simplify.hyperexpand import Formula, Hyper_Function
    >>> func = Hyper_Function((a/2, a/3 + b, (1+a)/2), (a, b, (a+b)/7))
    >>> f = Formula(func, z, None, [a, b])

    c                 ó0  — d„ | j         j        D ¦   «         }d„ | j         j        D ¦   «         }t          t	          |Ž z  | j        t	          |Ž z  z
  }t          |t          ¦  «        } |j        ¦   «         dz
  }|g}t          |¦  «        D ]=}| 	                    | j        |d          
                    | j        ¦  «        z  ¦  «         Œ>t          |¦  «        | _        t          dgdg|z  z   g¦  «        | _        t          |¦  «        }	|	                     dt!          |d¦  «        ¦  «        }	 |j        ¦   «         dd…         }
|
                     ¦   «          |	                     |t          |
g¦  «          |j        ¦   «         d         z  ¦  «        | _        dS )zª
        Compute a set of functions B=(f1, ..., fn), a nxn matrix M
        and a 1xn matrix C such that:
           closed_form = C B
           z d/dz B = M B.
        c                 ó"   — g | ]}t           |z   ‘ŒS rv   ©Ú_x©rž   rl   s     r]   r    z*Formula._compute_basis.<locals>.<listcomp>Á  s   € Ð1Ð1Ð1˜q•B˜‘FÐ1Ð1Ð1r_   c                 ó(   — g | ]}t           |z   d z
  ‘ŒS ©rX   r)  ©rž   rm   s     r]   r    z*Formula._compute_basis.<locals>.<listcomp>Â  s    € Ð5Ð5Ð5 1•B˜‘F˜Q‘JÐ5Ð5Ð5r_   rX   rx   r   N)rk   rh   ri   r*  r   ro   rQ   Údegreer  rf   rû   rL   rr   rs   rM   Ú
col_insertrN   Ú
all_coeffsr  Ú
row_insertrt   )rÇ   Úclosed_formÚafactorsÚbfactorsr´   rP   Únrm   Ú_r"  rš   s              r]   Ú_compute_basiszFormula._compute_basisº  se  € ð 2Ð1 D¤I¤LÐ1Ñ1Ô1ˆØ5Ð5¨¬	¬Ð5Ñ5Ô5ˆÝ•#�x�.Ñ  4¤6­#¨x¨.Ñ#8Ñ8ˆÝ�D�"‰~Œ~ˆàˆDŒK‰MŒM˜AÑˆØˆMˆÝ�q‘”ð 	0ð 	0ˆAØ�HŠH�T”V˜A˜bœEŸJšJ t¤vÑ.Ô.Ñ.Ñ/Ô/Ð/Ð/å˜‘”ˆŒÝ˜!˜ ˜s 1™u™˜Ñ&Ô&ˆŒå�‰FŒFˆØ�LŠL˜�E ! Q™KœKÑ(Ô(ˆØˆDŒOÑÔ˜a˜b˜bÔ!ˆØ	�	Š	‰ŒˆØ—’˜a¥&¨!¨¡+¤+ ¨o¨d¬oÑ.?Ô.?ÀÔ.BÑ!BÑCÔCˆŒˆˆr_   Nc                 ó   ‡— t          |¦  «        }t          |¦  «        }ˆfd„t          |¦  «        D ¦   «         }|| _        || _        || _        || _        || _        ‰| _        |�|                      |¦  «         d S d S )Nc                 ó>   •— g | ]}‰                      |¦  «        ¯|‘ŒS rv   ©Úhas)rž   r[   rk   s     €r]   r    z$Formula.__init__.<locals>.<listcomp>×  s(   ø€ Ð>Ð>Ð>˜°$·(²(¸1±+´+Ð>�1Ð>Ð>Ð>r_   )r   ro   r
   rr   rs   rt   rk   r8  )rÇ   rk   ro   rj   r
   rr   rs   rt   s    `      r]   Ú__init__zFormula.__init__Ô  sŒ   ø€ Ý�A‰JŒJˆÝ�c‰lŒlˆØ>Ð>Ð>Ð>�g gÑ.Ô.Ð>Ñ>Ô>ˆàˆŒØˆŒØˆŒØˆŒØˆŒØˆŒ	ð
 ˆ?Ø×Ò Ñ$Ô$Ð$Ð$Ð$ð ˆ?r_   c                 ój   — t          d„ t          | j        | j        ¦  «        t          j        ¦  «        S )Nc                 ó*   — | |d         |d         z  z   S ©Nr   rX   rv   ©r«   r"  s     r]   rà   z%Formula.closed_form.<locals>.<lambda>è  ó   €  ! A a¤D¨¨1¬¡I¡+€ r_   ©r   r÷   rs   rr   r   r¡   rÆ   s    r]   r3  zFormula.closed_formæ  ó(   € åÐ-Ð-­s°4´6¸4¼6Ñ/BÔ/BÅAÄFÑKÔKÐKr_   c                 ó  ‡ ‡‡‡— ddl m} |j        }|j        }t	          |¦  «        t	          ‰ j        j        ¦  «        k    s*t	          |¦  «        t	          ‰ j        j        ¦  «        k    rt          d¦  «        ‚g }‰ j        D ]eŠ‰‰ j        j        j        v r| 	                    |¦  «         Œ+‰‰ j        j        j        v r| 	                    |¦  «         ŒTt          d‰›�¦  «        ‚ˆ fd„t          |Ž D ¦   «         }d„ ||fD ¦   «         \  }}d„ ||fD ¦   «         \  }	}
d„ ‰ j        D ¦   «         }g }t          ¦   «         }|D �]:Šˆfd	„‰ j        j        ‰ j        j        fD ¦   «         \  }}||f||ffD �]O\  }}t          t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        z   ¦  «        D ]ø}||vs0||vs,t	          ||         ¦  «        t	          ||         ¦  «        k    r nÁt!          ‰ j        |¦  «        D ]ª\  Š}‰‰         j        rŒˆfd
„||         D ¦   «         }‰                     ¦   «         }|‰xx         |z  cc<   |D ]\}||         D ]Q} ||                     |¦  «        |z
  |¦  «        \  }|j        rt          d¦  «        ‚| 	                    |¦  «         ŒRŒ]Œ«Œù�ŒQg }t!          ‰ j        |¦  «        D ]w\  Š}‰‰         Št)          t+          |¦  «        ¦  «        }t-          t/          |¦  «        ¦  «        }| 	                    ˆfd„t1          ||dz   ¦  «        D ¦   «         ¦  «         Œx|                     ˆ fd„t          |Ž D ¦   «         ¦  «         �Œ<|S )zÛ
        Find substitutions of the free symbols that match ``func``.

        Return the substitution dictionaries as a list. Note that the returned
        instantiations need not actually match, or be valid!

        r   )Úsolvez-Cannot instantiate other number of parametersz?At least one of the parameters of the formula must be equal to c           
      ón   •— g | ]1}t          t          t          ‰j        |¦  «        ¦  «        ¦  «        ‘Œ2S rv   ©r  r©   r÷   r
   )rž   ræ   rÇ   s     €r]   r    z/Formula.find_instantiations.<locals>.<listcomp>   sE   ø€ ð 7ð 7ð 7Øõ �$�s 4¤<°Ñ8Ô8Ñ9Ô9Ñ:Ô:ð 7ð 7ð 7r_   c                 ó8   — g | ]}t          |t          ¦  «        ‘ŒS rv   rò   ró   s     r]   r    z/Formula.find_instantiations.<locals>.<listcomp>  s"   € ÐIÐIÐI°f�d 6­5Ñ1Ô1ÐIÐIÐIr_   c                 óJ   — g | ] }d „ |                      ¦   «         D ¦   «         ‘Œ!S )c                 ó4   — i | ]\  }}|t          |¦  «        “ŒS rv   rä   )rž   rl   Úvalss      r]   ú
<dictcomp>z:Formula.find_instantiations.<locals>.<listcomp>.<dictcomp>  s$   € ÐDÐDÐD©'¨!¨T˜�C ™IœIÐDÐDÐDr_   )rç   )rž   rë   s     r]   r    z/Formula.find_instantiations.<locals>.<listcomp>  s?   € ð 4ð 4ð 4Øð EÐD°V·\²\±^´^ÐDÑDÔDð 4ð 4ð 4r_   c                 ó   — g | ]}d g‘ŒS ©r   rv   )rž   r7  s     r]   r    z/Formula.find_instantiations.<locals>.<listcomp>  s   € Ð5Ð5Ð5 1˜A˜3Ð5Ð5Ð5r_   c                 ó6   •— g | ]}t          |ˆfd „¦  «        ‘ŒS )c                 óH   •— t          |                      ‰¦  «        ¦  «        S rc   )r^   Úxreplace)r[   Úrepls    €r]   rà   z8Formula.find_instantiations.<locals>.<listcomp>.<lambda>	  s   ø€ µU¸1¿:º:ÀdÑ;KÔ;KÑ5LÔ5L€ r_   rT   )rž   rô   rS  s     €r]   r    z/Formula.find_instantiations.<locals>.<listcomp>	  s=   ø€ ð <ð <ð <Øõ # 6Ð+LÐ+LÐ+LÐ+LÑMÔMð <ð <ð <r_   c                 ó>   •— g | ]}|                      ‰¦  «        ¯|‘ŒS rv   r;  )rž   r´   rl   s     €r]   r    z/Formula.find_instantiations.<locals>.<listcomp>  s(   ø€ Ð NÐ NÐ N¨$À$Ç(Â(È1Á+Ä+Ð N Ð NÐ NÐ Nr_   zValue should not be truec                 ó   •— g | ]}‰|z   ‘ŒS rv   rv   )rž   r6  Úa0s     €r]   r    z/Formula.find_instantiations.<locals>.<listcomp>"  s   ø€ Ð"IÐ"IÐ"I¨a 2¨¡6Ð"IÐ"IÐ"Ir_   rX   c           	   3   óv   •K  — | ]3}t          t          t          ‰j        |¦  «        ¦  «        ¦  «        V — Œ4d S rc   rH  )rž   rš   rÇ   s     €r]   rÑ   z.Formula.find_instantiations.<locals>.<genexpr>#  s?   øè è € ÐYÐYÀ1�d¥4­¨D¬L¸!Ñ(<Ô(<Ñ#=Ô#=Ñ>Ô>ÐYÐYÐYÐYÐYÐYr_   )Úsympy.solversrF  rh   ri   rÉ   rk   Ú	TypeErrorr
   r½   rf   Ú
ValueErrorr   r	   rõ   r©   rö   r÷   Úfree_symbolsÚcopyrR  r4   Úminr5   Úmaxr  Úextend)rÇ   rk   rF  rh   ri   Úsymbol_valuesÚ	base_replrí   rî   Úa_invÚb_invÚcritical_valuesÚresultÚ_nÚsymb_aÚsymb_brë   rü   rå   rL  ÚexprsÚrepl0r´   ÚtargetÚn0ræ   Úmin_Úmax_rl   rV  rS  s   `                           @@@r]   Úfind_instantiationszFormula.find_instantiationsê  s%  øøøø€ ð 	(Ð'Ð'Ð'Ð'Ð'ØŒWˆØŒWˆÝˆr‰7Œ7•c˜$œ)œ,Ñ'Ô'Ò'Ð'­3¨r©7¬7µc¸$¼)¼,Ñ6GÔ6GÒ+GÐ+GÝÐKÑLÔLÐLØˆØ”ð 	>ð 	>ˆAØ�D”I”LÔ%Ð%Ð%Ø×$Ò$ RÑ(Ô(Ð(Ð(Ø�d”i”lÔ'Ð'Ð'Ø×$Ò$ RÑ(Ô(Ð(Ð(å �jØ9:¸ð"=ñ >ô >ð >ð7ð 7ð 7ð 7Ý% }Ð5ð7ñ 7ô 7ˆ	àIÐIÀÀRÀÐIÑIÔIÑˆ�(ð4ð 4Ø'¨Ð2ð4ñ 4ô 4‰ˆˆuà5Ð5¨¬Ð5Ñ5Ô5ˆØˆÝ‰WŒWˆØð 	Zñ 	ZˆDð<ð <ð <ð <Ø#œyœ|¨T¬Y¬\Ð:ð<ñ <ô <‰NˆF�Fà%-¨vÐ$6¸À6Ð8JÐ#Kð Zñ Z‘�˜Ý�t F§K¢K¡M¤MÑ2Ô2µT¸'¿,º,¹.¼.Ñ5IÔ5IÑIÑJÔJð 0ð 0�CØ 6Ð)Ð)¨s¸'Ð/AÐ/AÝ" 6¨#¤;Ñ/Ô/µ3°w¸s´|Ñ3DÔ3DÒDÐDØ˜Ý#& t¤|°_Ñ#EÔ#Eð 0ð 0™˜˜4Ø œ7Ô/ð %Ø$Ø NÐ NÐ NÐ N°'¸#´,Ð NÑ NÔ N˜Ø $§	¢	¡¤˜Ø˜a˜˜œ B™˜˜™Ø$)ð 0ð 0˜DØ*0°¬+ð 0ð 0 Ø&+ e¨D¯MªM¸%Ñ,@Ô,@À6Ñ,IÈ2Ñ&NÔ&N¡ Ø#%¤?ð !QÝ*4Ð5OÑ*PÔ*PÐ$PØ $§¢¨B¡¤  ð	0ð0ð0ùð �Ý" 4¤<°ÑAÔAð Kð K‘G�A�tØ˜aœ�BÝ ¥ T¡¤Ñ+Ô+�DÝ"¥3 t¡9¤9Ñ-Ô-�DØ—M’MÐ"IÐ"IÐ"IÐ"Iµ5¸¸tÀa¹xÑ3HÔ3HÐ"IÑ"IÔ"IÑJÔJÐJÐJØ—’ÐYÐYÐYÐYÍÐQWÐHXÐYÑYÔYÑYÔYÐYÑYØˆr_   )NNN)	r  r  r  r  r8  r=  r	  r3  ro  rv   r_   r]   rg   rg   ¢  sq   € € € € € ðð ð.Dð Dð Dð4%ð %ð %ð %ð$ ðLð Lñ „XðLð:ð :ð :ð :ð :r_   rg   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚFormulaCollectionz- A collection of formulae to use as origins. c                 ó€  — i | _         i | _        g | _        t          | j        ¦  «         | j        D ]Œ}|j        j        }t          |j        ¦  «        dk    r/| j                              |g ¦  «         	                    |¦  «         ŒU|j         
                    ¦   «         }|| j                             |i ¦  «        |<   Œ�dS )z7 Doing this globally at module init time is a pain ... r   N)Úsymbolic_formulaeÚconcrete_formulaern   rŒ   rk   rÊ   rÉ   r
   Ú
setdefaultrf   rï   )rÇ   ÚfrÊ   Úinvs       r]   r=  zFormulaCollection.__init__,  sÃ   € à!#ˆÔØ!#ˆÔØˆŒå�T”]Ñ#Ô#Ð#ð
 ”ð 	Fð 	FˆAØ”F”LˆEÝ�1”9‰~Œ~ Ò!Ð!ØÔ&×1Ò1°%¸Ñ<Ô<×CÒCÀAÑFÔFÐFÐFà”f×-Ò-Ñ/Ô/�ØDE�Ô&×1Ò1°%¸Ñ<Ô<¸SÑAÐAð	Fð 	Fr_   c                 ó,  — |                      ¦   «         }|j        }|| j        v r"|| j        |         v r| j        |         |         S || j        vrdS g }| j        |         D ]€}|                     |¦  «        }|D ]f}|j                             |¦  «        }|                     ¦   «         sŒ1|                     |¦  «        }	|	dk    rŒM| 	                    |	|||f¦  «         ŒgŒ�| 
                    d„ ¬¦  «         |D ]˜\  }
}}}t          ||j        dg |j                             |¦  «        |j                             |¦  «        |j                             |¦  «        ¦  «        }t#          d„ |j        |j        |j        fD ¦   «         ¦  «        s|c S Œ™dS )a{  
        Given the suitable target ``func``, try to find an origin in our
        knowledge base.

        Examples
        ========

        >>> from sympy.simplify.hyperexpand import (FormulaCollection,
        ...     Hyper_Function)
        >>> f = FormulaCollection()
        >>> f.lookup_origin(Hyper_Function((), ())).closed_form
        exp(_z)
        >>> f.lookup_origin(Hyper_Function([1], ())).closed_form
        HyperRep_power1(-1, _z)

        >>> from sympy import S
        >>> i = Hyper_Function([S('1/4'), S('3/4 + 4')], [S.Half])
        >>> f.lookup_origin(i).closed_form
        HyperRep_sqrts1(-1/4, _z)
        Nrx   c                 ó   — | d         S rÞ   rv   rß   s    r]   rà   z1FormulaCollection.lookup_origin.<locals>.<lambda>k  s
   €  A a¤D€ r_   rá   c              3   óz   K  — | ]6}|                      t          j        t          t           t          ¦  «        V — Œ7d S rc   )r<  r   ÚNaNr   r   )rž   Úes     r]   rÑ   z2FormulaCollection.lookup_origin.<locals>.<genexpr>o  s8   è è € ÐNÐN°a�q—u’u�QœU¥B­¨­SÑ1Ô1ÐNÐNÐNÐNÐNÐNr_   )rï   rÊ   rt  rs  ro  rk   rR  r  r  rf   ré   rg   ro   rr   Úsubsrs   rt   rè   )rÇ   rk   rw  rÊ   Úpossiblerv  ÚreplsrS  Úfunc2rû   r7  Úf2s               r]   Úlookup_originzFormulaCollection.lookup_origin?  sÄ  € ð* ×#Ò#Ñ%Ô%ˆØ”
ˆØ�DÔ*Ð*Ð*Ø�tÔ-¨eÔ4Ð4Ð4ØÔ)¨%Ô0°Ô5Ð5ð ˜Ô.Ð.Ð.Ø�4àˆØÔ'¨Ô.ð 		8ð 		8ˆAØ×)Ò)¨$Ñ/Ô/ˆEØð 8ð 8�ØœŸš¨Ñ-Ô-�Ø×0Ò0Ñ2Ô2ð ØØ×'Ò'¨Ñ-Ô-�Ø˜2’:�:ØØ—’  t¨Q°Ð 6Ñ7Ô7Ð7Ð7ð8ð 	�Š˜.˜.ˆÑ)Ô)Ð)Ø!)ð 	ð 	ÑˆAˆt�Q˜Ý˜ ¤ T¨2¨q¬s¯xªx¸©~¬~Ø”C—H’H˜T‘N”N A¤C§H¢H¨T¡N¤Nñ4ô 4ˆBåÐNÐN¸B¼DÀ"Ä$ÈÌÐ;MÐNÑNÔNÑNÔNð Ø�	�	�	ðð ˆtr_   N©r  r  r  r  r=  r‚  rv   r_   r]   rq  rq  )  s;   € € € € € Ø7Ð7ðFð Fð Fð&3ð 3ð 3ð 3ð 3r_   rq  c                   ó4   — e Zd ZdZd„ Zed„ ¦   «         Zd„ ZdS )r‘   zç
    This class represents a Meijer G-function formula.

    Its data members are:
    - z, the argument
    - symbols, the free symbols (parameters) in the formula
    - func, the function
    - B, C, M (c/f ordinary Formula)
    c                 ó²   — d„ ||||fD ¦   «         \  }}}}t          ||||¦  «        | _        || _        || _        |
| _        || _        || _        |	| _        d S )Nc           
      ó`   — g | ]+}t          t          t          t          |¦  «        ¦  «        Ž ‘Œ,S rv   )r   r©   rª   r   r  s     r]   r    z*MeijerFormula.__init__.<locals>.<listcomp>�  s-   € ÐQÐQÐQ¸1�%¥¥c­&°!¡n¤nÑ!5Ô!5Ð6ÐQÐQÐQr_   )r—   rk   ro   r
   Ú_matcherrr   rs   rt   )rÇ   r’   rh   r“   ri   ro   r
   rr   rs   rt   r”   s              r]   r=  zMeijerFormula.__init__€  si   € ØQÐQÀÀRÈÈRÐ@PÐQÑQÔQ‰ˆˆB��BÝ˜r 2 r¨2Ñ.Ô.ˆŒ	ØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒˆˆr_   c                 ój   — t          d„ t          | j        | j        ¦  «        t          j        ¦  «        S )Nc                 ó*   — | |d         |d         z  z   S r@  rv   rA  s     r]   rà   z+MeijerFormula.closed_form.<locals>.<lambda>Œ  rB  r_   rC  rÆ   s    r]   r3  zMeijerFormula.closed_formŠ  rD  r_   c                 ó^  — |j         | j        j         k    rdS |                      |¦  «        }|�~|\  }}t          |j        |j        |j        |j        | j        g | j	         
                    |¦  «        | j         
                    |¦  «        | j         
                    |¦  «        d¦
  «
        S dS )z
        Try to instantiate the current formula to (almost) match func.
        This uses the _matcher passed on init.
        N)r%  rk   r‡  r‘   r’   rh   r“   ri   ro   rr   r}  rs   rt   )rÇ   rk   rj   r}  Únewfuncs        r]   Útry_instantiatezMeijerFormula.try_instantiateŽ  sž   € ð
 Œ>˜TœYÔ0Ò0Ð0Ø�4Ø�mŠm˜DÑ!Ô!ˆØˆ?Ø‰MˆD�'Ý  ¤¨W¬Z¸¼ÀWÄZØ!%¤¨Ø!%¤§¢¨TÑ!2Ô!2°D´F·K²KÀÑ4EÔ4EØ!%¤§¢¨TÑ!2Ô!2°Dñ:ô :ð :ð ˆ?r_   N)r  r  r  r  r=  r	  r3  rŒ  rv   r_   r]   r‘   r‘   u  sZ   € € € € € ðð ðð ð ð ðLð Lñ „XðLð:ð :ð :ð :ð :r_   r‘   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerFormulaCollectionz=
    This class holds a collection of meijer g formulae.
    c                 óê   — g }t          |¦  «         t          t          ¦  «        | _        |D ],}| j        |j        j                                      |¦  «         Œ-t          | j        ¦  «        | _        d S rc   )r®   r   r©   rn   rk   r%  rf   r  )rÇ   rn   Úformulas      r]   r=  z MeijerFormulaCollection.__init__£  sm   € ØˆÝ˜XÑ&Ô&Ð&Ý#¥DÑ)Ô)ˆŒØð 	Bð 	BˆGØŒM˜'œ,Ô0Ô1×8Ò8¸ÑAÔAÐAÐAÝ˜Tœ]Ñ+Ô+ˆŒˆˆr_   c                 ó†   — |j         | j        vrdS | j        |j                  D ]}|                     |¦  «        }|�|c S ŒdS )z* Try to find a formula that matches func. N)r%  rn   rŒ  )rÇ   rk   r�  rj   s       r]   r‚  z%MeijerFormulaCollection.lookup_origin«  s^   € àŒ> ¤Ð.Ð.Ø�4Ø”} T¤^Ô4ð 	ð 	ˆGØ×)Ò)¨$Ñ/Ô/ˆCØˆØ�
�
�
ð ð	ð 	r_   Nrƒ  rv   r_   r]   rŽ  rŽ  ž  s<   € € € € € ðð ð,ð ,ð ,ðð ð ð ð r_   rŽ  c                   ó   — e Zd ZdZd„ ZdS )ÚOperatora˜  
    Base class for operators to be applied to our functions.

    Explanation
    ===========

    These operators are differential operators. They are by convention
    expressed in the variable D = z*d/dz (although this base class does
    not actually care).
    Note that when the operator is applied to an object, we typically do
    *not* blindly differentiate but instead use a different representation
    of the z*d/dz operator (see make_derivative_operator).

    To subclass from this, define a __init__ method that initializes a
    self._poly variable. This variable stores a polynomial. By convention
    the generator is z*d/dz, and acts to the right of all coefficients.

    Thus this poly
        x**2 + 2*z*x + 1
    represents the differential operator
        (z*d/dz)**2 + 2*z**2*d/dz.

    This class is used only in the implementation of the hypergeometric
    function expansion algorithm.
    c                 óF  — | j                              ¦   «         }|                     ¦   «          |g}|dd…         D ]&}|                      ||d         ¦  «        ¦  «         Œ'|d         |d         z  }t	          |dd…         |dd…         ¦  «        D ]\  }}|||z  z  }Œ|S )a°  
        Apply ``self`` to the object ``obj``, where the generator is ``op``.

        Examples
        ========

        >>> from sympy.simplify.hyperexpand import Operator
        >>> from sympy.polys.polytools import Poly
        >>> from sympy.abc import x, y, z
        >>> op = Operator()
        >>> op._poly = Poly(x**2 + z*x + y, x)
        >>> op.apply(z**7, lambda f: f.diff(z))
        y*z**7 + 7*z**7 + 42*z**5
        rX   Nrx   r   )Ú_polyr1  r  rf   r÷   )rÇ   rÃ   ÚopÚcoeffsÚdiffsr\   ÚrÚds           r]   ÚapplyzOperator.applyÐ  s¹   € ð ”×&Ò&Ñ(Ô(ˆØ�ŠÑÔÐØ�ˆØ˜˜˜”ð 	(ð 	(ˆAØ�LŠL˜˜˜E "œI™œÑ'Ô'Ð'Ð'Ø�1ŒI�e˜A”hÑˆÝ˜˜q˜r˜rœ
 E¨!¨"¨"¤IÑ.Ô.ð 	ð 	‰DˆAˆqØ��1‘‰HˆAˆAØˆr_   N)r  r  r  r  r›  rv   r_   r]   r“  r“  µ  s-   € € € € € ðð ð4ð ð ð ð r_   r“  c                   ó   — e Zd ZdZd„ ZdS )ÚMultOperatorz! Simply multiply by a "constant" c                 ó:   — t          |t          ¦  «        | _        d S rc   )rQ   r*  r•  )rÇ   Úps     r]   r=  zMultOperator.__init__í  s   € Ý˜!�R‘[”[ˆŒ
ˆ
ˆ
r_   N)r  r  r  r  r=  rv   r_   r]   r�  r�  ê  s)   € € € € € Ø+Ð+ð!ð !ð !ð !ð !r_   r�  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚShiftAz Increment an upper index. c                 ó˜   — t          |¦  «        }|dk    rt          d¦  «        ‚t          t          |z  dz   t          ¦  «        | _        d S )Nr   z"Cannot increment zero upper index.rX   ©r   rZ  rQ   r*  r•  )rÇ   Úais     r]   r=  zShiftA.__init__ô  sB   € Ý�R‰[Œ[ˆØ�Š7ˆ7ÝÐAÑBÔBÐBÝ�"˜R™% !™)¥RÑ(Ô(ˆŒ
ˆ
ˆ
r_   c                 óL   — dd| j                              ¦   «         d         z  z  S )Nz<Increment upper %s.>rX   r   ©r•  r1  rÆ   s    r]   Ú__str__zShiftA.__str__ú  s%   € Ø&¨!¨D¬J×,AÒ,AÑ,CÔ,CÀAÔ,FÑ*FÑGÐGr_   N©r  r  r  r  r=  r§  rv   r_   r]   r¡  r¡  ñ  s=   € € € € € Ø%Ð%ð)ð )ð )ðHð Hð Hð Hð Hr_   r¡  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚShiftBz Decrement a lower index. c                 óž   — t          |¦  «        }|dk    rt          d¦  «        ‚t          t          |dz
  z  dz   t          ¦  «        | _        d S )NrX   z"Cannot decrement unit lower index.r£  ©rÇ   Úbis     r]   r=  zShiftB.__init__  sF   € Ý�R‰[Œ[ˆØ�Š7ˆ7ÝÐAÑBÔBÐBÝ�"˜b 1™f™+¨™/­2Ñ.Ô.ˆŒ
ˆ
ˆ
r_   c                 óR   — dd| j                              ¦   «         d         z  dz   z  S )Nz<Decrement lower %s.>rX   r   r¦  rÆ   s    r]   r§  zShiftB.__str__  s*   € Ø&¨!¨D¬J×,AÒ,AÑ,CÔ,CÀAÔ,FÑ*FÈÑ*JÑKÐKr_   Nr¨  rv   r_   r]   rª  rª  þ  s=   € € € € € Ø$Ð$ð/ð /ð /ðLð Lð Lð Lð Lr_   rª  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚUnShiftAz Decrement an upper index. c                 ó˜  — t          t          t          |||g¦  «        ¦  «        \  }}}|| _        || _        || _        t          |¦  «        }t          |¦  «        }|                     |¦  «        dz
  }|dk    rt          d¦  «        ‚t          ||z  t          ¦  «        }|D ]"}|t          t          |z   t          ¦  «        z  }Œ#t          d¦  «        }t          ||z  |z
  |¦  «        x}	}
|D ] }|	|
|dz
                       |¦  «        z   z  }	Œ!|	                     d¦  «         }|dk    rt          d¦  «        ‚t          t          |	                     ¦   «         dd…         |¦  «                             ¦   «                              |t          |z  dz   ¦  «        t          ¦  «        }	t          |	|z
  |z  t          ¦  «        | _        dS )ú Note: i counts from zero! rX   r   z"Cannot decrement unit upper index.ÚAz0Cannot decrement upper index: cancels with lowerNrx   ©r©   rª   r   Ú_apÚ_bqÚ_iÚpoprZ  rQ   r*  r	   Úas_polyÚnthr1  r³   r}  r•  )rÇ   rh   ri   rÿ   ro   r¤  r"  rl   r³  r6  ÚDrm   Úb0s                r]   r=  zUnShiftA.__init__  sª  € å��W r¨2¨q kÑ2Ô2Ñ3Ô3‰	ˆˆB�àˆŒØˆŒØˆŒå�"‰XŒXˆÝ�"‰XŒXˆØ�VŠV�A‰YŒY˜‰]ˆà�Š7ˆ7ÝÐAÑBÔBÐBå��2‘•r‰NŒNˆØð 	"ð 	"ˆAØ••b˜1‘f�bÑ!Ô!Ñ!ˆAˆAå�#‰JŒJˆÝ�R˜‘T˜B‘Y Ñ"Ô"Ð"ˆˆAØð 	(ð 	(ˆAØ��a˜!‘e—_’_ QÑ'Ô'Ñ'Ñ'ˆAˆAà�eŠe�A‰hŒhˆYˆØ�Š7ˆ7Ýð 2ñ 3ô 3ð 3õ •�a—l’l‘n”n S b SÔ)¨1Ñ-Ô-×5Ò5Ñ7Ô7×<Ò<¸QÅÀ2ÁÈÁ	ÑJÔJÍBÑOÔOˆå˜1˜q™5 "™*¥bÑ)Ô)ˆŒ
ˆ
ˆ
r_   c                 ó8   — d| j         ›d| j        ›d| j        ›d�S )Nz<Decrement upper index #ú of ú, ú.>©r·  rµ  r¶  rÆ   s    r]   r§  zUnShiftA.__str__/  ó*   € € Ø;?¼7¸7¸7Ø8<¼¸¸À$Ä(À(À(ðLð 	Lr_   Nr¨  rv   r_   r]   r°  r°    s>   € € € € € Ø%Ð%ð*ð *ð *ðBLð Lð Lð Lð Lr_   r°  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚUnShiftBz Increment a lower index. c                 óÔ  — t          t          t          |||g¦  «        ¦  «        \  }}}|| _        || _        || _        t          |¦  «        }t          |¦  «        }|                     |¦  «        dz   }|dk    rt          d¦  «        ‚t          t          |dz
  z  t          ¦  «        }|D ]%}|t          t          |z   dz
  t          ¦  «        z  }Œ&t          d¦  «        }t          |dz
  |z  |z
  dz   |¦  «        }	t          ||¦  «        }
|D ]}|
|	|                     |¦  «        z   z  }
Œ|
                     d¦  «        }|dk    rt          d¦  «        ‚t          t          |
                     ¦   «         dd…         |¦  «                             ¦   «                              |t          |dz
  z  dz   ¦  «        t          ¦  «        }
t          ||
z
  |z  t          ¦  «        | _        dS )r²  rX   r   z Cannot increment -1 lower index.rr   z*Cannot increment index: cancels with upperNrx   r´  )rÇ   rh   ri   rÿ   ro   r­  r"  rm   rr   r»  r6  rl   r¼  s                r]   r=  zUnShiftB.__init__7  sÃ  € å��W r¨2¨q kÑ2Ô2Ñ3Ô3‰	ˆˆB�àˆŒØˆŒØˆŒå�"‰XŒXˆÝ�"‰XŒXˆØ�VŠV�A‰YŒY˜‰]ˆà�Š7ˆ7ÝÐ?Ñ@Ô@Ð@å•�R˜!‘V‘�bÑ!Ô!ˆØð 	&ð 	&ˆAØ••b˜1‘f˜q‘j¥"Ñ%Ô%Ñ%ˆAˆAå�#‰JŒJˆÝ�"�q‘&˜!‘˜b‘ 1Ñ$ aÑ(Ô(ˆÝ��A‰JŒJˆØð 	$ð 	$ˆAØ�!�a—i’i ‘l”lÑ"Ñ#ˆAˆAà�UŠU�1‰XŒXˆØ�Š7ˆ7ÝÐIÑJÔJÐJå•�a—l’l‘n”n S b SÔ)¨1Ñ-Ô-×5Ò5Ñ7Ô7×<Ò<Ø�r�2˜‘6‰{˜Q‰ñ ô  Ý!#ñ%ô %ˆõ ˜1˜q™5 "™*¥bÑ)Ô)ˆŒ
ˆ
ˆ
r_   c                 ó8   — d| j         ›d| j        ›d| j        ›d�S )Nz<Increment lower index #r¾  r¿  rÀ  rÁ  rÆ   s    r]   r§  zUnShiftB.__str__Y  rÂ  r_   Nr¨  rv   r_   r]   rÄ  rÄ  4  s>   € € € € € Ø$Ð$ð *ð  *ð  *ðDLð Lð Lð Lð Lr_   rÄ  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerShiftAz Increment an upper b index. c                 óh   — t          |¦  «        }t          |t          z
  t          ¦  «        | _        d S rc   ©r   rQ   r*  r•  r¬  s     r]   r=  zMeijerShiftA.__init__a  s&   € Ý�R‰[Œ[ˆÝ˜"�r™'¥2Ñ&Ô&ˆŒ
ˆ
ˆ
r_   c                 óF   — d| j                              ¦   «         d         z  S )Nz<Increment upper b=%s.>rX   r¦  rÆ   s    r]   r§  zMeijerShiftA.__str__e  s    € Ø(¨D¬J×,AÒ,AÑ,CÔ,CÀAÔ,FÑGÐGr_   Nr¨  rv   r_   r]   rÈ  rÈ  ^  s=   € € € € € Ø'Ð'ð'ð 'ð 'ðHð Hð Hð Hð Hr_   rÈ  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerShiftBz Decrement an upper a index. c                 ón   — t          |¦  «        }t          d|z
  t          z   t          ¦  «        | _        d S rW   rÊ  r¬  s     r]   r=  zMeijerShiftB.__init__l  s*   € Ý�R‰[Œ[ˆÝ˜!˜b™&¥2™+¥rÑ*Ô*ˆŒ
ˆ
ˆ
r_   c                 óL   — dd| j                              ¦   «         d         z
  z  S )Nz<Decrement upper a=%s.>rX   r¦  rÆ   s    r]   r§  zMeijerShiftB.__str__p  s%   € Ø(¨A°´
×0EÒ0EÑ0GÔ0GÈÔ0JÑ,JÑKÐKr_   Nr¨  rv   r_   r]   rÍ  rÍ  i  s=   € € € € € Ø'Ð'ð+ð +ð +ðLð Lð Lð Lð Lr_   rÍ  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerShiftCz Increment a lower b index. c                 ój   — t          |¦  «        }t          | t          z   t          ¦  «        | _        d S rc   rÊ  r¬  s     r]   r=  zMeijerShiftC.__init__w  s(   € Ý�R‰[Œ[ˆÝ˜2˜#¥™(¥BÑ'Ô'ˆŒ
ˆ
ˆ
r_   c                 óH   — d| j                              ¦   «         d          z  S )Nz<Increment lower b=%s.>rX   r¦  rÆ   s    r]   r§  zMeijerShiftC.__str__{  s#   € Ø(¨T¬Z×-BÒ-BÑ-DÔ-DÀQÔ-GÐ,GÑHÐHr_   Nr¨  rv   r_   r]   rÑ  rÑ  t  s=   € € € € € Ø&Ð&ð(ð (ð (ðIð Ið Ið Ið Ir_   rÑ  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerShiftDz Decrement a lower a index. c                 ón   — t          |¦  «        }t          |dz
  t          z
  t          ¦  «        | _        d S rW   rÊ  r¬  s     r]   r=  zMeijerShiftD.__init__‚  s*   € Ý�R‰[Œ[ˆÝ˜"˜q™&¥2™+¥rÑ*Ô*ˆŒ
ˆ
ˆ
r_   c                 óL   — d| j                              ¦   «         d         dz   z  S )Nz<Decrement lower a=%s.>rX   r¦  rÆ   s    r]   r§  zMeijerShiftD.__str__†  s%   € Ø(¨D¬J×,AÒ,AÑ,CÔ,CÀAÔ,FÈÑ,JÑKÐKr_   Nr¨  rv   r_   r]   rÕ  rÕ    s=   € € € € € Ø&Ð&ð+ð +ð +ðLð Lð Lð Lð Lr_   rÕ  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerUnShiftAz Decrement an upper b index. c           
      ó   ‡— t          t          t          |||||g¦  «        ¦  «        \  }}}}}|| _        || _        || _        || _        || _        t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }|                     |¦  «        dz
  }t          dt          ¦  «        t          d„ |D ¦   «         ¦  «        z  t          d„ |D ¦   «         ¦  «        z  }t          d¦  «        }	t          ||	z
  |	¦  «        Št          ||	¦  «        t          ˆfd„|D ¦   «         ¦  «        z  t          ˆfd„|D ¦   «         ¦  «        z  }
|
                     d¦  «        }|dk    rt          d¦  «        ‚t          t          |
                     ¦   «         d	d
…         |	¦  «                             ¦   «                              |	|t          z
  ¦  «        t          ¦  «        }
t          ||
z
  |z  t          ¦  «        | _        d	S )r²  rX   c              3   óP   K  — | ]!}t          |t          z
  t          ¦  «        V — Œ"d S rc   ©rQ   r*  r.  s     r]   rÑ   z*MeijerUnShiftA.__init__.<locals>.<genexpr>�  s0   è è € Ð<Ð<°A�t A­¡F­BÑ/Ô/Ð<Ð<Ð<Ð<Ð<Ð<r_   c              3   óP   K  — | ]!}t          t          |z
  t          ¦  «        V — Œ"d S rc   rÜ  r.  s     r]   rÑ   z*MeijerUnShiftA.__init__.<locals>.<genexpr>�  s2   è è € ÐCaÐCaÐYZÅDÍÈaÉÕQSÑDTÔDTÐCaÐCaÐCaÐCaÐCaÐCar_   r³  c              3   ó(   •K  — | ]}‰d z   |z
  V — ŒdS ©rX   Nrv   ©rž   rl   r»  s     €r]   rÑ   z*MeijerUnShiftA.__init__.<locals>.<genexpr>¡  s+   øè è € Ð6Ð6¨a˜q 1™u q™yÐ6Ð6Ð6Ð6Ð6Ð6r_   c              3   ó*   •K  — | ]}‰ |z   d z
  V — ŒdS rß  rv   rà  s     €r]   rÑ   z*MeijerUnShiftA.__init__.<locals>.<genexpr>¡  s-   øè è € Ð=WÐ=WÈqÀ¸rÀA¹vÈ¹zÐ=WÐ=WÐ=WÐ=WÐ=WÐ=Wr_   r   z(Cannot decrement upper b index (cancels)Nrx   )r©   rª   r   Ú_anrµ  Ú_bmr¶  r·  r¸  rQ   r*  r   r	   rº  rZ  r1  r³   r}  r•  )rÇ   r’   rh   r“   ri   rÿ   ro   r­  r"  r³  r6  r¼  r»  s               @r]   r=  zMeijerUnShiftA.__init__�  sÔ  ø€ å ¥¥W¨r°2°r¸2¸qÐ.AÑ!BÔ!BÑCÔCÑˆˆB��B˜àˆŒØˆŒØˆŒØˆŒØˆŒå�"‰XŒXˆÝ�"‰XŒXˆÝ�"‰XŒXˆÝ�"‰XŒXˆØ�VŠV�A‰YŒY˜‰]ˆå�•B‰KŒK�$Ð<Ð<¸Ð<Ñ<Ô<Ñ<Ô<Ñ<½tÐCaÐCaÐ^`ÐCaÑCaÔCaÑ?aÔ?aÑaˆå�#‰JŒJˆÝ��a‘˜‰OŒOˆÝ��A‰JŒJ�Ð6Ð6Ð6Ð6°2Ð6Ñ6Ô6Ñ6Ô6Ñ6½Ð=WÐ=WÐ=WÐ=WÐTVÐ=WÑ=WÔ=WÑ9WÔ9WÑWˆà�UŠU�1‰XŒXˆØ�Š7ˆ7ÝÐGÑHÔHÐHå•�a—l’l‘n”n S b SÔ)¨1Ñ-Ô-×5Ò5Ñ7Ô7×<Ò<¸QÀÅRÁÑHÔHÍ"ÑMÔMˆå˜1˜q™5 "™*¥bÑ)Ô)ˆŒ
ˆ
ˆ
r_   c                 óX   — d| j         ›d| j        ›d| j        ›d| j        ›d| j        ›d�S )Nz<Decrement upper b index #r¾  r¿  rÀ  ©r·  râ  rµ  rã  r¶  rÆ   s    r]   r§  zMeijerUnShiftA.__str__«  ó:   € € ØEIÄWÀWÀWØ&*¤h h h°´°°¸$¼(¸(¸(ÀDÄHÀHÀHðNð 	Nr_   Nr¨  rv   r_   r]   rÙ  rÙ  Š  s=   € € € € € Ø'Ð'ð*ð *ð *ð<Nð Nð Nð Nð Nr_   rÙ  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerUnShiftBz Increment an upper a index. c           
      ó(  — t          t          t          |||||g¦  «        ¦  «        \  }}}}}|| _        || _        || _        || _        || _        t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }|                     |¦  «        dz   }t          |t          ¦  «        }|D ]%}	|t          d|	z
  t          z   t          ¦  «        z  }Œ&|D ]%}	|t          |	dz
  t          z
  t          ¦  «        z  }Œ&t          d¦  «        }
t          |
|z   dz
  |
¦  «        }t          d|
¦  «        }|D ]}|| |z   z  }Œ|D ]
}|||z
  z  }Œ|                     d¦  «        }|dk    rt          d¦  «        ‚t          t          |                     ¦   «         dd…         |
¦  «                             ¦   «                              |
d|z
  t          z   ¦  «        t          ¦  «        }t          ||z
  |z  t          ¦  «        | _        dS )r²  rX   rr   r   z(Cannot increment upper a index (cancels)Nrx   ©r©   rª   r   râ  rµ  rã  r¶  r·  r¸  rQ   r*  r	   rº  rZ  r1  r³   r}  r•  ©rÇ   r’   rh   r“   ri   rÿ   ro   r¤  r"  rl   rr   r»  r6  rm   r¼  s                  r]   r=  zMeijerUnShiftB.__init__³  s  € å ¥¥W¨r°2°r¸2¸qÐ.AÑ!BÔ!BÑCÔCÑˆˆB��B˜àˆŒØˆŒØˆŒØˆŒØˆŒå�"‰XŒXˆÝ�"‰XŒXˆÝ�"‰XŒXˆÝ�"‰XŒXˆØ�VŠV�A‰YŒY˜‰]ˆå�•B‰KŒKˆØð 	&ð 	&ˆAØ•�a˜!‘e�b‘j¥"Ñ%Ô%Ñ%ˆAˆAØð 	&ð 	&ˆAØ•�a˜!‘e�b‘j¥"Ñ%Ô%Ñ%ˆAˆAå�#‰JŒJˆÝ��R‘˜!‘˜QÑÔˆÝ��A‰JŒJˆØð 	ð 	ˆAØ�1�"�q‘&‰MˆAˆAØð 	ð 	ˆAØ�!�a‘%‰LˆAˆAà�UŠU�1‰XŒXˆØ�Š7ˆ7ÝÐGÑHÔHÐHå•�a—l’l‘n”n S b SÔ)¨1Ñ-Ô-×5Ò5Ñ7Ô7×<Ò<Øˆq�2‰v�‰{ñô Ýñ!ô !ˆõ ˜1˜q™5 "™*¥bÑ)Ô)ˆŒ
ˆ
ˆ
r_   c                 óX   — d| j         ›d| j        ›d| j        ›d| j        ›d| j        ›d�S )Nz<Increment upper a index #r¾  r¿  rÀ  rå  rÆ   s    r]   r§  zMeijerUnShiftB.__str__Ú  ræ  r_   Nr¨  rv   r_   r]   rè  rè  °  s>   € € € € € Ø'Ð'ð%*ð %*ð %*ðNNð Nð Nð Nð Nr_   rè  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerUnShiftCz Decrement a lower b index. c           
      ó  — t          t          t          |||||g¦  «        ¦  «        \  }}}}}|| _        || _        || _        || _        || _        t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }|                     |¦  «        dz
  }t          dt          ¦  «        }|D ]"}	|t          |	t          z
  t          ¦  «        z  }Œ#|D ]"}	|t          t          |	z
  t          ¦  «        z  }Œ#t          d¦  «        }
t          ||
z   |
¦  «        }t          ||
¦  «        }|D ]}||dz   |z
  z  }Œ|D ]}|| |z   dz
  z  }Œ|                     d¦  «        }|dk    rt          d¦  «        ‚t          t          |                     ¦   «         dd…         |
¦  «                             ¦   «                              |
t          |z
  ¦  «        t          ¦  «        }t          ||z
  |z  t          ¦  «        | _        dS )r²  rX   rs   r   z(Cannot decrement lower b index (cancels)Nrx   rê  )rÇ   r’   rh   r“   ri   rÿ   ro   r­  r"  rm   rs   r»  r6  rl   r¼  s                  r]   r=  zMeijerUnShiftC.__init__ç  sï  € å ¥¥W¨r°2°r¸2¸qÐ.AÑ!BÔ!BÑCÔCÑˆˆB��B˜àˆŒØˆŒØˆŒØˆŒØˆŒå�"‰XŒXˆÝ�"‰XŒXˆÝ�"‰XŒXˆÝ�"‰XŒXˆØ�VŠV�A‰YŒY˜‰]ˆå�•B‰KŒKˆØð 	"ð 	"ˆAØ•�a�"‘f�bÑ!Ô!Ñ!ˆAˆAØð 	"ð 	"ˆAØ••b˜1‘f�bÑ!Ô!Ñ!ˆAˆAå�#‰JŒJˆÝ��a‘˜‰OŒOˆÝ��A‰JŒJˆØð 	ð 	ˆAØ�!�a‘%˜!‘)ÑˆAˆAØð 	ð 	ˆAØ�1�"�q‘&˜1‘*ÑˆAˆAà�UŠU�1‰XŒXˆØ�Š7ˆ7ÝÐGÑHÔHÐHå•�a—l’l‘n”n S b SÔ)¨1Ñ-Ô-×5Ò5Ñ7Ô7×<Ò<¸QÅÀRÁÑHÔHÍ"ÑMÔMˆå˜1˜q™5 "™*¥bÑ)Ô)ˆŒ
ˆ
ˆ
r_   c                 óX   — d| j         ›d| j        ›d| j        ›d| j        ›d| j        ›d�S )Nz<Decrement lower b index #r¾  r¿  rÀ  rå  rÆ   s    r]   r§  zMeijerUnShiftC.__str__  ræ  r_   Nr¨  rv   r_   r]   rî  rî  ß  s>   € € € € € Ø&Ð&ð$*ð $*ð $*ðLNð Nð Nð Nð Nr_   rî  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚMeijerUnShiftDz Increment a lower a index. c           
      ó(  — t          t          t          |||||g¦  «        ¦  «        \  }}}}}|| _        || _        || _        || _        || _        t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }|                     |¦  «        dz   }t          |t          ¦  «        }|D ]%}	|t          d|	z
  t          z   t          ¦  «        z  }Œ&|D ]%}	|t          |	dz
  t          z
  t          ¦  «        z  }Œ&t          d¦  «        }
t          |dz
  |
z
  |
¦  «        }t          d|
¦  «        }|D ]}|| |z   z  }Œ|D ]
}|||z
  z  }Œ|                     d¦  «        }|dk    rt          d¦  «        ‚t          t          |                     ¦   «         dd…         |
¦  «                             ¦   «                              |
|dz
  t          z
  ¦  «        t          ¦  «        }t          ||z
  |z  t          ¦  «        | _        dS )r²  rX   rr   r   z(Cannot increment lower a index (cancels)Nrx   rê  rë  s                  r]   r=  zMeijerUnShiftD.__init__  s  € å ¥¥W¨r°2°r¸2¸qÐ.AÑ!BÔ!BÑCÔCÑˆˆB��B˜àˆŒØˆŒØˆŒØˆŒØˆŒå�"‰XŒXˆÝ�"‰XŒXˆÝ�"‰XŒXˆÝ�"‰XŒXˆØ�VŠV�A‰YŒY˜‰]ˆå�•B‰KŒKˆØð 	&ð 	&ˆAØ•�a˜!‘e�b‘j¥"Ñ%Ô%Ñ%ˆAˆAØð 	&ð 	&ˆAØ•�a˜!‘e�b‘j¥"Ñ%Ô%Ñ%ˆAˆAå�#‰JŒJˆÝ��a‘˜!‘˜QÑÔˆÝ��A‰JŒJˆØð 	ð 	ˆAØ�1�"�q‘&‰MˆAˆAØð 	ð 	ˆAØ�!�a‘%‰LˆAˆAà�UŠU�1‰XŒXˆØ�Š7ˆ7ÝÐGÑHÔHÐHå•�a—l’l‘n”n S b SÔ)¨1Ñ-Ô-×5Ò5Ñ7Ô7×<Ò<Øˆr�A‰v�‰{ñô Ýñ!ô !ˆõ ˜1˜q™5 "™*¥bÑ)Ô)ˆŒ
ˆ
ˆ
r_   c                 óX   — d| j         ›d| j        ›d| j        ›d| j        ›d| j        ›d�S )Nz<Increment lower a index #r¾  r¿  rÀ  rå  rÆ   s    r]   r§  zMeijerUnShiftD.__str__>  ræ  r_   Nr¨  rv   r_   r]   rò  rò    s>   € € € € € Ø&Ð&ð%*ð %*ð %*ðNNð Nð Nð Nð Nr_   rò  c                   ó`   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	dS )ÚReduceOrderz8 Reduce Order by cancelling an upper and a lower index. c                 óv  — t          |¦  «        }t          |¦  «        }||z
  }|j        r|dk     rdS |j        r	|j        rdS t                               | ¦  «        }t          j        }t          |¦  «        D ]}|t          |z   |z   ||z   z  z  }Œt          |t          ¦  «        |_        ||_        ||_        |S )z< For convenience if reduction is not possible, return None. r   N)r   Ú
is_IntegerrÎ   r  r“  rÂ   r   rŠ   r  r*  rQ   r•  Ú_aÚ_b)ra   r¤  Úbjr6  r´   rŸ  Úks          r]   rÂ   zReduceOrder.__new__F  s¿   € å�R‰[Œ[ˆÝ�R‰[Œ[ˆØ�‰GˆØŒ|ð 	˜q 1šu˜uØ�4ØŒ=ð 	˜RÔ.ð 	Ø�4å×Ò Ñ$Ô$ˆåŒEˆÝ�q‘”ð 	(ð 	(ˆAØ•"�r‘'˜A‘+  Q¡Ñ'Ñ'ˆAˆAå˜!�R‘[”[ˆŒ
ØˆŒØˆŒàˆr_   c                 óÈ  — t          |¦  «        }t          |¦  «        }||z
  }|j        s|j        sdS t                               | ¦  «        }t
          j        }t          |¦  «        D ]}||t          z  |z   |z   z  }Œt          |t          ¦  «        |_
        |dk    r||_        ||_        n4t          d|dz
  d¬¦  «        |_        t          d|dz
  d¬¦  «        |_        |S )zN Cancel b + sign*s and a + sign*s
            This is for meijer G functions. Nrx   rX   F)Úevaluate)r   rÏ   rø  r“  rÂ   r   rŠ   r  r*  rQ   r•  rù  rú  r   )ra   rm   rl   Úsignr6  r´   rŸ  rü  s           r]   Ú_meijerzReduceOrder._meijer\  sã   € õ �A‰JŒJˆÝ�A‰JŒJˆØ�‰EˆØŒ=ð 	 ¤ð 	Ø�4å×Ò Ñ$Ô$ˆåŒEˆÝ�q‘”ð 	#ð 	#ˆAØ�$•r‘'˜A‘+ ‘/Ñ"ˆAˆAå˜!�R‘[”[ˆŒ
Ø�2Š:ˆ:ØˆDŒGØˆDŒGˆGå˜!˜Q ™U¨UÐ3Ñ3Ô3ˆDŒGÝ˜!˜Q ™U¨UÐ3Ñ3Ô3ˆDŒGàˆr_   c                 ó0   — |                       ||d¦  «        S )Nrx   ©r   )ra   rm   rl   s      r]   Úmeijer_minuszReduceOrder.meijer_minusv  s   € à�{Š{˜1˜a Ñ$Ô$Ð$r_   c                 ó<   — |                       d|z
  d|z
  d¦  «        S rW   r  )ra   rl   rm   s      r]   Úmeijer_pluszReduceOrder.meijer_plusz  s    € à�{Š{˜1˜q™5 ! a¡%¨Ñ+Ô+Ð+r_   c                 ó(   — d| j         ›d| j        ›d�S )Nz"<Reduce order by cancelling upper z with lower rÀ  )rù  rú  rÆ   s    r]   r§  zReduceOrder.__str__~  s   € € àŒWˆWˆW�d”g�g�gðð 	r_   N)
r  r  r  r  rÂ   Úclassmethodr   r  r  r§  rv   r_   r]   rö  rö  C  s‰   € € € € € ØBÐBðð ð ð, ðð ñ „[ðð2 ð%ð %ñ „[ð%ð ð,ð ,ñ „[ð,ðð ð ð ð r_   rö  c                 ó¤  — t          | ¦  «        } t          |¦  «        }|                      |¬¦  «         |                     |¬¦  «         g }g }| D ]{}d}t          t          |¦  «        ¦  «        D ]-} ||||         ¦  «        }|�|                     |¦  «          nŒ.|€|                     |¦  «         Œf|                     |¦  «         Œ||||fS )z? Order reduction algorithm used in Hypergeometric and Meijer G rá   N)r©   ré   r  rÉ   r¸  rf   )	rh   ri   Úgenrâ   ÚnapÚ	operatorsrl   r–  rÿ   s	            r]   Ú_reduce_orderr  ƒ  sæ   € å	ˆb‰Œ€BÝ	ˆb‰Œ€Bà‡G‚G�€GÑÔÐØ‡G‚G�€GÑÔÐà
€Cà€IØð 
!ð 
!ˆØˆÝ•s˜2‘w”w‘”ð 	ð 	ˆAØ��Q˜˜1œ‘”ˆBØˆ~Ø—’�q‘	”	�	Ø�ð ð ˆ:Ø�JŠJ�q‰MŒMˆMˆMà×Ò˜RÑ Ô Ð Ð à��IÐÐr_   c                 ó–   — t          | j        | j        t          t          ¦  «        \  }}}t          t          |Ž t          |Ž ¦  «        |fS )að  
    Given the hypergeometric function ``func``, find a sequence of operators to
    reduces order as much as possible.

    Explanation
    ===========

    Return (newfunc, [operators]), where applying the operators to the
    hypergeometric function newfunc yields func.

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import reduce_order, Hyper_Function
    >>> reduce_order(Hyper_Function((1, 2), (3, 4)))
    (Hyper_Function((1, 2), (3, 4)), [])
    >>> reduce_order(Hyper_Function((1,), (1,)))
    (Hyper_Function((), ()), [<Reduce order by cancelling upper 1 with lower 1.>])
    >>> reduce_order(Hyper_Function((2, 4), (3, 3)))
    (Hyper_Function((2,), (3,)), [<Reduce order by cancelling
    upper 4 with lower 3.>])
    )r  rh   ri   rö  r   re   r   )rk   r
  Únbqr  s       r]   Úreduce_orderr  �  s@   € õ. (¨¬°´½+ÕGWÑXÔXÑ€Cˆˆiå�% ˜+¥u¨c {Ñ3Ô3°YÐ>Ð>r_   c                 óä   — t          | j        | j        t          j        d„ ¦  «        \  }}}t          | j        | j        t          j        t          ¦  «        \  }}}t          ||||¦  «        ||z   fS )a  
    Given the Meijer G function parameters, ``func``, find a sequence of
    operators that reduces order as much as possible.

    Return newfunc, [operators].

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import (reduce_order_meijer,
    ...                                         G_Function)
    >>> reduce_order_meijer(G_Function([3, 4], [5, 6], [3, 4], [1, 2]))[0]
    G_Function((4, 3), (5, 6), (3, 4), (2, 1))
    >>> reduce_order_meijer(G_Function([3, 4], [5, 6], [3, 4], [1, 8]))[0]
    G_Function((3,), (5, 6), (3, 4), (1,))
    >>> reduce_order_meijer(G_Function([3, 4], [5, 6], [7, 5], [1, 5]))[0]
    G_Function((3,), (), (), (1,))
    >>> reduce_order_meijer(G_Function([3, 4], [5, 6], [7, 5], [5, 3]))[0]
    G_Function((), (), (), ())
    c                 ó"   — t          |  ¦  «        S rc   r   rß   s    r]   rà   z%reduce_order_meijer.<locals>.<lambda>Ð  s   € Õ-=¸q¸bÑ-AÔ-A€ r_   )
r  r’   ri   rö  r  r“   rh   r  r   r—   )rk   r   r  Úops1Únbmr
  Úops2s          r]   Úreduce_order_meijerr  ¹  sr   € õ, # 4¤7¨D¬Gµ[Ô5LØ#AÐ#AñCô C�N€Cˆˆdå" 4¤7¨D¬Gµ[Ô5MÝ#3ñ5ô 5�N€Cˆˆdõ �c˜3  SÑ)Ô)¨4°$©;Ð6Ð6r_   c                 ó   ‡ ‡— ˆ ˆfd„}|S )z? Create a derivative operator, to be passed to Operator.apply. c                 óˆ   •— ‰|                       ‰¦  «        z  | ‰z  z   }|                     t          ‰¦  «        ¦  «        }|S rc   )rû   Ú	applyfuncr¸   )rs   r™  rt   ro   s     €€r]   Údoitz&make_derivative_operator.<locals>.doitÙ  s;   ø€ Øˆa�fŠf�Q‰iŒi‰K˜!˜A™#ÑˆØ�KŠK�	 !™œÑ%Ô%ˆØˆr_   rv   )rt   ro   r  s   `` r]   Úmake_derivative_operatorr  ×  s)   øø€ ðð ð ð ð ð ð €Kr_   c                 óZ   — | }t          |¦  «        D ]}|                     ||¦  «        }Œ|S )zk
    Apply the list of operators ``ops`` to object ``obj``, substituting
    ``op`` for the generator.
    )Úreversedr›  )rÃ   Úopsr–  rj   Úos        r]   Úapply_operatorsr  à  s8   € ð
 €CÝ�c‰]Œ]ð ð ˆØ�gŠg�c˜2ÑÔˆˆØ€Jr_   c           	      ó0  ‡‡— d„ | j         | j        |j         |j        fD ¦   «         \  }}}}t          t          |                     ¦   «         ¦  «        ¦  «        t          t          |                     ¦   «         ¦  «        ¦  «        k    s^t          t          |                     ¦   «         ¦  «        ¦  «        t          t          |                     ¦   «         ¦  «        ¦  «        k    rt          | ›d|›�¦  «        ‚g }d„ Šˆˆfd„}ˆˆfd„}	t          t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        z   t          ¬¦  «        D �]œ}
d}d}d}d}|
|v r||
         }||
         }|
|v r||
         }||
         }t          |¦  «        t          |¦  «        k    s t          |¦  «        t          |¦  «        k    rt          | ›d|›�¦  «        ‚d„ ||||fD ¦   «         \  }}}}d	„ } |||
¦  «        } |||
¦  «        }t          |¦  «        d
k    r| |	g ||||¦  «        z  }nµt          |¦  «        d
k    r| ||g |||¦  «        z  }n�|d         }|d         }|d
         |z
  d
k    s|d
         |z
  d
k    rt          d¦  «        ‚||z
  d
k    r%| ||||||¦  «        z  }| |	|||||¦  «        z  }n$| |	|||||¦  «        z  }| ||||||¦  «        z  }|||
<   |||
<   �Œž|                     ¦   «          |S )a(  
    Devise a plan (consisting of shift and un-shift operators) to be applied
    to the hypergeometric function ``target`` to yield ``origin``.
    Returns a list of operators.

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import devise_plan, Hyper_Function
    >>> from sympy.abc import z

    Nothing to do:

    >>> devise_plan(Hyper_Function((1, 2), ()), Hyper_Function((1, 2), ()), z)
    []
    >>> devise_plan(Hyper_Function((), (1, 2)), Hyper_Function((), (1, 2)), z)
    []

    Very simple plans:

    >>> devise_plan(Hyper_Function((2,), ()), Hyper_Function((1,), ()), z)
    [<Increment upper 1.>]
    >>> devise_plan(Hyper_Function((), (2,)), Hyper_Function((), (1,)), z)
    [<Increment lower index #0 of [], [1].>]

    Several buckets:

    >>> from sympy import S
    >>> devise_plan(Hyper_Function((1, S.Half), ()),
    ...             Hyper_Function((2, S('3/2')), ()), z) #doctest: +NORMALIZE_WHITESPACE
    [<Decrement upper index #0 of [3/2, 1], [].>,
    <Decrement upper index #0 of [2, 3/2], [].>]

    A slightly more complicated plan:

    >>> devise_plan(Hyper_Function((1, 3), ()), Hyper_Function((2, 2), ()), z)
    [<Increment upper 2.>, <Decrement upper index #0 of [2, 2], [].>]

    Another more complicated plan: (note that the ap have to be shifted first!)

    >>> devise_plan(Hyper_Function((1, -1), (2,)), Hyper_Function((3, -2), (4,)), z)
    [<Decrement lower 3.>, <Decrement lower 4.>,
    <Decrement upper index #1 of [-1, 2], [4].>,
    <Decrement upper index #1 of [-1, 3], [4].>, <Increment upper -2.>]
    c                 ó8   — g | ]}t          |t          ¦  «        ‘ŒS rv   rò   ró   s     r]   r    zdevise_plan.<locals>.<listcomp>  s8   € ð 0Dð 0Dð 0DØõ 15°V½UÑ0CÔ0Cð 0Dð 0Dð 0Dr_   z not reachable from c                 ó  — g }t          t          | ¦  «        ¦  «        D ]d}||         | |         z
  dk    r|}d}n|}d}||         | |         k    r2| || |¦  «        gz  }| |xx         |z  cc<   ||         | |         k    °2Œe|S )Nr   rX   rx   )r  rÉ   )ÚfroÚtoÚincÚdecr  rÿ   ÚshÚchs           r]   Ú	do_shiftszdevise_plan.<locals>.do_shifts"  s¦   € ØˆÝ•s˜3‘x”x‘”ð 
	ð 
	ˆAØ�!Œu�s˜1”v‰~ Ò!Ð!Ø�Ø��à�Ø�à�Q”%˜3˜qœ6’/�/Ø˜˜˜3 ™
œ
�|Ñ#�Ø�A��”˜"‘��‘ð �Q”%˜3˜qœ6’/�/øð ˆ
r_   c           	      ó4   •‡‡‡—  ‰| |d„ ˆˆˆˆfd„¦  «        S )z( Shift us from (nal, nbk) to (al, nbk). c                 ó,   — t          | |         ¦  «        S rc   )r¡  ©rŸ  rÿ   s     r]   rà   z2devise_plan.<locals>.do_shifts_a.<locals>.<lambda>4  s   € ­v°a¸´d©|¬|€ r_   c                 ó4   •— t          | ‰z   ‰‰z   |‰¦  «        S rc   )r°  )rŸ  rÿ   ÚaotherÚbotherÚnbkro   s     €€€€r]   rà   z2devise_plan.<locals>.do_shifts_a.<locals>.<lambda>5  s   ø€ ¥h¨q°6©z¸3À¹<ÈÈAÑ&NÔ&N€ r_   rv   )Únalr0  Úalr.  r/  r)  ro   s    ` ``€€r]   Údo_shifts_az devise_plan.<locals>.do_shifts_a2  s<   øøøø€ àˆy˜˜bÐ";Ð";ØNÐNÐNÐNÐNÐNÐNñPô Pð 	Pr_   c                 ó4   •‡ ‡‡—  ‰||ˆˆˆ ˆfd„d„ ¦  «        S )z( Shift us from (nal, nbk) to (nal, bk). c                 ó4   •— t          ‰‰z   | ‰z   |‰¦  «        S rc   )rÄ  )rŸ  rÿ   r.  r/  r1  ro   s     €€€€r]   rà   z2devise_plan.<locals>.do_shifts_b.<locals>.<lambda>:  s   ø€ ¥h¨s°V©|¸QÀ¹ZÈÈAÑ&NÔ&N€ r_   c                 ó,   — t          | |         ¦  «        S rc   )rª  r,  s     r]   rà   z2devise_plan.<locals>.do_shifts_b.<locals>.<lambda>;  s   € ¥f¨Q¨q¬T¡l¤l€ r_   rv   )r1  r0  Úbkr.  r/  r)  ro   s   `  ``€€r]   Údo_shifts_bz devise_plan.<locals>.do_shifts_b7  s9   øøøø€ àˆy˜˜bØNÐNÐNÐNÐNÐNÐNØ2Ð2ñ4ô 4ð 	4r_   rá   rv   c                 ó:   — g | ]}t          |t          ¬ ¦  «        ‘ŒS )rá   )Úsortedr   r  s     r]   r    zdevise_plan.<locals>.<listcomp>K  s6   € ð )ð )ð )Øõ # 1Õ*:Ð;Ñ;Ô;ð )ð )ð )r_   c                 óV   — g }| D ]#}||k    r|                      | |         ¦  «         Œ$|S rc   )r_  )r  râ   rš   rü  s       r]   Úotherszdevise_plan.<locals>.othersN  s;   € ØˆAØð %ð %�Ø˜’8�8Ø—H’H˜S œVÑ$Ô$Ð$øØˆHr_   r   rx   zNon-suitable parameters.)	rh   ri   rÉ   r©   rö   rZ  r:  r   r  )rk  Úoriginro   rí   rî   Ú	nabucketsÚ	nbbucketsr  r3  r8  r™  r2  r1  r7  r0  r<  r.  r/  ÚnamaxÚamaxr)  s     `                 @r]   Údevise_planrB  ë  s­  øø€ ð\0Dð 0DØ”y &¤)¨V¬Y¸¼	ÐBð0Dñ 0Dô 0DÑ,€Hˆh˜	 9õ �4�—’‘”Ñ Ô Ñ!Ô!¥S­¨i¯nªnÑ.>Ô.>Ñ)?Ô)?Ñ%@Ô%@Ò@Ð@Ý•�X—]’]‘_”_Ñ%Ô%Ñ&Ô&­#­d°9·>²>Ñ3CÔ3CÑ.DÔ.DÑ*EÔ*EÒEÐEÝ°v°v°v¸v¸vÐFÑGÔGÐGà
€Cðð ð ð Pð Pð Pð Pð Pð Pð
4ð 4ð 4ð 4ð 4ð 4õ •D˜Ÿš™œÑ)Ô)­D°·²±´Ñ,AÔ,AÑAÕGWÐXÑXÔXð 1ñ 1ˆØˆØˆØˆØˆØ�ˆ=ˆ=Ø˜!”ˆBØ˜A”,ˆCØ�ˆ=ˆ=Ø˜!”ˆBØ˜A”,ˆCÝˆr‰7Œ7•c˜#‘h”hÒÐ¥# b¡'¤'­S°©X¬XÒ"5Ð"5Ý¸6¸6¸6À6À6ÐJÑKÔKÐKð)ð )Ø˜#˜r 3Ð'ð)ñ )ô )ÑˆˆC��Sð	ð 	ð 	ð �˜	 1Ñ%Ô%ˆØ�˜	 1Ñ%Ô%ˆåˆr‰7Œ7�aŠ<ˆ<à�;�;˜r 3¨¨F°FÑ;Ô;Ñ;ˆCˆCÝ�‰WŒW˜Š\ˆ\à�;�;˜s B¨¨F°FÑ;Ô;Ñ;ˆCˆCà˜”GˆEØ�b”6ˆDà�1Œv˜‰~ Ò"Ð" b¨¤e¨d¡l°aÒ&7Ð&7Ý Ð!;Ñ<Ô<Ð<à�t‰|˜aÒÐà�{�{ 3¨¨R°¸Ñ@Ô@Ñ@�Ø�{�{ 2 s¨B°¸Ñ?Ô?Ñ?��ð �{�{ 3¨¨R°¸Ñ@Ô@Ñ@�Ø�{�{ 3¨¨B°¸Ñ?Ô?Ñ?�àˆ	�!‰Øˆ	�!‰‰à‡K‚K�M„M€MØ€Jr_   c                 ó¸  ‡‡— t          | j        t          ¦  «        t          | j        t          ¦  «        }}t	          |t
          j                 ¦  «        dk    rdS |t
          j                 d         }|dk    rdS t
          j        |vrdS t          |t
          j                 ¦  «        }|                     ¦   «          |d         Š‰dk    rdS t          | j        ¦  «        }| 	                    |¦  «         t          | j        ¦  «        }| 	                    ‰¦  «         ‰dz  Šˆfd„|D ¦   «         }ˆfd„|D ¦   «         }g }t          |dz
  ¦  «        D ]'Š|                     t          ‰dz   ¦  «        ¦  «         Œ(|                     ¦   «          t          ‰¦  «        |‰z  z  }	|	t          ˆfd„|D ¦   «         Ž z  }	|	t          ˆfd„|D ¦   «         Ž z  }	|t!          |	¦  «        gz  }d}
t          ‰¦  «        D ]LŠ|‰z  t          ‰¦  «        z  }|t          ˆfd„|D ¦   «         Ž z  }|t          ˆfd	„|D ¦   «         Ž z  }|
|z  }
ŒMt#          ||¦  «        ||
 fS )
z? Try to recognise a hypergeometric sum that starts from k > 0. rX   Nr   c                 ó   •— g | ]}|‰z
  ‘ŒS rv   rv   ©rž   r[   rü  s     €r]   r    z#try_shifted_sum.<locals>.<listcomp>‰  ó   ø€ Ð
Ð
Ð
�Qˆ1ˆq‰5Ð
Ð
Ð
r_   c                 ó   •— g | ]}|‰z
  ‘ŒS rv   rv   rE  s     €r]   r    z#try_shifted_sum.<locals>.<listcomp>Š  rF  r_   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rv   ©r6   )rž   rm   rü  s     €r]   r    z#try_shifted_sum.<locals>.<listcomp>’  ó!   ø€ Ð'Ð'Ð'˜a•�A�q‘”Ð'Ð'Ð'r_   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rv   rI  )rž   rl   rü  s     €r]   r    z#try_shifted_sum.<locals>.<listcomp>“  rJ  r_   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rv   rI  ©rž   rl   r6  s     €r]   r    z#try_shifted_sum.<locals>.<listcomp>š  ó!   ø€ Ð)Ð)Ð) •2�a˜‘8”8Ð)Ð)Ð)r_   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rv   rI  ©rž   rm   r6  s     €r]   r    z#try_shifted_sum.<locals>.<listcomp>›  rN  r_   )rU   rh   r^   ri   rÉ   r   r¡   r©   ré   Úremover  rf   r¡  r  r7   r   r�  re   )rk   ro   rí   rî   r™  rš   r
  r  r  ÚfacrŸ  r"  rü  r6  s               @@r]   Útry_shifted_sumrS  t  su  øø€ å˜dœg¥uÑ-Ô-­t°D´G½UÑ/CÔ/Cˆh€HÝ
ˆ8•A”FÔÑÔ Ò!Ð!ØˆtØ•”Ô˜Ô€AØˆA‚v€vØˆtÝ„v�XÐÐØˆtÝˆX•a”fÔÑÔ€AØ‡F‚F�H„H€HØ	ˆ!Œ€AØˆA‚v€vØˆtå
ˆtŒw‰-Œ-€CØ‡J‚Jˆq�M„M€MÝ
ˆtŒw‰-Œ-€CØ‡J‚Jˆq�M„M€MØˆ�F€AØ
Ð
Ð
Ð
˜#Ð
Ñ
Ô
€CØ
Ð
Ð
Ð
˜#Ð
Ñ
Ô
€Cà
€CÝ�1�q‘5‰\Œ\ð "ð "ˆØ�
Š
•6˜!˜a™%‘=”=Ñ!Ô!Ð!Ð!Ø‡K‚K�M„M€Må
�A‰,Œ,�q˜!‘tÑ
€CØ�3Ð'Ð'Ð'Ð' 3Ð'Ñ'Ô'Ð(Ñ(€CØ�3Ð'Ð'Ð'Ð' 3Ð'Ñ'Ô'Ð(Ñ(€Cà�L˜ÑÔÐÑ€Cà	€AÝ�1‰XŒXð ð ˆØˆq‰D•˜1‘”ÑˆØ	�SÐ)Ð)Ð)Ð) SÐ)Ñ)Ô)Ð*Ñ*ˆØ	�SÐ)Ð)Ð)Ð) SÐ)Ñ)Ô)Ð*Ñ*ˆØ	ˆQ‰ˆˆå˜#˜sÑ#Ô# S¨1¨"Ð,Ð,r_   c                 óœ  ‡
‡— t          | j        t          ¦  «        t          | j        t          ¦  «        }}|t          j                 }|t          j                 }|                     ¦   «          |                     ¦   «          d„ |D ¦   «         }d„ |D ¦   «         Š
‰
r"t          ˆ
fd„|D ¦   «         ¦  «        rt          S |sdS |d         }d}t          j	        }	t          t          t          | ¦  «        ¦  «        Ž D ]NŠ||z  }|‰dz   z  }|t          ˆfd„| j        D ¦   «         Ž z  }|t          ˆfd„| j        D ¦   «         Ž z  }|	|z  }	ŒO|	S )	zj Recognise polynomial cases. Returns None if not such a case.
        Requires order to be fully reduced. c                 ó   — g | ]
}|d k    ¯|‘ŒS rO  rv   rÐ   s     r]   r    z"try_polynomial.<locals>.<listcomp>©  ó   € Ð
#Ð
#Ð
#�˜A šF˜Fˆ1˜F˜F˜Fr_   c                 ó   — g | ]
}|d k    ¯|‘ŒS rO  rv   rÐ   s     r]   r    z"try_polynomial.<locals>.<listcomp>ª  rV  r_   c              3   ó0   •K  — | ]}|‰d          k     V — ŒdS )rx   Nrv   )rž   rl   Úbl0s     €r]   rÑ   z!try_polynomial.<locals>.<genexpr>¬  s+   øè è € Ð,Ð, 1�1�s˜2”w’;Ð,Ð,Ð,Ð,Ð,Ð,r_   Nrx   rX   c                 ó   •— g | ]}|‰z   ‘ŒS rv   rv   rM  s     €r]   r    z"try_polynomial.<locals>.<listcomp>·  ó   ø€ Ð,Ð,Ð,˜q�Q˜‘UÐ,Ð,Ð,r_   c                 ó   •— g | ]}|‰z   ‘ŒS rv   rv   rP  s     €r]   r    z"try_polynomial.<locals>.<listcomp>¸  r[  r_   )rU   rh   r^   ri   r   r¡   ré   Úallr   rŠ   r   r©   r  r   )rk   ro   rí   rî   rV  r¼  Úal0rl   rR  rj   rY  r6  s             @@r]   Útry_polynomialr_  ¡  sf  øø€ õ ˜dœg¥uÑ-Ô-­t°D´G½UÑ/CÔ/Cˆh€HØ	•!”&Ô	€BØ	•!”&Ô	€BØ‡G‚G�I„I€IØ‡G‚G�I„I€IØ
#Ð
#�bÐ
#Ñ
#Ô
#€CØ
#Ð
#�bÐ
#Ñ
#Ô
#€Cà
ð �sÐ,Ð,Ð,Ð,¨Ð,Ñ,Ô,Ñ,Ô,ð Ýˆ	Øð ØˆtàˆBŒ€AØ
€CÝ
Œ%€CÝ•D� ˜r™œ‘O”OÐ$ð ð ˆØˆq‰ˆØˆq�1‰u‰ˆØ�sÐ,Ð,Ð,Ð, D¤GÐ,Ñ,Ô,Ð-Ñ-ˆØ�sÐ,Ð,Ð,Ð, D¤GÐ,Ñ,Ô,Ð-Ñ-ˆØˆs‰
ˆˆØ€Jr_   c           	      óà  — t          | j        t          ¦  «        t          | j        t          ¦  «        }}i }|                     ¦   «         D ]Q\  }}|dk    r||vr dS ||         }t          |¦  «        t          |¦  «        f||<   |                     |d¦  «         ŒR|i k    rdS t          j        |vrdS |t          j                 \  }}||dgz   f|t          j        <   t          d¦  «        }	t          j
        }
t          j
        }|                     ¦   «         D ]¨\  }\  }}t          |¦  «        t          |¦  «        k    r dS t          ||¦  «        D ]l\  }}||z
  j        r/||z
  }|
t          ||	z   |¦  «        z  }
|t          ||¦  «        z  }Œ>||z
  }|
t          ||¦  «        z  }
|t          ||	z   |¦  «        z  }ŒmŒ©t          |
|z  |	¦  «        }t!          j        |¦  «        }g }i }|D �]€}|                     ¦   «         \  }
}|                     |	¦  «        sKt)          |
|	¦  «        }|j        st-          d¦  «        ‚|                     ¦   «         \  \  }}|||z  |fgz  }Œz|
                     |	¦  «        rt1          d¦  «        ‚|                     |	¦  «        \  }\  }d}|j        r|j        }|j        }||	k    rd}nz|j        rd|                     |	¦  «        \  }}d}||	k    r|                     |	¦  «        \  }}|||	z  |z   k    rt1          d|z  ¦  «        ‚||z  }|||z  z  }nt1          d¦  «        ‚|                     |g ¦  «                              |
|z  |f¦  «         �Œ‚i }i }t          d	¦  «        }| !                    d
„ ¬¦  «         ddd|z
  z  i}|rBtE          |d         d         ¦  «        D ]&}|||          #                    |¦  «        z  ||dz   <   Œ'|D ]A\  }}|                     t          j
        g ¦  «                              |||         z  ¦  «         ŒB|                     ¦   «         D ]ô\  }}|D ]=\  } }|                     tI          |||¦  «        g ¦  «                              | ¦  «         Œ>| !                    d„ ¬¦  «         tE          d|d         d         dz   ¦  «        D ]>}| tI          |||¦  «        fdtI          ||dz
  |¦  «        fg|tI          |||¦  «        <   Œ?| tI          |d|¦  «        fdd|z
  z  t          j
        fg|tI          |d|¦  «        <   Œõi }!tK          t          j
        gt          | &                    ¦   «         ¦  «        z   ¦  «        D ]
\  }}||!|<   Œd„ tO          |!                     ¦   «         d„ ¬¦  «        D ¦   «         }"tQ          |"¦  «        }#tQ          dgt          |#¦  «        z  g¦  «        }$|                     ¦   «         D ]\  }} t!          | Ž |$|!|         <   ŒtS          t          |#¦  «        ¦  «        }%|                     ¦   «         D ] \  }}|D ]\  } }&| |%|!|         |!|&         f<   ŒŒ!tU          | |dg |#|$|%¦  «        S )z™
    Try to find an expression for Hyper_Function ``func`` in terms of Lerch
    Transcendents.

    Return None if no such expression can be found.
    r   NrX   rŸ   zp should be monomialz<Need partial fraction decomposition with linear denominatorszunrecognised form %sz%unrecognised form of partial fractionro   c                 ó   — | d         S rW   rv   rß   s    r]   rà   ztry_lerchphi.<locals>.<lambda>   s
   €   1¤€ r_   rá   rx   c                 ó   — | d         S rW   rv   rß   s    r]   rà   ztry_lerchphi.<locals>.<lambda>*  s
   € ˜Q˜qœT€ r_   rw   c                 ó2   — g | ]\  }}t          |¦  «        ‘ŒS rv   )r   )rž   rm   r7  s      r]   r    z try_lerchphi.<locals>.<listcomp>3  s4   € ð Eð Eð E¡  A�[˜‰^Œ^ð Eð Eð Er_   c                 ó   — | d         S rW   rv   rß   s    r]   rà   ztry_lerchphi.<locals>.<lambda>4  s
   € ¸aÀ¼d€ r_   )+rU   rh   r^   ri   rç   r©   r¸  r   r¡   r	   rŠ   rÉ   r÷   Úis_positiver6   rO   r   Ú	make_argsr±   r<  rQ   Úis_monomialrY  ÚLTÚNotImplementedErrorÚas_coeff_mulÚis_Powr   ÚbaseÚis_AddÚas_independentru  rf   ré   r  rû   r8   Ú	enumeraterö   r:  rL   rN   rg   )'rk   rí   rî   Úpairedrâ   ÚvalueÚbvalueÚaintsÚbintsrŸ   rµ   r¶   Úavaluerl   rm   rü  Úpartr½   Ú	monomialsÚtermsr×   rŸ  ÚindepÚdepr6  Útmpr7  Úderivr—  ro   Úmonrš   r\   ÚtransÚbasisrr   rs   rt   Úb2s'                                          r]   Útry_lerchphir�  ½  s  € õ ˜dœg¥uÑ-Ô-­t°D´G½UÑ/CÔ/Cˆh€Hà€FØ—n’nÑ&Ô&ð  ð  ‰
ˆˆUØ�!Š8ˆ8˜ 8Ð+Ð+Ø�4�4Ø˜#”ˆÝ˜E‘{”{¥D¨¡L¤LÐ1ˆˆs‰Ø�Š�S˜$ÑÔÐÐØ�2‚~€~ØˆtÝ„v�XÐÐØˆtØ�!œ&”>�L€Eˆ5à˜U a S™[Ð)€F�1Œ6�Nåˆc‰
Œ
€AÝŒE€EÝŒE€EØ!'§¢¡¤ð &ð &ÑˆÑˆf�fÝˆv‰;Œ;�#˜f™+œ+Ò%Ð%Ø�4�4õ ˜ Ñ'Ô'ð 	&ð 	&‰DˆAˆqØ�A‘Ô"ð &Ø˜‘E�Ø�˜A ™E 1™œÑ%�Ø�˜A˜q™œÑ!��à˜‘E�Ø�˜A˜q™œÑ!�Ø�˜A ™E 1™œÑ%��ð	&õ ��u‘˜aÑ Ô €DÝŒ=˜ÑÔ€DØ€IØ€EØð 9ñ 9ˆØ×)Ò)Ñ+Ô+‰ˆˆuØ�yŠy˜‰|Œ|ð 	Ý�U˜A‘”ˆAØ”=ð 8ÝÐ 6Ñ7Ô7Ð7ØŸš™œ‰J‰Uˆa�AØ˜1˜U™7 A˜,˜Ñ'ˆIØØ�9Š9�Q‰<Œ<ð 	CÝ%ð 'Bñ Cô Cð Cà×)Ò)¨!Ñ,Ô,‰ˆ‰u�ØˆØŒ:ð 	Ø”ˆAØ”(ˆCØ�!Š8ˆ8ØˆAˆAØŒZð 
	OØ×'Ò'¨Ñ*Ô*‰FˆAˆsØˆAØ�aŠxˆxØ×)Ò)¨!Ñ,Ô,‘��1Ø�a˜‘c˜A‘gŠ~ˆ~Ý)Ð*@À3Ñ*FÑGÔGÐGØ�‰FˆAØ�Q˜‘T‰MˆEˆEå%Ð&MÑNÔNÐNØ×Ò˜˜BÑÔ×&Ò&¨¨e©°QÐ'7Ñ8Ô8Ð8Ñ8ð €EØ€FÝˆc‰
Œ
€AØ‡N‚N�~�~€NÑ&Ô&Ð&Øˆa��Q‘‰iˆ.€CØð *Ý�y ”} QÔ'Ñ(Ô(ð 	*ð 	*ˆAØ˜3˜qœ6Ÿ;š; q™>œ>Ñ)ˆC��A‘‰JˆJØð 6ð 6‰ˆˆ1Ø×Ò�!œ% Ñ$Ô$×+Ò+¨A¨c°!¬f©HÑ5Ô5Ð5Ð5Ø—’‘”ð 8ð 8‰ˆˆ1Øð 	?ð 	?‰DˆAˆqØ×Ò�h q¨!¨QÑ/Ô/°Ñ4Ô4×;Ò;¸AÑ>Ô>Ð>Ð>Ø	�Š�>�>ˆÑ"Ô"Ð"Ý�q˜!˜Bœ% œ( Q™,Ñ'Ô'ð 	Dð 	DˆAØ*+¨­X°a¸¸AÑ->Ô->Ð(?Ø)*­H°Q¸¸A¹¸qÑ,AÔ,AÐ(Bð(DˆE•(˜1˜a Ñ#Ô#Ñ$Ð$à&' R­°!°Q¸Ñ):Ô):Ð$;Ø%&¨¨A©¡Yµ´Ð$6ð$8ˆ�h�q˜!˜QÑÔÑ Ð à€EÝ�1œ5˜'¥D¨¯ª©¬Ñ$6Ô$6Ñ6Ñ7Ô7ð ð ‰ˆˆ1Øˆˆa‰ˆðEð E­&°·²±´Ø5B°]ð+Dñ +Dô +Dð Eñ Eô E€Eåˆu‰Œ€AÝ��•C˜‘F”F‘
ˆ|ÑÔ€AØ—’‘”ð ð ‰ˆˆ1Ý˜1�gˆˆ%�Œ(‰ˆÝ�c�!‰fŒf‰Œ€AØ—’‘”ð 'ð '‰ˆˆ1Øð 	'ð 	'‰EˆAˆrØ%&ˆAˆe�AŒh˜˜bœ	Ð!Ñ"Ð"ð	'å�4˜˜D " a¨¨AÑ.Ô.Ð.r_   c           
      óÖ  — t          d¦  «        }| j        �r%d„ | j        D ¦   «         }d„ | j        D ¦   «         }t          t	          |Ž z  |t	          |Ž z  z
  }t          |t          ¦  «        } |j        ¦   «         }g }t          |¦  «        }t          |¦  «        D ]e}	| j        d         |	z   }
|t          |
gt          | j        dd…         ¦  «        z   | j        |¦  «        gz  }|	|dz
  k     r|
 ||	|	f<   |
||	|	dz   f<   Œft          |¦  «        }t          dgdg|dz
  z  z   g¦  «        }t          |¦  «        g}t          |¦  «        D ] }	|                     |||	         z  ¦  «         Œ! |j        ¦   «         }|                     ¦   «          dg|z  }t!          |¦  «        D ]6\  }	}t!          |||	         z  ¦  «        D ]\  }}||xx         ||z  z  cc<   ŒŒ7t!          |¦  «        D ]=\  }	}| ||dz
           d|dz
  f         z   |j        ¦   «         d         z  ||dz
  |	f<   Œ>t#          | |dg |||¦  «        S g }t          | j        dd…         ¦  «        }t          t%          |¦  «        ¦  «        D ]'}|t          g ||¦  «        gz  }||xx         dz  cc<   Œ(|t          g ||¦  «        gz  }t          |¦  «        }t%          |¦  «        }t          dgdg|dz
  z  z   g¦  «        }t          |¦  «        }|t	          | j        Ž z  |d|dz
  f<   t          d|¦  «        D ]0}	| j        |	dz
           ||	|	dz
  f<   | j        |	dz
            ||	|	f<   Œ1t#          | |dg |||¦  «        S )zU
    Create a formula object representing the hypergeometric function ``func``.

    ro   c                 ó"   — g | ]}t           |z   ‘ŒS rv   r)  r+  s     r]   r    z0build_hypergeometric_formula.<locals>.<listcomp>K  s   € Ð,Ð,Ð,˜q•B˜‘FÐ,Ð,Ð,r_   c                 ó(   — g | ]}t           |z   d z
  ‘ŒS r-  r)  r.  s     r]   r    z0build_hypergeometric_formula.<locals>.<listcomp>L  s    € Ð0Ð0Ð0 1•B˜‘F˜Q‘JÐ0Ð0Ð0r_   r   rX   N)r	   rh   ri   r*  r   rQ   r/  rN   r  r?   r©   rL   rM   rf   r1  r  ro  rg   rÉ   )rk   ro   r4  r5  r´   rP   r6  r  rt   rü  rl   rr   rs   Úderivsrš   rj   r\   r™  rš  ri   rÿ   s                        r]   Úbuild_hypergeometric_formular†  @  s»  € õ 	ˆc‰
Œ
€AØ„wñ -3Ø,Ð, D¤GÐ,Ñ,Ô,ˆØ0Ð0¨¬Ð0Ñ0Ô0ˆÝ•#�x�.Ñ  1¥S¨( ^Ñ#3Ñ3ˆÝ�D�"‰~Œ~ˆØˆDŒK‰MŒMˆØˆÝ�!‰HŒHˆÝ�q‘”ð 	 ð 	 ˆAØ”˜”
˜Q‘ˆAØ•e˜Q˜C¥$ t¤w¨q¨r¨r¤{Ñ"3Ô"3Ñ3°T´W¸aÑ@Ô@ÐAÑAˆEØ�1�q‘5ŠyˆyØ˜"��!�Q�$‘Ø��!�Q˜‘U�(‘øÝ�5‰MŒMˆÝ�Q�C˜1˜#˜q 1™u™+Ñ%Ð&Ñ'Ô'ˆÝ�a‘&”&�ˆÝ�q‘”ð 	'ð 	'ˆAØ�MŠM˜!˜F 1œI™+Ñ&Ô&Ð&Ð&ØˆDŒOÑÔˆØ	�	Š	‰ŒˆØˆc�!‰eˆÝ˜a‘L”Lð 	ð 	‰DˆAˆqÝ! ! F¨1¤I¡+Ñ.Ô.ð ð ‘��1Ø�A��”˜!˜A™#‘��‘�ðå˜c‘N”Nð 	Jð 	J‰DˆAˆqØ˜"˜V A¨¡Eœ]¨1¨a°!©e¨8Ô4Ñ4°_°T´_Ñ5FÔ5FÀqÔ5IÑIˆAˆa�!‰e�Qˆh‰KˆKÝ�t˜Q  b¨!¨Q°Ñ2Ô2Ð2ð ˆÝ�$”'˜!˜!˜!”*ÑÔˆÝ•s˜2‘w”w‘”ð 	ð 	ˆAØ•e˜B  AÑ&Ô&Ð'Ñ'ˆEØˆqˆEˆEŒE�Q‰JˆEˆE‰EˆEØ•%˜˜B Ñ"Ô"Ð#Ñ#ˆÝ�5‰MŒMˆÝ�‰FŒFˆÝ�Q�C˜1˜#˜q 1™u™+Ñ%Ð&Ñ'Ô'ˆÝ�!‰HŒHˆØ�˜TœW˜‘oˆˆ!ˆQ�‰Uˆ(‰Ý�q˜!‘”ð 	&ð 	&ˆAØœ' ! a¡%œ.ˆAˆa��Q‘ˆh‰KØ”w˜q 1™u”~�oˆAˆa�ˆd‰GˆGÝ�t˜Q  b¨!¨Q°Ñ2Ô2Ð2r_   c                 ó¢  — t          | ¦  «        t          |¦  «        }}|}t          |¦  «        }|dk    rt          j        S ddlm} |dk    �rq|dk    �rj| |z   \  }}}	|dk    rKt          |	|z
  |z
  ¦  «        t          |	¦  «        z  t          |	|z
  ¦  «        z  t          |	|z
  ¦  «        z  S |dk    r |||z
  |	z   ¦  «        dk    r||}}|dk    rë |||z
  |	z   ¦  «        dk    rÖ|j        rx|j        rqdt          t          |z  dz  ¦  «        z  t          | ¦  «        z  t          ||z
  dz   ¦  «        z  t          | dz  ¦  «        z  t          |dz  |z
  dz   ¦  «        z  S t          |dz  dz   ¦  «        t          ||z
  dz   ¦  «        z  t          |dz   ¦  «        z  t          |dz  |z
  dz   ¦  «        z  S t          | ||¦  «        S )zå
    Try to find a closed-form expression for hyper(ap, bq, z), where ``z``
    is supposed to be a "special" value, e.g. 1.

    This function tries various of the classical summation formulae
    (Gauss, Saalschuetz, etc).
    r   ©r–   rw   rX   rx   )rÉ   r>   r   rŠ   Úsympy.simplify.simplifyr–   r#   rÎ   rÏ   r!   r   r?   )
rh   ri   ro   rŸ  ÚqÚz_r–   rl   rm   r\   s
             r]   Úhyperexpand_specialrŒ  z  sô  € õ ˆr‰7Œ7•C˜‘G”G€q€AØ	
€BÝ�1‰Œ€AØˆA‚v€vÝŒuˆØ0Ð0Ð0Ð0Ð0Ð0ØˆA‚v�v�!�q’&‘&à�r‘'‰ˆˆ1ˆaØ�Š6ˆ6å˜˜Q™ ™Ñ#Ô#¥E¨!¡H¤HÑ,­U°1°q±5©\¬\Ñ9½%ÀÀAÁ¹,¼,ÑFÐFØ�Š7ˆ7�x�x  A¡¨¡	Ñ*Ô*¨aÒ/Ð/Ø�aˆqˆAØ�Š7ˆ7�x�x  A¡¨¡	Ñ*Ô*¨aÒ/Ð/àŒ|ð 5 ¤ð 5Ø��R ™T !™V™œ‘}¥U¨A¨2¡Y¤YÑ.­u°Q¸±U¸Q±YÑ/?Ô/?Ñ?Ý˜A˜2˜a™4‘[”[ñ!Ý!& q¨¡s¨Q¡w°¡{Ñ!3Ô!3ñ4ð 4õ ˜Q˜q™S 1™W‘~”~¥e¨A°©E°A©IÑ&6Ô&6Ñ6Ý˜1˜q™5‘\”\ñ"Ý"'¨¨!©¨a©°!©Ñ"4Ô"4ñ5ð 5õ ��R˜ÑÔÐr_   NÚz0rX   Údefaultc                 óÖ  ‡‡‡‡‡‡— ‰j         rt          j        S ddlm} t          ‰d¬¦  «        Š‰dk    rdŠˆˆˆˆˆˆfd„}t          €t          ¦   «         at          d	| ¦  «         t          | ¦  «        \  } }	|	rt          d
| ¦  «         nt          d¦  «         t          | ‰¦  «        }
|
�ft          d¦  «         t          |
|	ˆfd„¦  «        }t          |‰z  ‰ˆfd„¦  «        }t           ||¦  «                             ‰‰¦  «        ¦  «        S t          j        }t          | ‰¦  «        }
|
�|
\  } }}t          d| ¦  «         |	|z  }	t          ||	ˆfd„¦  «        }t          |‰z  ‰ˆfd„¦  «        } ||¦  «                             ‰‰¦  «        }t          ‰¦  «        dv r„t!          | j        ¦  «        t!          | j        ¦  «        fdk    rXt'          | ¦  «        } |||	¦  «                             t*          t,          ¦  «        }|                     t*          ¦  «        s||z   S t                               | ¦  «        }|€t3          | ¦  «        }|€t          dd¦  «         t'          | ¦  «        }t          d|j        d|j        ¦  «         |	t9          | |j        ‰¦  «        z  }	 |||	¦  «        |z   }t;          |d¬¦  «                             t*          t,          ¦  «        S )a7  
    Try to find an expression for the hypergeometric function ``func``.

    Explanation
    ===========

    The result is expressed in terms of a dummy variable ``z0``. Then it
    is multiplied by ``premult``. Then ``ops0`` is applied.
    ``premult`` must be a*z**prem for some a independent of ``z``.
    r   rˆ  F)r}  rŽ  Únonrepsmallc                 ó¾  •— t          | j                             | j        ‰
¦  «        |t	          | j                             | j        ‰
¦  «        ‰
¦  «        ¦  «        }t          |‰t	          | j                             | j        ‰
¦  «        ‰t          | j        j        d         ¦  «        z  z   ‰
¦  «        ¦  «        }‰dk    r"|                     t          ‰
¦  «        ¦  «        }t          d„ t          || j                             | j        ‰
¦  «        ¦  «        t          j        ¦  «        ‰z  }|                     ‰
‰	¦  «        }‰r|                     ‰¦  «        }|S )Nr   rX   c                 ó*   — | |d         |d         z  z   S r@  rv   rA  s     r]   rà   z5_hyperexpand.<locals>.carryout_plan.<locals>.<lambda>Á  s   € ˜q  1¤ a¨¤d¡™{€ r_   )r  rs   r}  ro   r  rt   rM   Úshaper  r¸   r   r÷   rr   r   r¡   Úrewrite)rv  r  rs   r™  rj   Úops0ÚpremÚpremultr”  ro   r�  s        €€€€€€r]   Úcarryout_planz#_hyperexpand.<locals>.carryout_plan¸  s+  ø€ Ý˜AœCŸHšH Q¤S¨"Ñ-Ô-¨sÝ4°Q´S·X²X¸a¼cÀ2Ñ5FÔ5FÈÑKÔKñMô Mˆå˜A˜tÝ4°Q´S·X²X¸a¼cÀ2Ñ5FÔ5FØ+/µ°A´C´I¸a´LÑ0AÔ0AÑ+Añ6BØCEñGô GñHô Hˆð �aŠ<ˆ<Ø—’�I b™MœMÑ*Ô*ˆAÝÐ*Ð*­C°°1´3·8²8¸A¼CÀÑ3DÔ3DÑ,EÔ,EÅqÄvÑNÔNÈwÑVˆØ�fŠf�R˜‰mŒmˆØð 	'Ø—+’+˜gÑ&Ô&ˆCØˆ
r_   Nz)Trying to expand hypergeometric function ú  Reduced order to ú  Could not reduce order.z  Recognised polynomial.c                 ó4   •— ‰|                       ‰¦  «        z  S rc   ©rû   ©rv  r�  s    €r]   rà   z_hyperexpand.<locals>.<lambda>Ý  s   ø€ °°1·6²6¸"±:´:±€ r_   c                 ó4   •— ‰|                       ‰¦  «        z  S rc   rœ  r�  s    €r]   rà   z_hyperexpand.<locals>.<lambda>Þ  s   ø€ °r¸!¿&º&À¹*¼*±}€ r_   z+  Recognised shifted sum, reduced order to c                 ó4   •— ‰|                       ‰¦  «        z  S rc   rœ  r�  s    €r]   rà   z_hyperexpand.<locals>.<lambda>ê  s   ø€ ¨"¨Q¯VªV°B©Z¬Z©-€ r_   c                 ó4   •— ‰|                       ‰¦  «        z  S rc   rœ  r�  s    €r]   rà   z_hyperexpand.<locals>.<lambda>ë  s   ø€ °2°a·f²f¸R±j´j±=€ r_   )rX   rx   )rw   rX   z  Could not find an origin. z@Will return answer in terms of simpler hypergeometric functions.z  Found an origin: ú T©Úpolar)Úis_zeror   rŠ   r‰  r–   r=   Ú_collectionrq  r¾   r  r_  r  r>   r}  r¡   rS  rÉ   rh   ri   r†  Úreplacer?   rŒ  r<  r‚  r�  r3  rk   rB  rS   )rk   ro   r•  r�  r—  r–  r”  r–   r˜  r  rj   rŸ  Únopsrv  r™  r�  s    ``````         r]   Ú_hyperexpandr¨  ¢  sF  øøøøøø€ ð 	„yð ÝŒuˆà0Ð0Ð0Ð0Ð0Ð0å�˜ÐÑÔ€AØ�)ÒÐØˆðð ð ð ð ð ð ð ð ð õ* ÐÝ'Ñ)Ô)ˆå	Ð
5°tÑ<Ô<Ð<õ ˜TÑ"Ô"�I€Dˆ#Ø
ð +ÝÐ# TÑ*Ô*Ð*Ð*åÐ)Ñ*Ô*Ð*õ ˜˜rÑ
"Ô
"€CØ
€ÝÐ(Ñ)Ô)Ð)Ý˜C Ð&=Ð&=Ð&=Ð&=Ñ>Ô>ˆÝ˜A˜g™I tÐ-DÐ-DÐ-DÐ-DÑEÔEˆÝ˜(˜( 1™+œ+×*Ò*¨2¨qÑ1Ô1Ñ2Ô2Ð2õ 	
Œ€AÝ
˜$ Ñ
#Ô
#€CØ
€Ø‰ˆˆd�AÝÐ;¸TÑBÔBÐBØˆt‰ˆõ 	˜˜3Ð 7Ð 7Ð 7Ð 7Ñ8Ô8€AÝ˜˜'™	 4Ð)@Ð)@Ð)@Ð)@ÑAÔA€AØˆ�‰Œ×Ò˜˜QÑÔ€Aõ �!�}„}˜ÐÐ¥S¨¬¡\¤\µ3°t´w±<´<Ð$@ÀFÒ$JÐ$JÝ(¨Ñ.Ô.ˆØˆM˜!˜SÑ!Ô!×)Ò)­%Õ1DÑEÔEˆØ�uŠu•U‰|Œ|ð 	Ø�q‘5ˆLõ ×'Ò'¨Ñ-Ô-€Gð €Ý˜tÑ$Ô$ˆà€ÝÐ,ð2ñ	3ô 	3ð 	3õ /¨tÑ4Ô4ˆå	Ð
 Ô!4°c¸7¼<ÑHÔHÐHð �;�t˜Wœ\¨2Ñ.Ô.Ñ.€Cð 	ˆ�g˜sÑ#Ô# aÑ'€Aå�Q˜dÐ#Ñ#Ô#×+Ò+­EÕ3FÑGÔGÐGr_   c           	      ó0  ‡‡‡‡	‡
— d„ }t          | j        ¦  «        Št          | j        ¦  «        Št          | j        ¦  «        Š	t          | j        ¦  «        Š
g }d}|�r3d} |‰|j        ˆˆˆ	ˆ
ˆfd„d‰	‰
z   ¦  «        }|�	||gz  }d}Œ. |‰|j        ˆˆˆ	ˆ
ˆfd„d‰	‰
z   ¦  «        }|�	||gz  }d}ŒW |‰	|j        ˆˆˆ	ˆ
ˆfd„d	‰‰z   ¦  «        }|�	||gz  }d}Œ€ |‰
|j        ˆˆˆ	ˆ
ˆfd
„d	‰‰z   ¦  «        }|�	||gz  }d}Œ© |‰|j        ˆfd„d	g ¦  «        }|�	||gz  }d}ŒË |‰|j        ˆfd„d	g ¦  «        }|�	||gz  }d}Œí |‰	|j        ˆ	fd„dg ¦  «        }|�
||gz  }d}�Œ |‰
|j        ˆ
fd„dg ¦  «        }|�
||gz  }d}�Œ3|�°3‰t          |j        ¦  «        k    sH‰t          |j        ¦  «        k    s0‰	t          |j        ¦  «        k    s‰
t          |j        ¦  «        k    rt          d¦  «        ‚|                     ¦   «          |S )a  
    Find operators to convert G-function ``fro`` into G-function ``to``.

    Explanation
    ===========

    It is assumed that ``fro`` and ``to`` have the same signatures, and that in fact
    any corresponding pair of parameters differs by integers, and a direct path
    is possible. I.e. if there are parameters a1 b1 c1  and a2 b2 c2 it is
    assumed that a1 can be shifted to a2, etc. The only thing this routine
    determines is the order of shifts to apply, nothing clever will be tried.
    It is also assumed that ``fro`` is suitable.

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import (devise_plan_meijer,
    ...                                         G_Function)
    >>> from sympy.abc import z

    Empty plan:

    >>> devise_plan_meijer(G_Function([1], [2], [3], [4]),
    ...                    G_Function([1], [2], [3], [4]), z)
    []

    Very simple plans:

    >>> devise_plan_meijer(G_Function([0], [], [], []),
    ...                    G_Function([1], [], [], []), z)
    [<Increment upper a index #0 of [0], [], [], [].>]
    >>> devise_plan_meijer(G_Function([0], [], [], []),
    ...                    G_Function([-1], [], [], []), z)
    [<Decrement upper a=0.>]
    >>> devise_plan_meijer(G_Function([], [1], [], []),
    ...                    G_Function([], [2], [], []), z)
    [<Increment lower a index #0 of [], [1], [], [].>]

    Slightly more complicated plans:

    >>> devise_plan_meijer(G_Function([0], [], [], []),
    ...                    G_Function([2], [], [], []), z)
    [<Increment upper a index #0 of [1], [], [], [].>,
    <Increment upper a index #0 of [0], [], [], [].>]
    >>> devise_plan_meijer(G_Function([0], [], [0], []),
    ...                    G_Function([-1], [], [1], []), z)
    [<Increment upper b=0.>, <Decrement upper a=0.>]

    Order matters:

    >>> devise_plan_meijer(G_Function([0], [], [0], []),
    ...                    G_Function([1], [], [1], []), z)
    [<Increment upper a index #0 of [0], [], [1], [].>, <Increment upper b=0.>]
    c                 óô   ‡— t          t          | |¦  «        ¦  «        D ]X\  }\  Š}‰|z
  j        rF|‰z
  |z  dk    r:t          ˆfd„|D ¦   «         ¦  «        r ||¦  «        }| |xx         |z  cc<   |c S ŒYdS )aD   Try to apply ``shifter`` in order to bring some element in ``f``
            nearer to its counterpart in ``to``. ``diff`` is +/- 1 and
            determines the effect of ``shifter``. Counter is a list of elements
            blocking the shift.

            Return an operator if change was possible, else None.
        r   c              3   ó$   •K  — | ]
}‰|k    V — Œd S rc   rv   )rž   r[   rl   s     €r]   rÑ   z8devise_plan_meijer.<locals>.try_shift.<locals>.<genexpr>R  s'   øè è € Ð0Ð0 1˜˜QšÐ0Ð0Ð0Ð0Ð0Ð0r_   N)ro  r÷   rÎ   r]  )	rv  rŸ   Úshifterrû   ÚcounterÚidxrm   r'  rl   s	           @r]   Ú	try_shiftz%devise_plan_meijer.<locals>.try_shiftG  s©   ø€ õ %¥S¨¨A¡Y¤YÑ/Ô/ð 	ð 	‰KˆC‘�!�Qà�Q‘Ô"ðØ()¨A©¨t¡|°aÒ'7Ð'7ÝÐ0Ð0Ð0Ð0¨Ð0Ñ0Ô0Ñ0Ô0ð (8à�W˜S‘\”\�Ø�#��”˜$‘��‘Ø�	�	�	øð	ð 	r_   TFc                 ó,   •— t          ‰‰‰‰| ‰¦  «        S rc   )rè  ©rÿ   ÚfanÚfapÚfbmÚfbqro   s    €€€€€r]   rà   z$devise_plan_meijer.<locals>.<lambda>_  ó   ø€ ¥°°S¸#¸sÀAÀqÑ!IÔ!I€ r_   rX   Nc                 ó,   •— t          ‰‰‰‰| ‰¦  «        S rc   )rò  r±  s    €€€€€r]   rà   z$devise_plan_meijer.<locals>.<lambda>f  r¶  r_   c                 ó,   •— t          ‰‰‰‰| ‰¦  «        S rc   )rÙ  r±  s    €€€€€r]   rà   z$devise_plan_meijer.<locals>.<lambda>m  r¶  r_   rx   c                 ó,   •— t          ‰‰‰‰| ‰¦  «        S rc   )rî  r±  s    €€€€€r]   rà   z$devise_plan_meijer.<locals>.<lambda>t  r¶  r_   c                 ó.   •— t          ‰|          ¦  «        S rc   )rÍ  )rÿ   r²  s    €r]   rà   z$devise_plan_meijer.<locals>.<lambda>z  ó   ø€ ­\¸#¸a¼&Ñ-AÔ-A€ r_   c                 ó.   •— t          ‰|          ¦  «        S rc   )rÕ  )rÿ   r³  s    €r]   rà   z$devise_plan_meijer.<locals>.<lambda>  r»  r_   c                 ó.   •— t          ‰|          ¦  «        S rc   )rÈ  )rÿ   r´  s    €r]   rà   z$devise_plan_meijer.<locals>.<lambda>„  r»  r_   c                 ó.   •— t          ‰|          ¦  «        S rc   )rÑ  )rÿ   rµ  s    €r]   rà   z$devise_plan_meijer.<locals>.<lambda>‰  r»  r_   zCould not devise plan.)r©   r’   rh   r“   ri   ri  r  )r#  r$  ro   r¯  r  Úchanger–  r²  r³  r´  rµ  s     `    @@@@r]   Údevise_plan_meijerrÀ    s  øøøøø€ ðtð ð õ ˆsŒv‰,Œ,€CÝ
ˆsŒv‰,Œ,€CÝ
ˆsŒv‰,Œ,€CÝ
ˆsŒv‰,Œ,€CØ
€CØ€FØ
ñ 1ØˆØˆY�s˜BœEØIÐIÐIÐIÐIÐIÐIÐIØ˜# ™)ñ%ô %ˆð ˆ>Ø�B�4‰KˆCØˆFØØˆY�s˜BœEØIÐIÐIÐIÐIÐIÐIÐIØ˜# ™)ñ%ô %ˆð ˆ>Ø�B�4‰KˆCØˆFØØˆY�s˜BœEØIÐIÐIÐIÐIÐIÐIÐIØ˜3 ™9ñ&ô &ˆð ˆ>Ø�B�4‰KˆCØˆFØØˆY�s˜BœEØIÐIÐIÐIÐIÐIÐIÐIØ˜3 ™9ñ&ô &ˆð ˆ>Ø�B�4‰KˆCØˆFØØˆY�s˜BœEÐ#AÐ#AÐ#AÐ#AÀ2ÀrÑJÔJˆØˆ>Ø�B�4‰KˆCØˆFØØˆY�s˜BœEÐ#AÐ#AÐ#AÐ#AÀ2ÀrÑJÔJˆØˆ>Ø�B�4‰KˆCØˆFØØˆY�s˜BœEÐ#AÐ#AÐ#AÐ#AÀ1ÀbÑIÔIˆØˆ>Ø�B�4‰KˆCØˆFÙØˆY�s˜BœEÐ#AÐ#AÐ#AÐ#AÀ1ÀbÑIÔIˆØˆ>Ø�B�4‰KˆCØˆFÙðc ñ 1ðd �d�2”5‰kŒkÒÐ˜S¥D¨¬¡K¤KÒ/Ð/°3½$¸r¼u¹+¼+Ò3EÐ3EØ•4˜œ‘;”;ÒÐÝ!Ð":Ñ;Ô;Ð;Ø‡K‚K�M„M€MØ€Jr_   Fc           
      óà
  ‡‡‡— t           €t          ¦   «         a |dk    rd}| }t          d| ¦  «         t          d¦  «        }t	          | ¦  «        \  } Š‰rt          d| ¦  «         nt          d¦  «         t                                | ¦  «        }|�ût          d|j        ¦  «         ‰t          |j        | |¦  «        z  Št          |j	         
                    |j        |¦  «        ‰t          |j         
                    |j        |¦  «        |¦  «        ¦  «        }|                     t          |¦  «        ¦  «        }||j         
                    |j        |¦  «        z  }	|	d          
                    ||¦  «        }	t#          |	d	¬
¦  «        S t          d¦  «         d„ Šˆˆˆfd„}
t          d¦  «        Š |
| j        | j        | j        | j        ||¦  «        \  }}d„ }‰D ]F}t-          |j         
                    |d‰z  t0          t0           i¦  «        t0          ¦  «        |_        ŒG |
 || j        ¦  «         || j        ¦  «         || j        ¦  «         || j        ¦  «        ‰d|z  ¦  «        \  }}t#          | 
                    ||¦  «        d	¬
¦  «        }t#          | 
                    ‰d|z  ¦  «        d	¬
¦  «        }t3          |t4          ¦  «        s| 
                    ‰d|z  ¦  «        } | |¦  «        }|j        dk    so|j        dk    rpt9          |j        ¦  «        t9          |j        ¦  «        k    rFt;          |j        ¦  «        dk     dur,t?          |¦  «        t?          d¦  «        k    r|durd	}|durd	}|d	u r|                      |pd¦  «        }n|                      |pd¦  «        }|d	u r|                      |pd¦  «        }n|                      |pd¦  «        }|dur|dur|dk    rd}|tB          k    rd}t3          |t4          ¦  «        s| 
                    ||¦  «        }t3          |t4          ¦  «        s| 
                    ||¦  «        }d„ } |||¦  «        } |||¦  «        }tE          ||¦  «        ddtF          fk    r
||k     r|S |S tI          |d         |d         ¦  «        dk    r@tI          |d         |d         ¦  «        dk    r tK          ||f||f ||¦  «        d	f¦  «        S tK          ||f||f ||¦  «        d	f¦  «        }	|	 &                    tN          ¦  «        r|st          d¦  «         |	 &                    tN          ¦  «        r|r|	S  ||¦  «        S )a‚  
    Try to find an expression for the Meijer G function specified
    by the G_Function ``func``. If ``allow_hyper`` is True, then returning
    an expression in terms of hypergeometric functions is allowed.

    Currently this just does Slater's theorem.
    If expansions exist both at zero and at infinity, ``place``
    can be set to ``0`` or ``zoo`` for the preferred choice.
    NrŽ  z1Try to expand Meijer G function corresponding to ro   r™  rš  z  Found a Meijer G formula: r   Tr¢  z;  Could not find a direct formula. Trying Slater's theorem.c                 ó¶   — | D ]U}t          | |         ¦  «        dk    r:d}||v rt          ||         ¦  «        }|dz   t          | |         ¦  «        k     r dS ŒVdS )z Test if slater applies. rX   r   FTrä   )r  r  rÿ   rš   s       r]   Úcan_doz_meijergexpand.<locals>.can_doÍ  sg   € àð 	!ð 	!ˆAÝ�3�q”6‰{Œ{˜QŠˆØ�Ø˜�8�8Ý˜C œF™œ�AØ�q‘5�3˜s 1œv™;œ;Ò&Ð&Ø ˜5˜5øØˆtr_   c           
      óp  •‡‡%‡&‡'— t          | |||¦  «        }|                     ¦   «         \  }}}	} ‰(||	¦  «        st          j        dfS t	          | ¦  «        t	          |¦  «        z   t	          |¦  «        t	          |¦  «        z   k     }
t	          | ¦  «        t	          |¦  «        z   t	          |¦  «        t	          |¦  «        z   k    rt          ‰¦  «        dk     }
|
du rt          j        dfS t          j        }|D �]4}t	          ||         ¦  «        dk    �rl||         d         Š'd}t          |¦  «        }|                     ‰'¦  «         |D ]}|t          |‰'z
  ¦  «        z  }Œ| D ]}|t          d‰'z   |z
  ¦  «        z  }Œ|D ]}|t          d‰'z   |z
  ¦  «        z  }Œ|D ]}|t          |‰'z
  ¦  «        z  }Œˆ'fd„t          | ¦  «        t          |¦  «        z   D ¦   «         }ˆ'fd„t          |¦  «        t          |¦  «        z   D ¦   «         }t          t          j
        t	          |¦  «        t	          |¦  «        z
  z  ¦  «        }||z  }‰*|z  ‰'z  }t          t          ||¦  «        |‰)‰*|‰'d ¬¦  «        }|||z  z  }�Œ‰||         d         Š&ˆ&fd„||         dd …         D ¦   «         }t	          |¦  «        }ˆ&fd„|	|         d |dz   …         D ¦   «         }t          |¦  «        }||         D ]}|                     |¦  «         Œt          |¦  «        }|	|         d |…         D ]}|                     |¦  «         Œ|d	         }d
„ t          ||¦  «        D ¦   «         }t          d¦  «        }‰|z  } |D ]J}t          |d¦  «        s#|j        rt#          t%          |¦  «        ¦  «        }| t          ||z
  ¦  «        z  } ŒK| D ]}| t          d|z
  |z   ¦  «        z  } Œ|D ]}| t          d|z
  |z   ¦  «        z  } Œ|D ]}| t          ||z
  ¦  «        z  } Œt'          | ¦  «        } t)          t#          t%          |¦  «        ¦  «        ¦  «        D ]/}!t+          | |‰&|!z   ¦  «        }"t-          |"‰)ˆfd„¦  «        }"||"z  }Œ0‰&|z   Š%t          t          j
        t	          |¦  «        t	          |¦  «        z   dz   z  ¦  «        }||z  }‰*|z  ‰%z  }ˆ%fd„t          | ¦  «        t          |¦  «        z   D ¦   «         dgz   }ˆ%fd„t          |¦  «        t          |¦  «        z   D ¦   «         }t          t          ||¦  «        |‰)‰*|‰%d ¬¦  «        }t          j
        |z  t/          |¦  «        z  }#t)          |¦  «        D ]=}$|#t          j
        ||$         z  t1          |||$         z
  dz   ||$         ¦  «        z  z  }#Œ>| D ]}|#t          d|z
  ‰%z   ¦  «        z  }#Œ|D ]}|#t          |‰%z
  ¦  «        z  }#Œ|D ]}|#t          |‰%z
  ¦  «        z  }#Œ|D ]}|#t          d|z
  ‰%z   ¦  «        z  }#Œ||#|z  z  }�Œ6||
fS )NFrX   r   c                 ó    •— g | ]
}d ‰z   |z
  ‘ŒS r-  rv   )rž   rl   Úbhs     €r]   r    z5_meijergexpand.<locals>.do_slater.<locals>.<listcomp>õ  ó!   ø€ Ð?Ð?Ð? a�q˜2‘v ‘zÐ?Ð?Ð?r_   c                 ó    •— g | ]
}d ‰z   |z
  ‘ŒS r-  rv   )rž   rm   rÆ  s     €r]   r    z5_meijergexpand.<locals>.do_slater.<locals>.<listcomp>ö  rÇ  r_   ©r”  c                 ó   •— g | ]}|‰z
  ‘ŒS rv   rv   )rž   r­  Úb_s     €r]   r    z5_meijergexpand.<locals>.do_slater.<locals>.<listcomp>	  s   ø€ Ð3Ð3Ð3 "�b˜2‘gÐ3Ð3Ð3r_   c                 ó   •— g | ]}|‰z
  ‘ŒS rv   rv   )rž   r¤  rË  s     €r]   r    z5_meijergexpand.<locals>.do_slater.<locals>.<listcomp>	  s   ø€ Ð7Ð7Ð7 "�b˜2‘gÐ7Ð7Ð7r_   rx   c                 ó   — g | ]
\  }}||z
  ‘ŒS rv   rv   )rž   rš   rü  s      r]   r    z5_meijergexpand.<locals>.do_slater.<locals>.<listcomp>	  s    € Ð6Ð6Ð6¡  A�a˜!‘eÐ6Ð6Ð6r_   r«   c                 ó4   •— ‰|                       ‰¦  «        z  S rc   rœ  )rv  ro   s    €r]   rà   z3_meijergexpand.<locals>.do_slater.<locals>.<lambda>!	  s   ø€ À!ÀAÇFÂFÈ1ÁIÄIÁ+€ r_   c                 ó    •— g | ]
}d ‰z   |z
  ‘ŒS r-  rv   )rž   rl   Úaus     €r]   r    z5_meijergexpand.<locals>.do_slater.<locals>.<listcomp>)	  rÇ  r_   c                 ó    •— g | ]
}d ‰z   |z
  ‘ŒS r-  rv   )rž   rm   rÐ  s     €r]   r    z5_meijergexpand.<locals>.do_slater.<locals>.<listcomp>*	  rÇ  r_   )r—   r#  r   r¡   rÉ   rø   r©   rQ  r#   r2   ÚNegativeOner¨  re   r÷   r	   r   rY   ÚintÚroundr   r  rR   r  r7   r6   )+r’   r“   rh   ri   ro   Úzfinalrk   r7  r  r  Úcondrj   r"  rR  Úborû  Úajr
  r  rü  Úhargr—  ÚhypÚkir¢   Úlirm   Úaorl   ÚluÚdir«   Ú	integrandr™  Úresidrs   rÿ   rÐ  rË  rÆ  rÃ  r  rŸ   s+       `                                @@@€€€r]   Ú	do_slaterz!_meijergexpand.<locals>.do_slaterØ  sÎ  øøøøø€ õ ˜"˜b " bÑ)Ô)ˆØ×-Ò-Ñ/Ô/‰ˆˆ3��QØˆv�c˜3ÑÔð 	!Ý”6˜5�=Ð å�2‰wŒw�˜R™œÑ ¥3 r¡7¤7­S°©W¬WÑ#4Ò4ˆÝˆr‰7Œ7•S˜‘W”WÑ¥ B¡¤­#¨b©'¬'Ñ 1Ò1Ð1Ý�q‘6”6˜A’:ˆDØ�5ˆ=ˆ=Ý”6˜5�=Ð åŒfˆØð T	ñ T	ˆAÝ�3�q”6‰{Œ{˜aÒÑØ˜”V˜A”Y�Ø�Ý˜"‘X”X�Ø—	’	˜"‘”�Øð *ð *�BØ�5  b¡™>œ>Ñ)�C�CØð .ð .�BØ�5  R¡¨"¡Ñ-Ô-Ñ-�C�CØð .ð .�BØ�5  R¡¨"¡Ñ-Ô-Ñ-�C�CØð *ð *�BØ�5  b¡™>œ>Ñ)�C�CØ?Ð?Ð?Ð?­4°©8¬8µd¸2±h´hÑ+>Ð?Ñ?Ô?�Ø?Ð?Ð?Ð?­4°©8¬8µd¸2±h´hÑ+>Ð?Ñ?Ô?�å�qœ}­s°2©w¬w½¸R¹¼Ñ/@ÑAÑBÔB�Ø˜‘x�ð ˜Q™3 ™)�Ý"¥>°#°sÑ#;Ô#;¸TÀ3Ø#$ g¨r¸4ðAñ Aô A�à�s˜S‘yÑ �‘à˜”V˜A”Y�Ø3Ð3Ð3Ð3¨¨A¬¨q¨r¨r¬
Ð3Ñ3Ô3�Ý˜‘G”G�Ø7Ð7Ð7Ð7¨¨A¬¨v°°A±¨v¬Ð7Ñ7Ô7�Ý˜"‘X”X�Ø˜Qœð !ð !�AØ—I’I˜a‘L”L�L�LÝ˜"‘X”X�Ø˜Qœ   œð !ð !�AØ—I’I˜a‘L”L�L�LØ˜”V�Ø6Ð6­#¨b°"©+¬+Ð6Ñ6Ô6�õ ˜#‘J”J�Ø˜q™D�	Øð .ð .�AÝ˜q !™9œ9ð *¨¬ð *Ý¥ a¡¤™MœM˜Ø¥ q¨1¡u¡¤Ñ-�I�IØð 2ð 2�AØ¥ q¨1¡u¨q¡yÑ!1Ô!1Ñ1�I�IØð 2ð 2�AØ¥ q¨1¡u¨q¡yÑ!1Ô!1Ñ1�I�IØð .ð .�AØ¥ q¨1¡u¡¤Ñ-�I�Iõ (¨	Ñ2Ô2�	Ý�s¥5¨¡9¤9™~œ~Ñ.Ô.ð !ð !�AÝ# I¨q°"°q±&Ñ9Ô9�EÝ+¨E°3Ð8MÐ8MÐ8MÐ8MÑNÔN�EØ˜5‘L�C�Cð ˜"‘W�Ý�qœ}­s°2©w¬w½¸R¹¼Ñ/@À1Ñ/DÑEÑFÔF�Ø˜‘x�Ø˜Q™3 ™)�Ø?Ð?Ð?Ð?­4°©8¬8µd¸2±h´hÑ+>Ð?Ñ?Ô?À1À#ÑE�Ø?Ð?Ð?Ð?­4°©8¬8µd¸2±h´hÑ+>Ð?Ñ?Ô?�å"¥>°#°sÑ#;Ô#;¸TÀ3Ø#$ g¨r¸4ðAñ Aô A�õ ”M BÑ'­	°"©¬Ñ5�Ý˜q™œð Hð H�AØ�œ¨¨1¬Ñ-­b°°b¸´e±¸a±ÀÀAÄÑ.GÔ.GÑGÑG�A�AØð +ð +�AØ�˜q 1™u r™zÑ*Ô*Ñ*�A�AØð 'ð '�AØ�˜q 2™v™œÑ&�A�AØð 'ð '�AØ�˜q 2™v™œÑ&�A�AØð +ð +�AØ�˜q 1™u r™zÑ*Ô*Ñ*�A�Aà�q˜‘u‘�‘à�DˆyÐr_   rŸ   c                 ó   — d„ | D ¦   «         S )Nc                 ó   — g | ]}d |z
  ‘ŒS r-  rv   rÐ   s     r]   r    z._meijergexpand.<locals>.tr.<locals>.<listcomp>C	  s   € Ð!Ð!Ð!˜!��A‘Ð!Ð!Ð!r_   rv   )rš   s    r]   rì   z_meijergexpand.<locals>.trB	  s   € Ø!Ð!˜qÐ!Ñ!Ô!Ð!r_   rX   rx   FÚnonrepr�  c                 óÞ   — |du rd}n	|du rd}nd}|                       t          t          t           t          ¦  «        rd}||                      t
          ¦  «        |                      ¦   «         fS )NTr   FrX   rw   rz   )r<  r   r   r   Úcountr?   Ú	count_ops)r´   rÖ  Úc0s      r]   Úweightz_meijergexpand.<locals>.weightr	  sm   € Ø�4ˆ<ˆ<ØˆBˆBØ�Uˆ]ˆ]ØˆBˆBàˆBØ�8Š8•B��b˜S¥#Ñ&Ô&ð 	ð ˆBØ�D—J’J�uÑ%Ô% t§~¢~Ñ'7Ô'7Ð8Ð8r_   z@  Could express using hypergeometric functions, but not allowed.)(Ú_meijercollectionrŽ  r¾   r	   r  r‚  rk   rÀ  r  rs   r}  ro   r  rt   r  r¸   rr   rS   r’   r“   rh   ri   rQ   r•  r*  rÜ   rÍ   ÚdeltarÉ   r:   Únur2   r”  r   r]  r   r^  r9   r<  r?   )rk   r�  Úallow_hyperr”  ÚplaceÚfunc0ro   rv  rs   r™  râ  Úslater1Úcond1rì   r–  Úslater2Úcond2r"  rê  Úw1Úw2rÃ  r  rŸ   s                        @@@r]   Ú_meijergexpandr÷  —  s¹  øøø€ õ Ð Ý3Ñ5Ô5ÐØ�)ÒÐØˆà€EÝ	Ð
=¸tÑDÔDÐDõ 	ˆc‰
Œ
€Aå# DÑ)Ô)�I€Dˆ#Ø
ð +ÝÐ# TÑ*Ô*Ð*Ð*åÐ)Ñ*Ô*Ð*õ 	×'Ò'¨Ñ-Ô-€AØ€}ÝÐ,¨a¬fÑ5Ô5Ð5ØÕ! !¤&¨$°Ñ2Ô2Ñ2ˆõ ˜AœCŸHšH Q¤S¨!Ñ,Ô,¨cÝ4°Q´S·X²X¸a¼cÀ1Ñ5EÔ5EÀqÑIÔIñKô Kˆð �KŠK�	 !™œÑ%Ô%ˆØˆaŒc�hŠh�q”s˜AÑÔÑˆØˆaŒD�IŠI�a˜ÑÔˆÝ˜ $Ð'Ñ'Ô'Ð'å	Ð
GÑHÔHÐHð	ð 	ð 	ðeð eð eð eð eð eð eõN 	ˆc‰
Œ
€AØ�Y˜tœw¨¬°´¸$¼'À1ÀbÑIÔI�N€GˆUð"ð "ð "ð ð >ð >ˆÝ˜œŸš q¨!¨A©#­rµB°3Ð&7Ñ8Ô8½"Ñ=Ô=ˆŒˆØ�Y˜r˜r $¤'™{œ{¨B¨B¨t¬w©K¬K¸¸¸D¼G¹¼ÀbÀbÈÌÁkÄkØ  ! B¡$ñ(ô (�N€GˆUõ ˜Ÿš Q¨Ñ+Ô+°4Ð8Ñ8Ô8€GÝ˜Ÿš Q¨¨"©Ñ-Ô-°TÐ:Ñ:Ô:€GÝ�e�TÑ"Ô"ð #Ø—
’
˜1˜a ™cÑ"Ô"ˆàˆˆQ‰Œ€AØ„w�‚{€{Ø	
Œ�AŠˆ�#˜aœd™)œ)¥s¨1¬4¡y¤yÒ0Ð0Ý�”‰XŒX˜Š] 5Ð(Ð(­Z¸©^¬^½zÈ!¹}¼}Ò-LÐ-Lð ˜ÐÐØˆEØ˜ÐÐØˆEà�€}€}Ø—/’/ 'Ð"5¨XÑ6Ô6ˆˆà—/’/ 'Ð":¨]Ñ;Ô;ˆØ�€}€}Ø—/’/ 'Ð"5¨XÑ6Ô6ˆˆà—/’/ 'Ð":¨]Ñ;Ô;ˆà�EÐÐ˜e¨5Ð0Ð0à�AŠ:ˆ:ØˆEØ•CŠ<ˆ<ØˆEå�e�TÑ"Ô"ð "Ø—
’
˜1˜bÑ!Ô!ˆÝ�e�TÑ"Ô"ð "Ø—
’
˜1˜bÑ!Ô!ˆð9ð 9ð 9ð 
ˆ�˜Ñ	Ô	€BØ	ˆ�˜Ñ	Ô	€BÝ
ˆ2ˆr�{„{�q˜!�R�jÒ Ð Ø�Š7ˆ7ØˆNàˆNÝ
ˆ2ˆaŒ5�"�Q”%ÑÔ˜AÒÐ¥# b¨¤e¨R°¬UÑ"3Ô"3°qÒ"8Ð"8Ý˜' 5Ð)¨G°UÐ+;¸e¸eÀB¹i¼iÈÐ=NÑOÔOÐOõ
 	�7˜EÐ" W¨eÐ$4°u°u¸R±y´yÀ$Ð6GÑHÔH€AØ‡u‚u�U�|„|ð "˜Kð "Ýð !ñ 	"ô 	"ð 	"à�5Š5•‰<Œ<ð ˜;ð Øˆàˆ5�‰9Œ9Ðr_   c                 ó¦   ‡‡‡— t          | ¦  «        } ˆfd„}ˆˆˆfd„}|                      t          |¦  «                             t          |¦  «        S )aø  
    Expand hypergeometric functions. If allow_hyper is True, allow partial
    simplification (that is a result different from input,
    but still containing hypergeometric functions).

    If a G-function has expansions both at zero and at infinity,
    ``place`` can be set to ``0`` or ``zoo`` to indicate the
    preferred choice.

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import hyperexpand
    >>> from sympy.functions import hyper
    >>> from sympy.abc import z
    >>> hyperexpand(hyper([], [], z))
    exp(z)

    Non-hyperegeometric parts of the expression and hypergeometric expressions
    that are not recognised are left unchanged:

    >>> hyperexpand(1 + hyper([1, 1, 1], [], z))
    hyper((1, 1, 1), (), z) + 1
    c                 ón   •— t          t          | |¦  «        |‰¬¦  «        }|€t          | ||¦  «        S |S )NrÉ  )r¨  re   r?   )rh   ri   ro   r™  r”  s       €r]   Ú
do_replacezhyperexpand.<locals>.do_replace²	  s=   ø€ Ý�¨¨BÑ/Ô/°¸GÐDÑDÔDˆØˆ9Ý˜˜R Ñ#Ô#Ð#àˆHr_   c           	      óÞ   •— t          t          | d         | d         |d         |d         ¦  «        |‰‰‰¬¦  «        }|                     t          t          t
          t
           ¦  «        s|S d S )Nr   rX   )r”  rï  )r÷  r—   r<  r   r   r   )rh   ri   ro   r™  rî  rï  r”  s       €€€r]   Ú	do_meijerzhyperexpand.<locals>.do_meijer¹	  sk   ø€ Ý�: b¨¤e¨R°¬U°B°q´E¸2¸a¼5ÑAÔAÀ1Ø¨°uð>ñ >ô >ˆà�uŠu•S�#�r¥B 3Ñ'Ô'ð 	ØˆHð	ð 	r_   )r   r¦  r?   rK   )rv  rî  r”  rï  rú  rü  s    ```  r]   Úhyperexpandrý  —	  st   øøø€ õ2 	�‰
Œ
€Aðð ð ð ð ðð ð ð ð ð ð ð
 �9Š9•U˜JÑ'Ô'×/Ò/µ¸ÑCÔCÐCr_   )FrŽ  N)Žr  Úcollectionsr   Ú	itertoolsr   Ú	functoolsr   Úmathr   Úsympyr   Ú
sympy.corer   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úsympy.core.modr   Úsympy.core.sortingr   Úsympy.functionsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   Ú$sympy.functions.elementary.complexesr=   r>   Úsympy.functions.special.hyperr?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Úsympy.matricesrL   rM   rN   Úsympy.polysrO   rP   rQ   Úsympy.seriesrR   Úsympy.simplify.powsimprS   Úsympy.utilities.iterablesrU   r^   rŒ   r®   r¸   r¾   re   r—   r*  rg   rq  r‘   rŽ  r“  r�  r¡  rª  r°  rÄ  rÈ  rÍ  rÑ  rÕ  rÙ  rè  rî  rò  rö  r  r  r  r  r  rB  rS  r_  r�  r†  rŒ  r¥  r¨  rÀ  rë  r÷  rý  rv   r_   r]   ú<module>r     sß	  ððð ðt $Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ð@ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @à Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /ðHð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð FÐ EÐ EÐ EÐ EÐ EÐ EÐ Eð5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð .Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *ðð ð ð]ð ]ð ]ð@	@ð @ð @ðFð ð ðð ð ðAð Að Að Að A�Tñ Aô Að AðH<Hð <Hð <Hð <Hð <H�ñ <Hô <Hð <Hð@ €Uˆ3�Z„Z€ðBð Bð Bð Bð Bñ Bô Bð BðNIð Ið Ið Ið Iñ Iô Ið IðX&:ð &:ð &:ð &:ð &:ñ &:ô &:ð &:ðRð ð ð ð ñ ô ð ð.2ð 2ð 2ð 2ð 2ñ 2ô 2ð 2ðj!ð !ð !ð !ð !�8ñ !ô !ð !ð
Hð 
Hð 
Hð 
Hð 
HˆXñ 
Hô 
Hð 
Hð
Lð 
Lð 
Lð 
Lð 
LˆXñ 
Lô 
Lð 
Lð&Lð &Lð &Lð &Lð &Lˆxñ &Lô &Lð &LðR'Lð 'Lð 'Lð 'Lð 'Lˆxñ 'Lô 'Lð 'LðTHð Hð Hð Hð H�8ñ Hô Hð HðLð Lð Lð Lð L�8ñ Lô Lð LðIð Ið Ið Ið I�8ñ Iô Ið IðLð Lð Lð Lð L�8ñ Lô Lð Lð#Nð #Nð #Nð #Nð #N�Xñ #Nô #Nð #NðL,Nð ,Nð ,Nð ,Nð ,N�Xñ ,Nô ,Nð ,Nð^0Nð 0Nð 0Nð 0Nð 0N�Xñ 0Nô 0Nð 0Nðf.Nð .Nð .Nð .Nð .N�Xñ .Nô .Nð .Nðb=ð =ð =ð =ð =�(ñ =ô =ð =ð@ð ð ð4?ð ?ð ?ð87ð 7ð 7ð<ð ð ðð ð ðFð Fð FðR*-ð *-ð *-ðZð ð ð8@/ð @/ð @/ðF73ð 73ð 73ðt#ð #ð #ðJ €ð  " e e¨D¡k¤k¸1À1Ø"ðhHð hHð hHð hHðVEð Eð EðN Ð ð 9BØð}ð }ð }ð }ð@'Dð 'Dð 'Dð 'Dð 'Dð 'Dr_   