From: Dieter K. <cra...@us...> - 2009-07-12 11:31:26
|
Update of /cvsroot/maxima/maxima/src In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv10200 Modified Files: gamma.lisp Log Message: Put a lambda expression on the property list for the derivate wrt the first argument of the Inomplete Gamma function gamma_incomplete(a,x). The sign of a is checked. For a negative or unknown sign nil is returned and sdiffgrad generates a noun form. Related bug report: BUG ID: 2793294 "derivative of gamma_incomplete" Tested with CLISP 2.44 and GCL 2.6.8. No problems with the testsuite. Index: gamma.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/gamma.lisp,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- gamma.lisp 8 Jul 2009 21:19:26 -0000 1.41 +++ gamma.lisp 12 Jul 2009 11:31:20 -0000 1.42 @@ -364,29 +364,36 @@ ;;; Derivative of the Incomplete Gamma function -(defprop %gamma_incomplete - ((a z) - ;; The derivative wrt a in terms of hypergeometric_regularized 2F2 function - ;; and the Generalized Incomplete Gamma function (functions.wolfram.com) - ((mplus) - ((mtimes) - ((mexpt) ((%gamma) a) 2) - ((mexpt) z a) - (($hypergeometric_regularized) - ((mlist) a a) - ((mlist) ((mplus) 1 a) ((mplus) 1 a)) - ((mtimes) -1 z))) - ((mtimes) -1 - ((%gamma_incomplete_generalized) a 0 z) - ((%log) z)) - ((mtimes) - ((%gamma) a) - ((mqapply) (($psi array) 0) a))) - ;; The derivative wrt z - ((mtimes) -1 +(putprop '%gamma_incomplete + `((a z) + ,(lambda (a unused) + (declare (ignore unused)) + (cond ((member ($sign a) '($pos $pz)) + ;; The derivative wrt a in terms of hypergeometric_regularized 2F2 + ;; function and the Generalized Incomplete Gamma function + ;; (functions.wolfram.com), only for a>0. + '((mplus) + ((mtimes) + ((mexpt) ((%gamma) a) 2) + ((mexpt) z a) + (($hypergeometric_regularized) + ((mlist) a a) + ((mlist) ((mplus) 1 a) ((mplus) 1 a)) + ((mtimes) -1 z))) + ((mtimes) -1 + ((%gamma_incomplete_generalized) a 0 z) + ((%log) z)) + ((mtimes) + ((%gamma) a) + ((mqapply) (($psi array) 0) a)))) + (t + ;; No derivative. Maxima generates a noun form. + nil))) + ;; The derivative wrt z + ((mtimes) -1 ((mexpt) $%e ((mtimes) -1 z)) ((mexpt) z ((mplus) -1 a)))) - grad) + 'grad) ;;; Integral of the Incomplete Gamma function |