Merge branch 'master' of https://git.code.sf.net/p/maxima/code
[maxima.git] / ChangeLog-5.17-special-functions
blobdb5ced3bc0f65bb21fb85c826921f97015bc2b7a
1    Maxima 5.17 change log for special functions
2    Compiled 2008-12-08
3    by Dieter Kaiser
5 --------------------------------------------------------------------------------
6 Extensions and changes to the Factorial function:
8  Maxima User function:     factorial(z)
9  New Maxima User variable: factorial_expand
11  - Complex float and complex bigfloat support added
12  - Check for a negative integer or a real representation of an integer
13  - Set $factlim to the value 100,000 to avoid unintentional overflow
14  - Implementation of mirror symmetry
15  - Expand factorial(n+m) where m is an integer
16    The expansion depends on the Maxima User variable $factorial_expand.
17    The functionality is comparable with the function minfactorial.
18    But because the expansion is done by the simplifier we have no
19    problems with nested expression.
21  Related bugs:
22  SF[1571099] handling of large factorials
23  SF[1486452] minfactorial doesn't look inside "!"
25 --------------------------------------------------------------------------------
26 Changes to General factorial:
28  Maxima User function: genfact(x,y,z):
30  - Adding tests for the arguments of genfact(x,y,z).
31    The algorithm of genfact(x,y,z) only works for the following range
32    of the arguments: x, y, z positive integer and z <= x and y <= x/z.
33    The tests for this range of values have been added. For integer
34    values beyond this range a Maxima error is thrown. For all other
35    numbers Maxima returns  a noun form.
37  Related bug:
38  SF [1093138] double factorial defn incorrect for noninteger operand
40 --------------------------------------------------------------------------------
41 Implementation of Double factorial
43  New Maxima User function: double_factorial(z)
44  New Maxima User variable: factorial_expand
46  double_factorial is a generalization of genfact(x,y,z) for real and
47  complex values. For an integer argument to double_factorial the
48  function genfact(x,y,z) is called.
50  - Numerical evaluation for integer, real and complex values in float
51    and bigfloat precision
52  - Implementation of the derivative
53  - Mirror symmetry
54  - Maxima Error for even negative integer
55  - When $factorial_expand T expansion for factorial_double(2*k+z)
56    and k an integer
57  - Transformation to a Gamma function with $makegamma
59  Related bug:
60  SF [1093138] double factorial defn incorrect for noninteger operand
62 --------------------------------------------------------------------------------
63 Extensions and improvements of the Gamma function
65  Maxima User function:     gamma(z)
66  New Maxima User variable: gamma_expand
68  - Adding code to evaluate complex bigfloats using the routine cbffac.
69  - Detect a float or bigfloat representation of a negative integer.
70  - Adding a test to check an overflow in the numerical routine
71    gamma-lanczos.
72  - Adding code for autoloading cbffac in max_ext.lisp
73  - Simplify gamma(z+n) when n an integer e.g.
74    gamma(z+1) = n * gamma(z)
75    gamma(z+2) = n * (z+1) * gamma(z)
76    gamma(z-1) = - gamma(z) / (1-n)
77    gamma(z-2) = gamma(z) / ((1-n) * (2-n))
78  - Do the extraction of the realpart and imagpart when we know we
79    have a complex number.
80  - Improved accuracy for float, bigfloat and complex bigfloat values.
81  - reduce the default value of $gammalim to 10,000
82  - $gammalim and $factlim now work indepently
84  Related bugs:
85  SF [2013650] gamma(250.0) returns non-number; gamma(-1.0) finite
86  SF [2134791] Gamma ask for the sign of an expression
88 --------------------------------------------------------------------------------
89 Implementation of the Incomplete Gamma function
91  New Maxima User function: gamma_incomplete(a,z)
93  The following features are implemented:
95  - Evaluation for real and complex numbers in double float and
96    bigfloat precision
97  - Special values for gamma_incomplete(a,0) and gamma_incomplete(a,inf)
98  - When $gamma_expand T expand the following expressions:
99    gamma_incomplete(0,z)
100    gamma_incomplete(n+1/2)
101    gamma_incomplete(1/2-n)
102    gamma_incomplete(n,z)
103    gamma_incomplete(-n,z)
104    gamma_incomplete(a+n,z)
105    gamma_incomplete(a-n,z)
106  - Mirror symmetry
107  - Derivative wrt the arguments a and z
109 --------------------------------------------------------------------------------
110 Implementation of the Generalized Incomplete Gamma function
112  New Maxima User function: gamma_incomplete_generalized(a,z1,z2)
114  The following features are implemented:
116  - Evaluation for real and complex numbers in double float and
117    bigfloat precision
118  - Special values for:
119    gamma_incomplete_generalized(a,z1,0)
120    gamma_incomplete_generalized(a,0,z2),
121    gamma_incomplete_generalized(a,z1,inf)
122    gamma_incomplete_generalized(a,inf,z2)
123    gamma_incomplete_generalized(a,0,inf)
124    gamma_incomplete_generalized(a,x,x)
125  - When $gamma_expand T and n an integer expand
126    gamma_incomplete_generalized(a+n,z1,z2)
127  - Implementation of Mirror symmetry
128  - Derivative wrt the arguments a, z1 and z2
130 --------------------------------------------------------------------------------
131 Implementation of the Regularized Incomplete Gamma function
133  New Maxima User function: gamma_incomplete_regularized(a,z)
135  The following features are implemented:
137  - Evaluation for real and complex numbers in double float and
138    bigfloat precision
139  - Special values for:
140    gamma_incomplete_regularized(a,0)
141    gamma_incomplete_regularized(0,z)
142    gamma_incomplete_regularized(a,inf)
143  - When $gamma_expand T and n a positive integer expansions for
144    gamma_incomplete_regularized(n+1/2,z)
145    gamma_incomplete_regularized(1/2-n,z)
146    gamma_incomplete_regularized(n,z)
147    gamma_incomplete_regularized(a+n,z)
148    gamma_incomplete_regularized(a-n,z)
149  - Derivative wrt the arguments a and z
150  - Implementation of Mirror symmetry
152 --------------------------------------------------------------------------------
153 Implementation of the Logarithm of the Gamma function
155  New Maxima User function: log_gamma(z).
157  The following features are implemented:
159  - Evaluation for real and complex values in float and bigfloat
160    precision.
161  - For positive integer values n transformation to log(factorial(n)).
162  - Check for negative integers, float or bigfloat representation.
163  - Simplify gamma_log(inf) -> inf
165 --------------------------------------------------------------------------------
166 Extension and implementation of the Error functions
168  New Maxima User functions: erf(z)
169                             erfc(z)
170                             erfc(z)
171                             erfi(z)
172                             erf_generalized(z1,z2)
174  New Maxima User flag: erf_representation
176  The following features are implemented:
178  - Real and complex evaluation in double float and bigfloat precision.
179  - For numerical evaluation in double float precision the slatec
180    routine slatec:derf is called. In all other cases the numerical
181    routines of the Incomplete Gamma function are called.
182  - Specific values for zero, one, inf and minf
183  - Implementation of mirror symmetry
184  - Transform into a representation in terms of the Error function erf
185    when erf_representation is T
186  - Odd reflection symmetry is implemented for the Error function erf