/** Series of rational functions for B projections **/

/*K: Psi; digamma functions; ScriptF functions */
/*A: John Gottschalk */
/*S: University of Western Australia */
/*D: May 1985 */

/* Contains assignments for simplifying Psi and ScriptF functions. 
   The final result is in terms of B projections. */

/*P: XMSet is automatically loaded. */

If[~P[_XLoadonce[Loaded]],<XLoadonce]
Loadonce[XMSet]

BS[$x] :: Cb[Cb[Cb[Ex[B[$x]],{Pi}],{Log[2]}],{Catalan,Pi^2}]
Psi_:Tier

/*: Psi[$expr] 
       is the digamma function. The identities here evaluate special
       cases of Psi[$n] and are more general than those in XPsi */
Psi[$x_=$x> 1 & Numbp[$x]] ::: BS[Psi[$x-1]+1/($x-1)]
Psi[$x_=$x<=0 & Numbp[$x]] ::: BS[Psi[$x+1]-1/$x]
Psi[$x_=Ratp[$x] & Numbp[$x] & 0<$x<1] ::: BS[Ap[-Euler-Log[$q]-\
   Pi/2 Cot[Pi $p/$q]+Sum[Cos[2Pi $p %#n/$q] Log[2-2Cos[2Pi %#n/$q]],\
   {%#n,1,Floor[($q-1)/2]}]+If[Evenp[$q],Cos[Pi $p] Log[2],0],{Num[$x],Den[$x]}]]
/* The following are commonly used special cases */
Psi[1/2] : B[-Euler-2Log[2]]
Psi[1/4] : B[-Euler-Pi/2-3Log[2]]
Psi[3/4] : B[-Euler+Pi/2-3Log[2]]
Psi[1]   : B[-Euler]

Psi[$n,$z_=$z>1 & Numbp[$z]] :: \
	 (Psi[$n,$z] : BS[Psi[$n,$z-1] + (-1)^$n Fctl[$n] ($z-1)^(-$n-1)])

SSeries[1] : Psi[1,3/4] -> B[-16 Catalan + Psi[1,1/4]]

/*: ScriptF[$expr]
    currently describes three sums,
    ScriptF[$n]      = Sum[(-1)^%#r/(2%#r+$n),{%#r,0,Inf}]
    ScriptF[$m,$n]   = Sum[(-1)^(%#r+%#s)/((2%#r+$m)(2%#r+2%#s+$n)),\
						{{%#r,0,Inf},{%#s,0,Inf}}]
    ScriptF[{$m,$n}] = Sum[(-1)^(%#r+%#s)/((2%#r+$m)(2%#s+$n)),\
						{{%#r,0,Inf},{%#s,0,Inf}]]
    */
ScriptF_:Tier

ScriptF[$x_=If[$x=0,Prh["ScriptF[0] generated"]]] :: ScriptF[0]
ScriptF[$x_=Natp[$x-2] & Numbp[$x]] ::: BS[1/($x-2)-ScriptF[$x-2]]
ScriptF[$x_=    $x<0   & Numbp[$x]] ::: BS[1/$x    -ScriptF[$x+2]]
ScriptF[1] : B[Pi/4]
ScriptF[2] : B[Log[2]/2]

ScriptF[$x_=If[$x=0,Prh["ScriptF[0,$y] generated"]],$y] :: ScriptF[$x,$y]
ScriptF[$x,$y_=If[$y=0,Prh["ScriptF[$x,0] generated"]]] :: ScriptF[$x,$y]
ScriptF[$x_=Natp[$x-2] & Numbp[$x],$y_=$y=1|$y=2] ::: \
   BS[ScriptF[$x-2,$y]+ScriptF[{$x,$y}]-ScriptF[$y]/($x-2)]
ScriptF[$x_=$x=1|$x=2,$y_=Natp[$y-2] & Numbp[$y]] ::: \
   BS[-ScriptF[$x,$y-2]+ScriptF[{$x,$y-2}]]
ScriptF[$x_=Numbp[$x],$y_=(Natp[-$x] | Natp[-$y]) & Numbp[$y]] ::: \
   BS[-ScriptF[$x+2,$y+2]+ScriptF[$y]/$x]
ScriptF[$x_=Natp[$x-2] & Numbp[$x],$y_=Natp[$y-2] & Numbp[$y]] ::: \
   BS[-ScriptF[$x-2,$y-2]+ScriptF[$y-2]/($x-2)]
ScriptF[1,1] : B[Catalan/2+Pi Log[2]/8]
ScriptF[1,2] : B[Pi^2/32]
ScriptF[2,1] : B[Pi/4-Log[2]/2+Catalan/2-Pi Log[2]/4]
ScriptF[2,2] : B[Pi^2/48-Log[2]^2/8]

ScriptF[{$x,$x_=If[$x=0,Prh["ScriptF[{0,0}] generated"]]}] :: ScriptF[{$x,$x}]
ScriptF[{$x,$y_=$x~=$y & Numbp[$x-$y]}]  :  (ScriptF[$y]-ScriptF[$x])/($x-$y)
ScriptF[{$x,$x_=Natp[-$x]  & Numbp[$x]}] ::: BS[-ScriptF[{$x+2,$x+2}]+1/$x^2]
ScriptF[{$x,$x_=Natp[$x-2] & Numbp[$x]}] ::: \
		  BS[-ScriptF[{$x-2,$x-2}]+1/($x-2)^2]
ScriptF[{1,1}] : B[Catalan]
ScriptF[{2,2}] : B[Pi^2/48]

/*R: Erdelyi Vol.1, John Gottschalk's Phd notes */

_XSeriesB[Loaded] : 1

