/** Generalized hypergeometric functions: advanced identities. **/

/*K: hypergeometric; generalized hypergeometric functions; Ghg; sums;
     summation; */
/*A: John Gottschalk */
/*S: University of Western Australia */
/*D: July 1985*/
 
/* This file contains substitutions for rewriting special generalized 
   hypergeometric functions in terms of Gamma and Polygamma functions. 
   All the identities are for functions which have at least one pair 
   of parameters differing by integers. */

#_:    Comm
Ghg_:  Tier
SGhg_: Ldist

If[~P[_XLoadonce[Loaded]],<XLoadonce]
_Gamma[Init]  :: Loadonce[XGammaV]      
_Psi[Init]    :: Loadonce[XPsiV]

D[Gamma[$z],{$z,1,$x}]  :: Psi[$x] Gamma[$x]
D[Psi[$z],{$z,1,$x}]    :: Psi[1,$x]
D[Psi[$n,$z],{$z,1,$x}] :: Psi[$n+1,$x]

GenSum[$x,{$m,$p_=Numbp[$p],$q_=Numbp[$q]}] :: \
  Sel[$p < $q+1, Sum[$x,{$m,$p,$q}],\
      $p = $q+1, 0,\
      $p > $q+1,-Sum[$x,{$m,$q+1,$p-1}]]

/* It is assumed that all hypergeometric series are convergent and the 
  argument, z, is not equal to zero. */

/* SGhg[2,1] reduces Ghg[p+1,p,#[a,...,a,1],#[a+1,...,a+1],1] where 
  Natp[1-a]=0. */
SGhg[2,1] : Ghg[$p+1,$p_=$p>=2,#[1,$$a]_=~Natp[1-{$$a}[1]],#[$$b]_=\
  Union[{$$b}]-Union[{$$a}] = {1},1] --> ({$$a}[1])^($p) Zeta[$p,{$$a}[1]]

