Question: GRADIENT not working with hypergeom function

Hi Maple Users

I am trying to use GRADIENT (with(codegen)) with a proc that includes hypergeom function but it produces the following error:

Error, (in GRAD/givedname) incorrect syntax in parse: unexpected end of input (near 4th character of parsed string)

When I remove the bits including hepergeom function it works so there seems to be some parsing problem with hypergeom. The proc is below ( I have simplified the code by assignig values to some variables). Any help is appreciated.

OV := proc(d1, d2, o)
    local noc, lambda1, lambda2, nu1, nu2, z1, z2, a1, a2, p1, p2, x1, x2, Be1, Be2, q1, q2, w1, w2, aprime, zprime, nx, nBe;
    local hg1, hg2, hg3, hg4;
       
    lambda1 := 5.22;
    lambda2 := 2.36;
    nu1 := 12.96;
    nu2 := 4.23;
    z1 := 4.99;
    z2 := 1.43;
    
    a1 := lambda1 * nu1;
    a2 := lambda2 * nu2;
    
    p1 := 1;
    p2 := 1;


    x1 := exp(a1/z1 + lnGAMMA(d1/z1 + 1) - d1/z1 * ln(a1/z1));
    x2 := exp(a2/z2 + lnGAMMA(d2/z2 + 1) - d2/z2 * ln(a2/z2));
    
    Be1 := 1 / (GAMMA(d1/z1 + 1, a1/z1) * x1 / GAMMA(d1/z1 + 1));
    Be2 := 1 / (GAMMA(d2/z2 + 1, a2/z2) * x2 / GAMMA(d2/z2 + 1));
    
    q1 := lambda1 * nu1 * Be1;
    q2 := lambda2 * nu2 * Be2;
        
     hg1 := hypergeom([p1, -d1 / z1 + 1 , a1 / z1 + p1 + 1], [a1 / z1 + p1], -z1 / a1);
     hg2 := hypergeom([-d1 / z1 + 1, p1 + 1, a1 / z1 + p1 + 2], [a1 / z1 + p1 + 1], -z1 / a1);
     hg3 := hypergeom([p2, -d2 / z2 + 1 , a2 / z2 + p2 + 1], [a2 / z2 + p2],-z2 / a2 );
     hg4 := hypergeom([-d2 / z2 + 1, p2 + 1, a2 / z2 + p2 + 2], [a2 / z2 + p2 + 1], -z2 / a2);
     
    w1 := z1 - q1 + a1 * (a1 + p1 * z1) * hg1 / ((a1 + p1 * z1 + z1) * p1 * hg2 );
                    
    w2 := z2 - q2 + a2 * (a2 + p2 * z2) * hg3 / ((a2 + p2 * z2 + z2) * p2 * hg4 );
    
    aprime := q1 + q2;
    zprime := (w1 * q1 + w2 * q2) / aprime;

    nx := exp(aprime/zprime + lnGAMMA(o/zprime + 1) - o/zprime * ln(aprime/zprime));
    nBe := 1 / (GAMMA(o/zprime + 1, aprime/zprime) * nx / GAMMA(o/zprime + 1));
          
end proc:

GRADIENT(OV);

 

Please Wait...