home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e032 / 3.ddi / FILES / INTEGRAT.PAK / THEOREMS.M < prev   
Encoding:
Text File  |  1992-07-29  |  13.8 KB  |  378 lines

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