I have gone through the code of the Bessel functions to have a look what
is missing. One point is the missing implementation of the Mirror
symmetry for the Bessel I and Bessel K functions. When I am right all
Bessel functions have Mirror symmetry for all values of the order v and
for all values of the argument z, which are not on the negative real
axis. That is:
conjugate(bessel(v,z)) = bessel(conjugate(v),conjugate(z))
for z not in (-inf, 0).
Therefore, the following implementation of a conjugate function might be
possible, e.g. for Bessel I:
(defun conjugate-bessel-i (z)
(let ((n (first z)) (x (second z)))
(if (off-negative-real-axisp x)
(take '(%bessel_i) (take '($conjugate) n)
(take '($conjugate) x))
`(($conjugate simp) ((%bessel_i simp) , at z)))))
I am wondering why the implemented conjugate functions for the Bessel J
and Bessel Y functions are restricted to an integer order. We have for
the Bessel J function:
(defun conjugate-bessel-j (z)
(let ((n (first z)) (x (second z)))
(if (and (off-negative-real-axisp x) ($featurep n '$integer))
(take '(%bessel_j) n (take '($conjugate) x))
`(($conjugate simp) ((%bessel_j simp) , at z)))))
I would like to suggest to extend the implementation of the Mirror
symmetry for the Bessel J and Bessel Y function to all values for the
order and to add similar functions for the Bessel I and K functions.
Dieter Kaiser