From: Dieter K. <cra...@us...> - 2009-09-13 22:09:04
|
Update of /cvsroot/maxima/maxima/src In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv3571/src Modified Files: hypgeo.lisp Log Message: Improving the routine neginp. In the routine neginp the parameter a can be a symbol or an expression. Move neginp behind the routine whittindtest. It is the only routine which uses neginp. Related bug report: Bug ID: 2858243 - specint(exp(-s*t)*t^n*exp(-sqrt(t)),t) -> Lisp Error No problems with the testsuite. Index: hypgeo.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/hypgeo.lisp,v retrieving revision 1.58 retrieving revision 1.59 diff -u -d -r1.58 -r1.59 --- hypgeo.lisp 13 Sep 2009 20:51:10 -0000 1.58 +++ hypgeo.lisp 13 Sep 2009 22:08:47 -0000 1.59 @@ -47,12 +47,6 @@ ; '%bessel_i)) ; ,v ,z)) -;; Return T if a is a non-positive integer. -;; (Do we really want maxima-integerp or hyp-integerp here?) -(defun neginp (a) - (cond ((maxima-integerp a) - (or (zerp a) (minusp a))))) - ; Not used in Maxima core and share. ;(defun notnump (x) ; (not (nump x))) @@ -63,11 +57,14 @@ (minusp (cadr (simplifya x nil)))) (t (minusp x)))) -;; Test if EXP is 1 or %e. +;;; Test if EXP is 1 or %e. + (defun expor1p (exp) (or (equal exp 1) (eq exp '$%e))) +;;; Test functions for pattern match + (defun parp (a) (eq a *par*)) @@ -1515,7 +1512,8 @@ (defun dtford (z v) (let ((inv4 (inv 4))) - (cond ((or $prefer_d (whittindtest (add (div v 2) inv4) inv4)) + (cond ((or $prefer_d + (whittindtest (add (div v 2) inv4) inv4)) (parcyl z v)) (t (simpdtf z v))))) @@ -1524,6 +1522,13 @@ (neginp (sub (sub (1//2) i2) i1)) (neginp (sub (add (1//2) i2) i1)))) +;; Return T if a is a non-positive integer. +;; (Do we really want maxima-integerp or hyp-integerp here?) +(defun neginp (a) + (cond ((maxima-integerp a) + (or (zerop1 a) + (eq ($sign a) '$neg))))) + ;; Express parabolic cylinder function as a hypergeometric function. ;; ;; A&S 19.3.1 says |