1 Maxima 5.17 change log for special functions
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.
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.
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
54 - Maxima Error for even negative integer
55 - When $factorial_expand T expansion for factorial_double(2*k+z)
57 - Transformation to a Gamma function with $makegamma
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
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
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
97 - Special values for gamma_incomplete(a,0) and gamma_incomplete(a,inf)
98 - When $gamma_expand T expand the following expressions:
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)
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
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
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
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)
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