   Maxima 5.17 change log for special functions
   Compiled 2008-12-08
   by Dieter Kaiser

--------------------------------------------------------------------------------
Extensions and changes to the Factorial function:

 Maxima User function:     factorial(z)
 New Maxima User variable: factorial_expand

 - Complex float and complex bigfloat support added
 - Check for a negative integer or a real representation of an integer
 - Set $factlim to the value 100,000 to avoid unintentional overflow
 - Implementation of mirror symmetry
 - Expand factorial(n+m) where m is an integer
   The expansion depends on the Maxima User variable $factorial_expand.
   The functionality is comparable with the function minfactorial.
   But because the expansion is done by the simplifier we have no
   problems with nested expression.

 Related bugs:
 SF[1571099] handling of large factorials
 SF[1486452] minfactorial doesn't look inside "!"

--------------------------------------------------------------------------------
Changes to General factorial:

 Maxima User function: genfact(x,y,z):

 - Adding tests for the arguments of genfact(x,y,z).
   The algorithm of genfact(x,y,z) only works for the following range
   of the arguments: x, y, z positive integer and z <= x and y <= x/z.
   The tests for this range of values have been added. For integer
   values beyond this range a Maxima error is thrown. For all other
   numbers Maxima returns  a noun form.

 Related bug:
 SF [1093138] double factorial defn incorrect for noninteger operand

--------------------------------------------------------------------------------
Implementation of Double factorial

 New Maxima User function: double_factorial(z)
 New Maxima User variable: factorial_expand

 double_factorial is a generalization of genfact(x,y,z) for real and
 complex values. For an integer argument to double_factorial the
 function genfact(x,y,z) is called.

 - Numerical evaluation for integer, real and complex values in float
   and bigfloat precision
 - Implementation of the derivative
 - Mirror symmetry
 - Maxima Error for even negative integer
 - When $factorial_expand T expansion for factorial_double(2*k+z)
   and k an integer
 - Transformation to a Gamma function with $makegamma

 Related bug:
 SF [1093138] double factorial defn incorrect for noninteger operand

--------------------------------------------------------------------------------
Extensions and improvements of the Gamma function

 Maxima User function:     gamma(z)
 New Maxima User variable: gamma_expand

 - Adding code to evaluate complex bigfloats using the routine cbffac.
 - Detect a float or bigfloat representation of a negative integer.
 - Adding a test to check an overflow in the numerical routine
   gamma-lanczos.
 - Adding code for autoloading cbffac in max_ext.lisp
 - Simplify gamma(z+n) when n an integer e.g.
   gamma(z+1) = n * gamma(z)
   gamma(z+2) = n * (z+1) * gamma(z)
   gamma(z-1) = - gamma(z) / (1-n)
   gamma(z-2) = gamma(z) / ((1-n) * (2-n))
 - Do the extraction of the realpart and imagpart when we know we
   have a complex number.
 - Improved accuracy for float, bigfloat and complex bigfloat values.
 - reduce the default value of $gammalim to 10,000
 - $gammalim and $factlim now work indepently

 Related bugs:
 SF [2013650] gamma(250.0) returns non-number; gamma(-1.0) finite
 SF [2134791] Gamma ask for the sign of an expression

--------------------------------------------------------------------------------
Implementation of the Incomplete Gamma function

 New Maxima User function: gamma_incomplete(a,z)

 The following features are implemented:

 - Evaluation for real and complex numbers in double float and
   bigfloat precision
 - Special values for gamma_incomplete(a,0) and gamma_incomplete(a,inf)
 - When $gamma_expand T expand the following expressions:
   gamma_incomplete(0,z)
   gamma_incomplete(n+1/2)
   gamma_incomplete(1/2-n)
   gamma_incomplete(n,z)
   gamma_incomplete(-n,z)
   gamma_incomplete(a+n,z)
   gamma_incomplete(a-n,z)
 - Mirror symmetry
 - Derivative wrt the arguments a and z

--------------------------------------------------------------------------------
Implementation of the Generalized Incomplete Gamma function

 New Maxima User function: gamma_incomplete_generalized(a,z1,z2)

 The following features are implemented:

 - Evaluation for real and complex numbers in double float and
   bigfloat precision
 - Special values for:
   gamma_incomplete_generalized(a,z1,0)
   gamma_incomplete_generalized(a,0,z2),
   gamma_incomplete_generalized(a,z1,inf)
   gamma_incomplete_generalized(a,inf,z2)
   gamma_incomplete_generalized(a,0,inf)
   gamma_incomplete_generalized(a,x,x)
 - When $gamma_expand T and n an integer expand
   gamma_incomplete_generalized(a+n,z1,z2)
 - Implementation of Mirror symmetry
 - Derivative wrt the arguments a, z1 and z2

--------------------------------------------------------------------------------
Implementation of the Regularized Incomplete Gamma function

 New Maxima User function: gamma_incomplete_regularized(a,z)

 The following features are implemented:

 - Evaluation for real and complex numbers in double float and
   bigfloat precision
 - Special values for:
   gamma_incomplete_regularized(a,0)
   gamma_incomplete_regularized(0,z)
   gamma_incomplete_regularized(a,inf)
 - When $gamma_expand T and n a positive integer expansions for
   gamma_incomplete_regularized(n+1/2,z)
   gamma_incomplete_regularized(1/2-n,z)
   gamma_incomplete_regularized(n,z)
   gamma_incomplete_regularized(a+n,z)
   gamma_incomplete_regularized(a-n,z)
 - Derivative wrt the arguments a and z
 - Implementation of Mirror symmetry

--------------------------------------------------------------------------------
Implementation of the Logarithm of the Gamma function

 New Maxima User function: log_gamma(z).

 The following features are implemented:

 - Evaluation for real and complex values in float and bigfloat
   precision.
 - For positive integer values n transformation to log(factorial(n)).
 - Check for negative integers, float or bigfloat representation.
 - Simplify gamma_log(inf) -> inf

--------------------------------------------------------------------------------
Extension and implementation of the Error functions

 New Maxima User functions: erf(z)
                            erfc(z)
                            erfc(z)
                            erfi(z)
                            erf_generalized(z1,z2)

 New Maxima User flag: erf_representation

 The following features are implemented:

 - Real and complex evaluation in double float and bigfloat precision.
 - For numerical evaluation in double float precision the slatec
   routine slatec:derf is called. In all other cases the numerical
   routines of the Incomplete Gamma function are called.
 - Specific values for zero, one, inf and minf
 - Implementation of mirror symmetry
 - Transform into a representation in terms of the Error function erf
   when erf_representation is T
 - Odd reflection symmetry is implemented for the Error function erf

