This package can expand a specific class of functions into their corresponding Laurent-Puiseux series.
Authors: Wolfram Koepf and Winfried Neun.
This package can expand functions of certain type into their corresponding Laurent-Puiseux series as a sum of terms of the form
where m is the ‘symmetry number’, s is the ‘shift number’, n is the ‘Puiseux number’, and x0 is the ‘point of development’. The following types are supported:
The FPS package is an implementation of the method presented in [?]. The implementations of this package for MAPLE (by D. Gruntz) and MATHEMATICA (by W. Koepf) served as guidelines for this one.
Numerous examples can be found in [?]–[?], most of which are contained in the test file fps.tst. Many more examples can be found in the extensive bibliography of Hansen [?].
FPS(f,x,x0) tries to find a formal power series expansion for f with respect to the variable x at the point of development x0. It also works for formal Laurent (negative exponents) and Puiseux series (fractional exponents). If the third argument is omitted, then x0:=0 is assumed.
Examples: FPS(asin(x)^2,x) results in
FPS(sin x,x,pi) gives
and FPS(sqrt(2-x^2),x) yields
Note: The result contains one or more infsum terms such that it does not interfere with the REDUCE operator sum. In graphical oriented REDUCE interfaces this operator results in the usual ∑ notation.
If possible, the output is given using factorials. In some cases, the use of the Pochhammer symbol pochhammer(a,k):= a(a + 1)(a + k - 1) is necessary.
The operator FPS uses the operator SimpleDE of the next section.
If an error message of type
occurs, you can set the corresponding limit yourself and try a recalculation. In the computation of FPS(atan(cot(x)),x,0), REDUCE is not able to find the value for the limit limit(atan(cot(x)),x,0) since the atan function is multi-valued. One can choose the branch of atan such that this limit equals π∕2 so that we may set
and a recalculation of FPS(atan(cot(x)),x,0) yields the output pi - 2*x which is the correct local series representation.
SimpleDE(f,x) tries to find a homogeneous linear differential equation with polynomial coefficients for f with respect to x. Make sure that y is not a used variable. The setting factor df; is recommended to receive a nicer output form.
Examples: SimpleDE(asin(x)^2,x) then results in
and SimpleDE(sqrt(2-x^2),x) yields
The depth for the search of a differential equation for f is controlled by the variable fps_search_depth; higher values for fps_search_depth will increase the chance to find the solution, but increases the complexity as well. The default value for fps_search_depth is 5. For FPS(sin(x^(1/3)),x), or SimpleDE(sin(x^(1/3)),x) e. g., a setting fps_search_depth:=6 is necessary.
The output of the FPS package can be influenced by the switch tracefps. Setting on tracefps causes various prints of intermediate results.
The handling of logarithmic singularities is not yet implemented.
The rational type implementation is not yet complete.
The support of special functions [?] will be part of the next version.
 Wolfram Koepf, Algorithmic development of power series. In: Artificial intelligence and symbolic mathematical computing, ed. by J. Calmet and J. A. Campbell, International Conference AISMC-1, Karlsruhe, Germany, August 1992, Proceedings, Lecture Notes in Computer Science 737, Springer-Verlag, Berlin–Heidelberg, 1993, 195–213.