11-06-2022, 06:27 PM
Hello, I found that the HP PRIME "Gamma" function does not provide the same results as Wolfram's MATHEMATICA. For instance:
HP PRIME --> Gamma (4/5, -6) --> 294.845140024
MATHEMATICA --> Gamma [4/5, -6] --> 238.757-172.621*i.
For this reason I have written a program to calculate the Incomplete Gamma function, extending it for numeric values that do not work on the HP PRIME. The code has been named “Upper_Inc_Γ”, which needs two other small programs to work well. One program calculates the value of the integral of the hyperbolic sine (Shi (x)), while the other program calculates the value of the integral of the hyperbolic cosine (Chi (x)).
Shi(x) code:
Chi(x) code:
Upper_Inc_Γ(n,x):
It would be nice if xCas implemented the Gamma function - what do you think?
Best regards, Roberto.
HP PRIME --> Gamma (4/5, -6) --> 294.845140024
MATHEMATICA --> Gamma [4/5, -6] --> 238.757-172.621*i.
For this reason I have written a program to calculate the Incomplete Gamma function, extending it for numeric values that do not work on the HP PRIME. The code has been named “Upper_Inc_Γ”, which needs two other small programs to work well. One program calculates the value of the integral of the hyperbolic sine (Shi (x)), while the other program calculates the value of the integral of the hyperbolic cosine (Chi (x)).
Shi(x) code:
Code:
#cas
// Shi(z) Sinh Integral z ∈ ℂ
Shi(z):=
BEGIN
IF type(z)==DOM_IDENT OR type(z)==DOM_SYMBOLIC
THEN RETURN 1/2*(Ei(z)-Ei(−z))+G_0;
END;
CASE
IF ARG(z)==0 OR ARG(exact(z))==pi THEN
1/2*(Ei(z)-Ei(−z)) END;
IF 0<ARG(z)<pi THEN 1/2*(Ei(z)-
Ei(−z))-sqrt(-1)*pi/2 END;
DEFAULT 1/2*(Ei(z)-Ei(−z))+sqrt(-1)*pi/2
END;
END;
#end
Chi(x) code:
Code:
#cas
// Chi(z) → Cosh Integral
Chi(z):=
BEGIN
IF type(z)==DOM_IDENT OR type(z)==DOM_SYMBOLIC
THEN RETURN (G_0+Ei(-z)+Ei(z))/2+G_1;
ELSE
IF type(approx(z))==DOM_INT OR
type(approx(z))==DOM_FLOAT AND
SIGN(approx(z))==1 THEN
RETURN 1/2*Ei(-z)+1/2*Ei(z);
ELSE
IF type(approx(z))==DOM_INT OR
type(approx(z))==DOM_FLOAT AND
SIGN(approx(z))==-1 THEN
RETURN sqrt(-1)*pi+1/2*Ei(-z)+1/2*Ei(z);
ELSE
IF type(approx(z))==DOM_COMPLEX AND
SIGN(im(approx(z)))==1 THEN
RETURN (sqrt(-1)*pi+Ei(-z)+Ei(z))/2;
ELSE
IF type(approx(z))==DOM_COMPLEX AND
SIGN(im(approx(z)))==-1 THEN
RETURN ((−sqrt(-1))*pi+Ei(-z)+Ei(z))/2;
END;
END;
END;
END;
END;
END;
#end
Upper_Inc_Γ(n,x):
Code:
#cas
Upper_Inc_Γ(a,z):=
BEGIN
LOCAL funz, t, fnz;
// fnz:=(1/(-a)!)*(Shi(z)-Chi(z));
CASE
IF a==0 AND z==0 THEN
RETURN "Error: a==0 & z==0" END;
IF (type(a)==DOM_INT AND a>0) OR
type(a)==DOM_COMPLEX THEN
RETURN -z^a*integrate(t^(a-1)*e^(-t*z),t
,0,1)+Gamma(a) END;
IF (SIGN(z)==-1 AND type(a)==DOM_RAT)
AND (a>0 OR a<−1) THEN
RETURN (Gamma(a,z)-Gamma(a))*(−1)^(a
-1)+Gamma(a) END;
IF type(a)==DOM_INT AND a≤0 THEN
RETURN (−1)^(-a)*((sum((k-1)!/(
(-a)!*(-z)^k),k,1,-a))*exp(-z)+
(1/(-a)!)*(Shi(z)-Chi(z))) END;
IF (SIGN(z)==-1 AND type(a)==DOM_RAT)
AND (a<0 AND a>−1) THEN
RETURN (−z^(a)*exp(−z)+(
(Gamma(a+1,z)-Gamma(a+1))*(−1)^(a+1
-1)+Gamma(a+1)))/a END;
DEFAULT
RETURN Gamma(a,z);
END;
END;
#end
It would be nice if xCas implemented the Gamma function - what do you think?
Best regards, Roberto.