function J = besselj(nu,Z)
%BESSELJ Symbolic Bessel function, J(nu,z).

%   Copyright (c) 1993-98 by The MathWorks, Inc.
%   $Revision: 1.6 $  $Date: 1997/11/29 01:05:18 $

nu = sym(nu);
Z = sym(Z);

if all(size(nu) == 1)
   [J,stat] = maple('map2','besselj',nu,Z);
elseif all(size(Z) == 1)
   [J,stat] = maple('map','besselj',nu,Z);
else
   error('One argument must be a scalar.')
end


if stat
   % Singularity encountered.
   if all(size(nu) == 1)
      nu = nu(ones(size(Z)));
   else
      Z = Z(ones(size(nu)));
   end
   J = Z;
   for k = 1:prod(size(Z));
      [J(k),stat] = maple('besselj',nu(k),Z(k));
      if stat
         J(k) = inf;
      end
   end
end