/* SGhg[2,2] reduces Ghg[p+1,p,#[a,...,a,b],#[a+1,...,a+1],1] where Natp[b]=0 */
SGhg[2,2] : Ghg[$p+1,$p,#[$$a,$b_=~Natp[$b]],#[$$b]_=Union[{$$b}]-Union[{$$a}] \
  = {1},1] --> -(-{$$a}[1])^$p Gamma[1-$b]/($p-1)!*D[Gamma[#r]/Gamma[#r+1-$b],\
  {#r,$p-1,{$$a}[1]}]

/* SGhg[2,3] reduces Ghg[p+1,p,#[a,...,a,b],#[a+1,...,a+1],-1] where Natp[b]=1*/
SGhg[2,3] : Ghg[$p+1,$p,#[$$a,$b_=Natp[$b]],#[$$b]_=(Union[{$$b}]-Union[{$$a}] \
  = {1}) & ~Natp[1-{$$a}[1]],-1] --> -(-{$$a}[1])^$p/(Gamma[$p] Gamma[$b]) \
  D[Gamma[$b-#r] Sum[Gamma[%#i]/(2^%#i Gamma[%#i+1-#r]),{%#i,1,$b-1}]+\
  Gamma[$b-#r] (Psi[#r/2+1/2]-Psi[#r/2])/(2Gamma[1-#r]),{#r,$p-1,{$$a}[1]}]

/* SGhg[2,4] reduces Ghg[2,1,#[1,a],#[a+1],z] where Intp[2a]=1 & Natp[1-a]=0. */
SGhg[2,4,1] : Ghg[2,1,#[1,$a_=Natp[$a]],#[1+$a],$x_=$x~=1] -> \
    -$a/$x^$a Log[1-$x]-$a/$x^$a Sum[$x^(%#i+1)/(%#i+1),{%#i,0,$a-2}]

SGhg[2,4,2] : Ghg[2,1,#[1,$a_=Intp[2$a]&~Intp[$a]],#[1+$a],$x_=0>=$x] --> \
  (Lcl[%#i]; $a/(-$x)^$a (-1)^($a-1/2) 2Atan[(-$x)^(1/2)]-2$a (-1)^($a-3/2) \
  GenSum[(-1)^%#i (-$x)^(%#i+1/2-$a)/(2%#i+1),{%#i,$a-1/2,-1}])

SGhg[2,4,3] : Ghg[2,1,#[1,$a_=Intp[2$a] & ~Intp[$a]],\
  #[1+$a],$x_=$x>=0 & $x~=1] --> (Lcl[%#i]; $a/$x^$a Log[(1+$x^(1/2))/\
  (1-$x^(1/2))]+2$a/$x^$a GenSum[$x^(%#i+1/2)/(2%#i+1),{%#i,$a-1/2,-1}])

/* SGhg[2,5] reduces Ghg[2,1#[a,b],#[a+1],z] where Natp[a]=1 & (Natp[b]=0 unless
   b>=a+1). */
SGhg[2,5] : Ghg[2,1,#[$a_=Natp[$a],$b_=((~Natp[$b]) | (Natp[$b]&Natp[$b-$a]))\
  &~Natp[1-$b]],#[$a+1],$z] -> -Gamma[$a+1] Gamma[1-$b]/\
  (Gamma[$a+1-$b] $z^$a) ((1-$z)^(1-$b)-1) - Gamma[$a+1] (1-$z)^(1-$b)/\
  (Gamma[$a+1-$b] $z^$a) Sum[Gamma[%#i+1-$b] $z^%#i/Gamma[%#i+1],{%#i,1,$a-1}]

/* SGhg[2,6] reduces Ghg[2,1,#[a,b],#[a+1],z] where Intp[2a]=1 & Natp[1-a]=0
  and Intp[2b]=1 & Natp[1-b]=0. */
SGhg[2,6,1] : Ghg[2,1,#[$a_=Intp[2$a]&~Natp[$a],$b_=Natp[$b]],#[$a+1],$z] --> \
  (Lcl[%#i,%#j]; Gamma[$a+1] Gamma[3/2-$b]/(Gamma[$a+1-$b] $z^($a-1/2) Pi^(1/2))\
  (Sum[Gamma[%#j] Gamma[$b-1/2]/((1-$z)^%#j Gamma[$b] \
  Gamma[%#j+1/2]),{%#j,1,$b-1}]+Gamma[$b-1/2]/(Gamma[$b] Pi^(1/2) \
  Abs[$z]^(1/2)) (($z>0) (2Log[1+$z^(1/2)]-Log[1-$z]) + \
  ($z<0) 2Atan[(-$z)^(1/2)]))\
  -GenSum[(1-$z)^(1-$b) Gamma[%#i+1/2-$b] Gamma[$a+1]/\
  ($z^($a+1/2-%#i) Gamma[%#i+1/2] Gamma[$a+1-$b]),{%#i,1,$a-1/2}])

SGhg[2,6,2] : Ghg[2,1,#[$a_=Intp[2$a] & ~Natp[$a],$b_=Intp[2$b] & ~Intp[$b] \
  & ~($a>1/2 & $b>1/2)],#[$a+1],$z] --> (Lcl[%#i,%#j]; \
  Gamma[$a+1] Gamma[3/2-$b]/(Gamma[$a+1-$b] $z^($a-1/2) Pi^(1/2))\
  (GenSum[(1-$z)^(1/2-%#j) Gamma[$b-1/2]\
  Gamma[%#j-1/2]/(Gamma[$b] Gamma[%#j]),{%#j,1,$b-1/2}] + 2Gamma[1-$b]/\
  (Gamma[3/2-$b] Pi^(1/2) Abs[$z]^(1/2))\
  (($z>0) Atan[($z/(1-$z))^(1/2)]+($z<0) Log[(1-$z)^(1/2)+(-$z)^(1/2)]))\
  -GenSum[(1-$z)^(1-$b) Gamma[%#i+1/2-$b] Gamma[$a+1]/\
  ($z^($a+1/2-%#i) Gamma[%#i+1/2] Gamma[$a+1-$b]),{%#i,1,$a-1/2}])

SGhg[2,6,3] : Ghg[2,1,#[$a_=Intp[2$a] & ~Natp[$a],$b_=Intp[2$b] & ~Intp[$b] \
  & ($a>0 & $b>0)],#[$a+1],$z] --> $a Gamma[$b-$a]/Gamma[$b] \
  Sum[Gamma[%#i-1/2]/((1-$z)^(%#i-1/2) Gamma[%#i+1/2-$a]),{%#i,1,$b-1/2}]-\
  (1-$z)^(1/2) Gamma[$a+1] Gamma[1-$b]/(Gamma[$a+1-$b] \
  $z^($a+1/2) Pi^(1/2)) Sum[Gamma[%#i] $z^%#i/Gamma[%#i+1/2],{%#i,1,$a-1/2}]\
  +2 Gamma[$a+1] Gamma[1-$b]/(Gamma[$a+1-$b] $z^($a-1/2) Pi Abs[$z]^(1/2)) \
  (($z<0) Log[(1-$z)^(1/2)+(-$z)^(1/2)] + ($z>0) Atan[($z/(1-$z))^(1/2)])

/* SGhg[2,7] reduces Ghg[3,2,#[a,a,b],#[a+1,a+1],z] where Natp[a]=1 &
  ((Natp[b]=1 & b>=a+1) | (Intp[2b] & Natp[b]=0)). */
SGhg[2,7] : Ghg[3,2,#[$a_=Natp[$a],$a,$b_=Intp[2$b] & ~Natp[$a+1-$b]],\
  #[$a+1,$a+1],$z] --> (Lcl[%#j]; \
  Gamma[$a+1] $a Gamma[2-$b] ((1-$z)^(2-$b)-1)/(Gamma[$a+1-$b] $z^$a)\
  Sum[1/(%#i (%#i+1-$b)),{%#i,1,$a-1}] + $a Gamma[$a+1] (1-$z)^(2-$b)/\
  (Gamma[1+$a-$b] $z^$a) Sum[Gamma[%#j+2-$b] $z^%#j/(%#i (%#i+1-$b) Gamma[%#j+1]),\
  {{%#j,1,%#i-1},{%#i,1,$a-1}}]-($a Gamma[$a+1] Gamma[1-$b])/(Gamma[$a+1-$b] $z^$a) \
  (Natp[$b] (Sum[((1-$z)^(-%#j)-1)/%#j,{%#j,1,$b-2}]-Log[1-$z])+\
  (Intp[2$b]&~Intp[$b]) (GenSum[((1-$z)^(1/2-%#j)-1)/(%#j-1/2),{%#j,1,$b-3/2}]+\
  2Log[Abs[1-(1-$z)^(1/2)]]-2Log[Abs[$z]]+2Log[2])))

/* this is unchecked */
/* SGhg[2,8] reduces Ghg[p+1,p,#[1,a,...,a],#[a+1,...,a+1],z]. */
SGhg[2,8] : Ghg[$p+1,$p,#[1,$$a],#[$$b]_=(Union[{$$b}]-Union[{$$a}]={1}),$z]-->\
  {$$a}[1]^$p Ler[$z,$p,{$$a}[1]]

_XGhg2[Loaded] : 1


