The error is in the routine f16p217test. The Laplace transform of the Whittaker W function is only valid for an argument a*t and not a*t^v. There is no check for v=1.

This is a possible correction of the involved part of the code in the routine f16p217test:

;; Ok, we satisfy the conditions. Now extract the arg.

;; The transformation is only valid for an argument a*t. We have

;; to specialize the pattern to make sure that we satisfy the condition.

(let ((l (m2-a*t a) ; more special pattern for the argument

; (m2 a

; '((mplus)

; ((coeffpt) (f hasvar) (a freevar))

; ((coeffpp) (c zerp)))

; nil)

))

If we correct this part of code the Laplace transform for the Parabolic Cylinder D function for an argument sqrt(t) will work, but will fail for an argument t as expected.

Furthermore, we have to change the algorithm of whittest. When f16p217test fails a transformation to a Whittaker M function is done. But the algorithm for the Laplace transform of the Whittaker W function is already the general Laplace transform of the corresponding representation in terms of Whittaker M. The problem is, that we get errors when trying this transformation. So it is the best to return a noun form at this point.

This could be the change to the routine whittest:

(defun whittest (r a i1 i2)

(cond ((f16p217test r a i1 i2))

(t

; The formula used in f16p217test already is already the general Laplace

; transformation. The transformation to a Whittaker M representation

; does not give any new information, but will fail with errors like undefined gamma

; functions or divisions by zero. Therefore, we return a noun form at this point.

; ;; Convert to M function and try again.

; (distrexecinit ($expand (mul (init r)

; (wtm a i1 i2))))

(setq *hyp-return-noun-flag* 'whittest-failed)

)))

With these changes the Laplace transform of the Parabolic Cylinder D function will work as expected. There are no problems with the testsuite.

Dieter Kaiser