hyp.lisp vs Bessel functions and other questions.



Recently, I've been playing around with hyp.lisp, which implements
simplification of hypergeometric functions, and I have a few
questions. 

hyp.lisp has $bestriglim to control the maximum order of when to
convert bessel functions of half-integer order to elementary
functions.  In bessel.lisp, this is controlled by $besselexpand.  I
suppose these should be unified, but I'm not sure how.  Suggestions
are welcome.  The expansions are also slightly different.  hyp.lisp
produces expansions in sin(z-n*%pi/2), but bessel.lisp produces them
in sin(z).  They're equivalent, of course.

In some cases 1F1 (confluent hypergeometric) functions are reduced to
Whittaker M functions.  Do we really want that?  Or should we leave
them as 1F1 functions?

Also, consider this:

(%i2) hgfred([1],[2],2*z);

Is  z  zero or nonzero?

nonzero;
						1       z
		     sqrt(2) sqrt(%pi) bessel_i(-, z) %e
						2
(%o2) 		     ------------------------------------
				  2 sqrt(z)
(%i3) hgfred([1],[2],2*z);

						1       z
		     sqrt(2) sqrt(%pi) bessel_i(-, z) %e
						2
(%o3) 		     ------------------------------------
				  2 sqrt(z)

Why doesn't it ask again if z is zero or nonzero?  Where is this
information stored?

Any pointers, greatly appreciated.  

Oh, and if anyone has Yannis's thesis, on which hyp.lisp is based, and
can send it to me, that would be excellent.  I haven't been able to
find it anywhere.  I think it's also described in first Macsyma User's
conference, but none of the local universities have this.

Ray