home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e031 / 3.ddi / MATHZIP2 / STARTUP / INTEGRAT / THEOREMS.M < prev   
Encoding:
Text File  |  1991-09-19  |  14.4 KB  |  394 lines

  1.  
  2. (****************************************************************************
  3. *                  The Evaluation of G - Function
  4. *
  5. *****************************************************************************)
  6.  
  7.  IntGG[alfa_,Sign[a_. x_^dg_.] f_,x_] := 
  8.      (Sign[a]/.SimpSign) IntGG[alfa,f,x]
  9.  
  10.  IntGG[alfa_,Sign[a1_. x_^dg1_.] Sign[a2_. x_^dg2_.] f_,x_] := 
  11.       (Sign[a1] Sign[a2]/.SimpSign) IntGG[alfa,f,x]
  12.  
  13.  IntGG[ alfa_,const_ f_,x_] := const IntGG[ alfa,f,x ]/;
  14.      FreeQ[const,x] 
  15.  
  16.  IntGG[ alfa_,f1_ + f2_,x_ ] := 
  17.   Module[ {r1,r2,var,answer},
  18.      r1 = IntGG[var,f1,x]//.SimpSign1; 
  19.      If[ Not[FreeQ[r1,FailInt]], r2 = FailInt, 
  20.         If[ Not[FreeQ[r1,FailIntDiv]], r2 = FailIntDiv, 
  21.          r2 = IntGG[var,f2,x]//.SimpSign1 ]];
  22.      If[ Not[FreeQ[r2,FailInt]], answer = var FailInt,
  23.         If[ Not[FreeQ[r1,FailIntDiv]], answer = var FailIntDiv, 
  24.          Off[Power::infy,Infinity::indet,General::dbyz,On::none];
  25.          answer = (r1+r2)//.var->alfa; 
  26.          answer =
  27.           If[answer=!= ComplexInfinity && answer=!= Indeterminate,
  28.              answer/.LogTrig,
  29.              CoefNotZeroTerm[
  30.               LimitSum[Expand[r1+r2],var,alfa],1,var,alfa] ];
  31.          If[Not[FreeQ[answer,FailInt]],
  32.             answer = IntGG[alfa,f1,x]+IntGG[alfa,f2,x],True];
  33.          On[Power::infy,Infinity::indet,General::dbyz,On::none] ]]; 
  34.      If[ FreeQ[answer,Indeterminate] && FreeQ[answer,ComplexInfinity],
  35.          Expand[answer],
  36.          var FailInt] 
  37.    ]
  38.      
  39.  IntGG[ alfa_,x_^deg_. f_,x_] := IntGG[ alfa+deg,f,x ] /;
  40.     FreeQ[deg,x]
  41.  
  42.  IntGG[ alfa_,MeijerG[ n_,p_,m_,q_,{r_,mult_. x_^dg_.}], x_ ] :=
  43.     If[ NumberQ[dg] && dg < 0,
  44.         EvalSingleG[ 1-m,1-q,1-n,1-p,1/mult,r,alfa/(-dg),x ]/(-dg),
  45.         EvalSingleG[ n,p,m,q,mult,r,alfa/dg,x ]/dg ] /;
  46.     FreeQ[dg,x] && FreeQ[mult,x]
  47.     
  48.  IntGG[ alfa_,MeijerG[ n_,p_,m_,q_,arg_ ]^2,x_ ] :=
  49.     ConvolutionGG[alfa,
  50.               MeijerG[ n,p,m,q,arg ],
  51.               MeijerG[ n,p,m,q,arg ], x ] 
  52.  
  53.  IntGG[ alfa_,
  54.       MeijerG[ n1_,p1_,m1_,q1_,arg1_ ] *
  55.       MeijerG[ n2_,p2_,m2_,q2_,arg2_ ],x_ ] :=
  56.     ConvolutionGG[alfa,
  57.               MeijerG[ n1,p1,m1,q1,arg1 ], 
  58.               MeijerG[ n2,p2,m2,q2,arg2 ], x]  
  59.  
  60.  IntGG[__] := Module[ {var}, var FailInt ]
  61.  
  62.  CoefNotZeroTerm[f_,n_,x_,s_] :=
  63.   Module[ {var,g,q=0,i=0},
  64.    g = f/.x->(var+s);
  65.    Off[ Series::serlim,Series::esss ];
  66.    While[ q===0,
  67.       q = Normal[Series[g,{var,0,n+i}]]/.{
  68.          Power[u_ v_,k_]:>Power[u,k] Power[v,k]};
  69.       i=i+2 ];
  70.    On[ Series::serlim,Series::esss ];
  71.    Expand[q/.LogTrig/.{
  72.      c_ var^k_Integer :> Together[c] var^k/;FreeQ[c,var] && k<0 }
  73.    ]//.var->0]/;FreeQ[f,FailInt] 
  74.  
  75.  CoefNotZeroTerm[f_,n_,x_,s_] := FailInt
  76.  
  77.  EvalSingleG[ n_,p_,m_,q_,mult_,r_,dg_,x_ ] := 
  78.    (MultGamma[ dg + m ] MultGamma[ 1 - dg - n ] /
  79.    (MultGamma[ dg + p ] MultGamma[ 1 - dg - q ] *
  80.     If[Znak[mult],E^(I arg[mult] dg) (-mult)^dg,
  81.                   E^(I arg[mult] dg) mult^dg]))//.GammaRule1//.
  82.     GammaRule6//.GammaRule5 
  83.                                      
  84.  
  85.  ConvolutionGG[alfa_,
  86.       MeijerG[ n1_,p1_,m1_,q1_,{r1_,mult1_. x_^dg1_.}],
  87.       MeijerG[ n2_,p2_,m2_,q2_,{r2_,mult2_. x_^dg2_.}], x_] :=
  88.      If[ dg1 < 0, 
  89.       ConvolutionGG[ alfa,
  90.                MeijerG[ 1-m1,1-q1,1-n1,1-p1,{r1,1/(mult1 x^dg1)} ],
  91.            MeijerG[ n2,p2,m2,q2,{r2,mult2 x^dg2} ], x],   
  92.      If[ dg2 < 0, 
  93.       ConvolutionGG[ alfa,
  94.                MeijerG[ 1-m2,1-q2,1-n2,1-p2,{r2,1/(mult2 x^dg2)} ],
  95.            MeijerG[ n1,p1,m1,q1,{r1,mult1 x^dg1}] ,x],
  96.      If[ dg2 == 1,
  97.       EvalGG[ n2,p2,m2,q2,n1,p1,m1,q1,mult2,r2,mult1,r1,alfa,
  98.               { Numerator[dg1],Denominator[dg1] },x ], 
  99.       EvalGG[ n1,p1,m1,q1,n2,p2,m2,q2,mult1,r1,mult2,r2,alfa/dg1,
  100.               { Numerator[dg2/dg1],Denominator[dg2/dg1] },x ]/dg1 
  101.     ]]] /; FreeQ[mult1,x] && FreeQ[mult2,x] &&
  102.      NumberQ[dg1] && NumberQ[dg2] && Im[dg1]==0 && Im[dg2]==0  
  103.   
  104.  ConvolutionGG[__] := FailInt
  105.  
  106.  EvalGG[ n1_,p1_,m1_,q1_,n2_,p2_,m2_,q2_,sig_,r1_,
  107.                        omeg_,r2_,alf_,{l_,k_},x_ ] :=
  108.   Module[ {ll2,ll1,bz,cz,mu,ro},
  109.         ll2 = Length[n2]+Length[p2]-Length[m2]-Length[q2];
  110.         ll1 = Length[n1]+Length[p1]-Length[m1]-Length[q1];
  111.         bz = (Length[n1]+Length[m1]-Length[p1]-Length[q1])/2;
  112.         cz = (Length[n2]+Length[m2]-Length[p2]-Length[q2])/2;
  113.         mu = Apply[ Plus,Join[m2,q2,-n2,-p2] ] + 1 + ll2/2;
  114.         ro = Apply[ Plus,Join[m1,q1,-n1,-p1] ] + 1 + ll1/2;
  115.         If[Znak[sig],E^(-I arg[sig] alf) (-sig)^(-alf),
  116.                      E^(-I arg[sig] alf) sig^(-alf)]*
  117.           k^mu l^( ro - alf ll1 - 1 ) /
  118.          (2 Pi)^( bz (l-1) + cz (k-1) ) *
  119.           MeijerReduce[
  120.            Join[ Delta[k,n2], Delta[l,1-alf-m1] ],
  121.            Join[ Delta[l,1-alf-q1], Delta[k,p2] ],
  122.            Join[ Delta[k,m2], Delta[l,1-alf-n1] ],
  123.        Join[ Delta[l,1-alf-p1], Delta[k,q2] ],
  124.            If[Znak[sig],E^(-I arg[sig] l) (-sig)^(-l),
  125.                         E^(-I arg[sig] l) sig^(-l)] *
  126.            If[Znak[omeg],E^(I arg[omeg] k) (-omeg)^k,
  127.                          E^(I arg[omeg] k) omeg^k] * 
  128.              k^(k ll2)/l^(l ll1)
  129.                         ]
  130.      ]
  131.  
  132.  MeijerReduce[ n_,p_,m_,q_,arg_ ] :=
  133.    Module[ {r1,r2},
  134.       r1 = ReducePar[ m,p ];
  135.       r2 = ReducePar[ q,n ];
  136.       MeijerPrelimCaseGlog[ r2[[2]], r1[[2]], r1[[1]], r2[[1]], arg ]   
  137.             ] 
  138.  
  139.  TheoremSlater[ n_,p_,m_,q_,z_ ] :=
  140.     If[ SameQ[N[Abs[z /. {arg -> Arg} ]],1.], 
  141.     TheoremSlaterUnit[Length[m]+Length[n]-Length[p]-Length[q],
  142.        Apply[Plus,Join[q,m,-p,-n]]+Length[n]-Length[q],n,p,m,q,z ],
  143.     TheoremSlaterMid[Length[m]+Length[n]-Length[p]-Length[q], 
  144.        Apply[Plus,Join[q,m,-p,-n]]+Length[n]-Length[q],n,p,m,q,z ]
  145.       ] /;
  146.  Length[n] + Length[p] == Length[m] + Length[q] 
  147.  
  148.  TheoremSlater[ n_,p_,m_,q_,arg_ ] := 0/;
  149.   Length[n] + Length[p]  <  Length[m] + Length[q]  && 
  150.   Length[m] == 0
  151.  
  152.  
  153. TheoremSlater[ n_,p_,m_,q_,arg_ ] := 
  154.        GfunToHyper[ 1-m,1-q,1-n,1-p,1/arg] /;
  155.   Length[n] + Length[p]  > Length[m] + Length[q]
  156.  
  157.  
  158.  TheoremSlater[ n_,p_,m_,q_,arg_ ] := 
  159.        GfunToHyper[ n,p,m,q,arg ]  
  160.  
  161.  TheoremSlaterMid[ ll_,vu_,n_,p_,m_,q_,arg_ ] :=
  162.   Module[ {sigA},
  163.     If[ FreeQ[sigA = GfunToHyper[ n,p,m,q,arg ],FailInt], 
  164.          sigA,
  165.          GfunToHyper[ Expand[1-m],Expand[1-q],
  166.                       Expand[1-n],Expand[1-p],1/arg] ] ]/;
  167.    ll > 0 && Length[m] <= Length[n]
  168.  
  169.  TheoremSlaterMid[ ll_,vu_,n_,p_,m_,q_,arg_ ] :=
  170.   Module[ {sigB},
  171.     If[ FreeQ[sigB = GfunToHyper[ Expand[1-m],Expand[1-q],
  172.                       Expand[1-n],Expand[1-p],1/arg ], FailInt],
  173.          sigB,
  174.          GfunToHyper[ n,p,m,q,arg ] ] ]/;
  175.    ll > 0 && Length[m] > Length[n]
  176.  
  177.  TheoremSlaterMid[ 0,vu_,n_,p_,m_,q_,arg_ ] :=
  178.   Module[ {sigA,sigB},
  179.     sigA = GfunToHyper[ n,p,m,q,arg ];
  180.     sigB = GfunToHyper[ Expand[1-m],Expand[1-q],
  181.                         Expand[1-n],Expand[1-p],1/arg];
  182.     If[ !FreeQ[sigA,FailInt] ,
  183.        If[ Not[NumberQ[arg]] || arg >= 1, sigB, FailInt ],
  184.     If[ !FreeQ[sigB,FailInt], 
  185.        If[ Not[NumberQ[arg]] || arg <= 1, sigA, FailInt ],
  186.     Apply[ If,{arg >= 1,sigB, sigA} ] ]]
  187.    ]/;
  188.    NumberQ[vu] && Re[vu] < -1
  189.  
  190.  TheoremSlaterMid[ 0,vu_,n_,p_,m_,q_,arg_ ] :=
  191.     If[ NumberQ[arg],
  192.         SlaterMidNumArg[n,p,m,q,arg],
  193.         SlaterMidNotNumArg[vu,n,p,m,q,arg] ]/;
  194.    NumberQ[vu] && Re[vu] <= 0
  195.  
  196.  SlaterMidNumArg[ n_,p_,m_,q_,arg_ ] := GfunToHyper[ n,p,m,q,arg ]
  197. (*  If[ Abs[arg] >1,
  198.         GfunToHyper[ Expand[1-m],Expand[1-q],
  199.                      Expand[1-n],Expand[1-p],1/arg], 
  200.         GfunToHyper[ n,p,m,q,arg ] ]
  201. *) 
  202.  SlaterMidNotNumArg[ vu_,n_,p_,m_,q_,arg_ ] :=
  203.   Module[{sigA,sigB},
  204.     sigA = GfunToHyper[ n,p,m,q,arg ];
  205.     sigB = GfunToHyper[ Expand[1-m],Expand[1-q],
  206.                         Expand[1-n],Expand[1-p],1/arg];
  207.     If[ !FreeQ[sigA,FailInt], sigB,
  208.     If[ !FreeQ[sigB,FailInt], sigA,
  209.     Apply[ If,{arg >1, sigB,sigA}] ]]]
  210.  
  211.  
  212.  TheoremSlaterMid[ 0,vu_,n_,p_,m_,q_,arg_ ] :=
  213.    Module[{sigA,sigB},
  214.     sigA = GfunToHyper[ n,p,m,q,arg ];
  215.     sigB = GfunToHyper[ Expand[1-m],Expand[1-q],
  216.                      Expand[1-n],Expand[1-p],1/arg];
  217.     If[sigA=!=0,sigA,sigB] ]/;
  218.   Not[NumberQ[vu]]
  219.  
  220.  TheoremSlaterMid[ __ ] := FailInt
  221.  
  222.  TheoremSlaterUnit[ ll_,vu_,n_,p_,m_,q_,arg_ ] :=
  223.    Module[ {sigA},
  224.     If[ FreeQ[sigA = GfunToHyper[ n,p,m,q,arg ],FailInt], 
  225.          sigA,
  226.          GfunToHyper[ Expand[1-m],Expand[1-q],
  227.                       Expand[1-n],Expand[1-p],1/arg] ] ]/;
  228.    Length[m] <= Length[n] && ll>=0 &&
  229.     (Not[NumberQ[vu]] || Re[vu] < -1+Length[m]-Length[p] ||
  230.      Re[vu]<Length[m]-Length[p]&&arg=!=(-1)^(Length[m]-Length[p]) )
  231.  
  232.  TheoremSlaterUnit[ ll_,vu_,n_,p_,m_,q_,arg_ ] :=
  233.    Module[ {sigB},
  234.     If[ FreeQ[sigB = GfunToHyper[ Expand[1-m],Expand[1-q],
  235.                       Expand[1-n],Expand[1-p],1/arg ], FailInt],
  236.          sigB,
  237.          GfunToHyper[ n,p,m,q,arg ] ] ]/;
  238.    Length[m] > Length[n] && ll>=0 &&
  239.    (Not[NumberQ[vu]] || Re[vu] < -1+Length[m]-Length[p] ||
  240.    Re[vu]<Length[m]-Length[p]&&arg=!=(-1)^(Length[m]-Length[p]) )
  241.  
  242.  TheoremSlaterUnit[ 0,-1,n_,p_,m_,q_,arg_ ] :=
  243.       GfunToHyper[ n,p,m,q,arg ]/2 +
  244.       GfunToHyper[ 1-m,1-q,1-n,1-p,arg]/2 
  245.  
  246.  TheoremSlaterUnit[ __ ] := FailInt
  247.  
  248.  GfunToHyper[ n_,p_,{v1___,b_,v2___},{v3___,a_,v4___},arg_ ] :=
  249.      (-1)^(a-b) GfunToHyper[ n,p,{a,v1,v2},{b,v3,v4},arg ] /;
  250.   IntegerQ[Expand[a-b-1]] && NonNegative[Expand[a-b-1]]
  251.  
  252.  
  253.  GfunToHyper[ n_,p_,m_,q_,arg_ ] := 0 /;
  254.   Length[ m ] == 0
  255.     
  256.  
  257.  GfunToHyper[ n_,p_,m_,q_,arg_ ] := 
  258.   Block[ {HyperInteg},
  259.     Sum[ FinalGfunToHyper[ m[[i]],n,p,Drop[ m,{i,i} ],q,arg],
  260.        { i,1,Length[m] } ]] /; 
  261.   Not[LogarithmCase[ m] ]   
  262.  
  263.  
  264.  GfunToHyper[ n_,p_,m_,q_,arg_ ] :=
  265.          MeijerLogCase[n,p,m,q,arg ] /;  
  266.   LogarithmCase[ m ]
  267.  
  268.  
  269.  FinalGfunToHyper[ w_,n_,p_,m_,q_,arg_ ] :=
  270.      SimpGamma[Expand[arg^Together[w] *
  271.      MultGamma[1 + w - n] * MultGamma[m - w] *
  272.      Hypergeometric[ Expand[1 + w - Join[n,p]],
  273.                      Expand[1 + w - Join[m,q]],
  274.                      arg (-1)^(Length[p]-Length[m]+1) ]/
  275.      (MultGamma[p - w]  MultGamma[1 + w - q] )]//.
  276.   GammaRule1//.GammaRule4]
  277.  
  278. (****************************************************************************
  279. *          The G - Function Expressed as a Named Function
  280. *
  281. *****************************************************************************)
  282.  
  283.  MeijerPrelimCaseGlog[ n_,p_,m_,q_,arg_ ] :=
  284.   Module[ {answer},
  285.     answer = PowerExpandMy[
  286.           MeijerPrelimCase[n,p,m,q,arg]];
  287.     If[ FreeQ[answer,FailInt], answer,
  288.        answer = PowerExpandMy[
  289.           MeijerPrelimCase[1-m,1-q,1-n,1-p,1/arg]];
  290.        If[ FreeQ[answer,FailInt], answer,
  291.           TheoremSlater[ n,p,m,q,arg] ]]]
  292.  
  293.  MeijerPrelimCase[{},{},{a_,b_},{},arg_] :=
  294.     2 arg^((a+b)/2) BesselK[a-b,2 arg^(1/2)]
  295.  
  296.  MeijerPrelimCase[{},{},{a_},{b_},arg_] :=
  297.     arg^((a+b)/2) BesselJ[a-b,2 arg^(1/2)]
  298.  
  299.  MeijerPrelimCase[{},{c_},{a_},{b_},arg_] :=
  300.     arg^(c-1/2) Cos[(a-c+1/2) Pi]*
  301.         BesselI[a-c+1/2,arg/2] Exp[arg/2]/Sqrt[Pi]/;
  302.   Expand[2 c-a-b-1] === 0
  303.  
  304.  MeijerPrelimCase[{},{c_},{a_,b_},{},arg_] :=
  305.     arg^(c-1/2) BesselK[a-c+1/2,arg/2]*
  306.              Exp[-arg/2]/Sqrt[Pi]/;
  307.   Expand[2 c-a-b-1] === 0
  308.  
  309.  MeijerPrelimCase[{a_},{},{b_,c_},{},arg_] :=
  310.     (Gamma[b-a+1] Gamma[c-a+1] arg^b HypergeometricU[b+1-a,b+1-c,arg]/.
  311.     HypergeometricURule)/;
  312.  Not[CondLim[b-a+1]] && Not[CondLim[c-a+1]]
  313.  
  314.  MeijerPrelimCase[{c_},{},{a_,b_},{},arg_] :=
  315.     arg^(c-1/2) Sqrt[Pi] BesselK[a-c+1/2,arg/2]*
  316.              Exp[arg/2]/Cos[(a-c+1/2) Pi]/;
  317.   Expand[2 c-a-b-1] === 0 && Denominator[a-c+1/2] =!= 2
  318.  
  319.  MeijerPrelimCase[{},{c_},{a_,b_},{d_},arg_] :=
  320.     arg^((a+b)/2) BesselY[b-a,2 arg^(1/2)]/;
  321.   c===d && Expand[a-c-1/2]===0
  322.  
  323.  MeijerPrelimCase[{},{c_},{a_,b_},{d_},arg_] :=
  324.     arg^((a+b)/2) BesselY[a-b,2 arg^(1/2)]/;
  325.   c===d && Expand[b-c-1/2]===0
  326. (*
  327.  MeijerPrelimCase[{a_},{},{d_},{c_,b_},arg_] :=
  328.     arg^((c+b)/2) StruveH[c-b,2 arg^(1/2)]/;
  329.   a===d && Expand[a-c-1/2]===0
  330.  
  331.  MeijerPrelimCase[{a_},{},{d_},{c_,b_},arg_] :=
  332.     arg^((c+b)/2) StruveH[b-c,2 arg^(1/2)]/;
  333.   a===d && Expand[a-b-1/2]===0
  334. *)
  335.  MeijerPrelimCase[{},{c_},{a_,b_},{d_},arg_] :=
  336.     arg^d Sqrt[Pi] (BesselJ[d-a,arg^(1/2)]^2 -
  337.               BesselJ[a-d,arg^(1/2)]^2)/(2 Sin[a Pi-d Pi])/;
  338.   Expand[c-d-1/2]===0 && Expand[a+b-d 2]===0 &&
  339.                  (Not[NumberQ[a-d]] || Denominator[a-d]=!=1)
  340.  
  341.  MeijerPrelimCase[{},{c_},{a_,d_},{b_},arg_] :=
  342.     -arg^(c-1/2) Sqrt[Pi] BesselJ[c-1/2-b,arg^(1/2)]*
  343.                            BesselY[c-1/2-b,arg^(1/2)]/;
  344.   Expand[c-d-1/2]===0 && Expand[a+b-d 2]===0 ||
  345.                  Expand[c-a-1/2]===0 && Expand[d+b-a 2]===0
  346.  
  347.  MeijerPrelimCase[{c_},{},{a_,d_},{b_},arg_] :=
  348.      2 arg^(c-1/2) Sqrt[Pi] BesselI[c-1/2-b,arg^(1/2)]*
  349.                             BesselK[c-1/2-b,arg^(1/2)]/;
  350.   Expand[c-d-1/2]===0 && Expand[a+b-d 2]===0 ||
  351.                  Expand[c-a-1/2]===0 && Expand[d+b-a 2]===0
  352.  
  353.  MeijerPrelimCase[{c_},{},{a_,b_},{d_},arg_] :=
  354.     arg^d Pi^(3/2) (BesselI[d-a,arg^(1/2)]^2 -
  355.             BesselI[a-d,arg^(1/2)]^2)/Sin[2 a Pi-2 d Pi]/;
  356.   Expand[c-d-1/2]===0 && Expand[a+b-d 2]===0 &&
  357.                  (Not[NumberQ[a-d]] || Denominator[2 a-2 d]=!=1)
  358.  
  359.  MeijerPrelimCase[{c_},{},{d_},{a_,b_},arg_] :=
  360.     arg^d Sqrt[Pi] BesselJ[a-d,arg^(1/2)]*
  361.             BesselJ[b-d,arg^(1/2)]/;
  362.   Expand[c-d-1/2]===0 && Expand[a+b-d 2]===0
  363.  
  364.  MeijerPrelimCase[{c_},{},{b_},{a_,d_},arg_] :=
  365.     arg^(c-1/2) Sqrt[Pi] BesselJ[b-c+1/2,arg^(1/2)]^2/;
  366.   Expand[c-d-1/2]===0 && Expand[a+b-d 2]===0 ||
  367.                  Expand[c-a-1/2]===0 && Expand[d+b-a 2]===0
  368.  
  369.  MeijerPrelimCase[{},{c_},{a_,d_,b_},{},arg_] :=
  370.     2 arg^(c-1/2) BesselK[b-c+1/2,arg^(1/2)]^2/Sqrt[Pi]/;
  371.   Expand[c-d-1/2]===0 && Expand[a+b-d 2]===0 ||
  372.   Expand[c-a-1/2]===0 && Expand[d+b-a 2]===0
  373.  
  374.  MeijerPrelimCase[{},{c_},{a_,d_,b_},{},arg_] :=
  375.     2 arg^(c-1/2) BesselK[a-c+1/2,arg^(1/2)]^2/Sqrt[Pi]/;
  376.   Expand[c-b-1/2]===0 && Expand[d+a-b 2]===0
  377.  
  378.  MeijerPrelimCase[ n_,p_,m_,q_,arg_ ] := FailInt
  379.      
  380. (****************************************************************************
  381. *               Generalized Hypergeometric Functions
  382. *
  383. ****************************************************************************)
  384.  
  385.  Hypergeometric[ {___,0,___},lowpar_,arg_ ] :=  1            
  386.  
  387.  Hypergeometric[ {v1___,a_,v2___},{v3___,b_,v4___},arg_] :=
  388.       Hypergeometric[ {v1,v2},{v3,v4}, arg ] /; Expand[a-b] === 0
  389.  
  390.  Hypergeometric[ uppar_,lowpar_,arg_ ] := HyperInteg[ uppar,lowpar,arg ]
  391.  
  392.  HyperInteg[ uppar_,lowpar_,z_ ] :=
  393.       HypergeometricPFQ[ uppar,lowpar,z/.arg->Arg ]
  394.