From: Dieter K. <cra...@us...> - 2009-03-22 17:34:00
|
Update of /cvsroot/maxima/maxima/src In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv11953 Modified Files: hypgeo.lisp Log Message: Improving the Laplace transform for the Hermite function. Use mevenp and moddp. Now expressions which evaluate to an even or odd integer will work too and we get the expected and simple results for laplace('hermite(2*n,sqrt(t))/sqrt(t),t,s); laplace('hermite(2*n+1,sqrt(t)),t,s); where n is declared to be an integer. Index: hypgeo.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/hypgeo.lisp,v retrieving revision 1.52 retrieving revision 1.53 diff -u -d -r1.52 -r1.53 --- hypgeo.lisp 21 Mar 2009 22:31:48 -0000 1.52 +++ hypgeo.lisp 22 Mar 2009 17:33:52 -0000 1.53 @@ -2021,9 +2021,11 @@ arg1 (cdras 'w l) rest (cdras 'u l)) (return - (cond ((maxima-integerp index1) - ;; When index1 is an integer, we transform directly - ;; to a hypergeometric function. For this case we + (cond ((and (maxima-integerp index1) + (or (mevenp index1) + (moddp index1))) + ;; When index1 is an even or odd integer, we transform + ;; directly to a hypergeometric function. For this case we ;; get a Laplace transform when the arg is the ;; square root of the variable. (sendexec rest (hermite-to-hypergeometric index1 arg1))) @@ -2040,7 +2042,9 @@ arg1 (cdras 'w l) rest (cdras 'u l)) (return - (cond ((maxima-integerp index1) + (cond ((and (maxima-integerp index1) + (or (mevenp index1) + (moddp index1))) (sendexec rest (hermite-to-hypergeometric index1 arg1))) (t (integertest rest arg1 index1 nil 'he)))))) @@ -2925,8 +2929,7 @@ (defun hermite-to-hypergeometric (order arg) (cond ((and (maxima-integerp order) - (or (and (integerp order) (evenp order)) - (and (symbolp order) (kindp order '$even)))) + (mevenp order)) ;; Transform to 1F1 for order an even integer (mul (power 2 order) @@ -2938,8 +2941,7 @@ (mul arg arg)))) ((and (maxima-integerp order) - (or (and (integerp order) (oddp order)) - (and (symbolp order) (kindp order '$odd)))) + (moddp order)) ;; Transform to 1F1 for order an odd integer (mul -2 arg (power 2 order) |