Yes, there is an issue in MultiSeries's handling of LambertW. It becomes evident by comparing the result of the problematic call **MultiSeries:-series( (G(1-h^2) + 1)/h, h, 1)** and the result of **MultiSeries:-series( (G(1-h^2) + 1)/h, h, 2)** (the latter is correct).

Note that all MultiSeries:-limit needs is the first term (dominant term) of the series, so it uses a call similar to the problematic calling sequence above, leading to precisely the same problem.

Please note that **MultiSeries:-series(f(x), x=0)** returns a series that is valid on a real open interval (0, a) for some a > 0. In other words, a series that's valid as x approaches 0 along the positive real axis. The call **MultiSeries:-series(f(z), z=z0)** for any nonzero complex z0 returns a series that is valid as z approaches z0 along a ray emanating from the origin. This pathwise semantics makes MultiSeries quite useful in *avoiding* branch cut issues. The example Robert gave is an illustration of this. To obtain a series that is valid along some other path, one simply performs a change of variables as follows:

> **dir := -1:** #some nonzero complex number, interpreted as a direction vector

> **MultiSeries:-series( G( 1 - (dir*h)^2 ), h=0 );**

The above call will compute the series as h -> 0+. I've put together a worksheet that visually demonstrates the series approximations to G( 1 - h^2 ) along eight different directions as computed by MultiSeries:-series. It's available here:

View 5819_multiseries.mw on MapleNet or Download 5819_multiseries.mw

View file details

EDIT: I made a mistake in one of the comments in the worksheet. Each finite limit is really just the absolute value of the coefficient of h^3, rather than one-sixth of it. (It is one-sixth of the absolute value of the one-sided third derivative of H(h*dir)).

For more information on this pathwise semantics of MultiSeries, please refer to its help page.

Finally, the limit computation of a 0/0 expression in Maple should not be significantly different from the limit computation of anything else, since the core algorithm in Maple (both in :-limit and MultiSeries:-limit) is based on some form of asymptotic series expansion with machinery in place to detect indefinite cancellation. To find a 0/0 limit, Maple basically divides the series for the numerator by the series for the denominator, and looks at the dominant term of the quotient series. Problems found in 0/0 limit computations most likely indicate that the coefficients were not computed correctly, as in this example.

Victor Fan

Math Group, Maplesoft