[GiNaC-devel] series() errors with divide by zero
Richard B. Kreckel
kreckel at ginac.de
Sun Jun 26 11:33:42 CEST 2011
Hi!
On 06/26/2011 04:52 AM, J Sage wrote:
> There is an error in ginac when taking a series of a function at
> a singular point, for instance in ginsh,
>
> > series(sqrt(x),x,3);
> power::eval(): division by zero
>
> from ginac-1.6 file power.cpp line 408.
>
> I instrumented power.cpp with some printf functions and found
> the offending dispatch to be in line 665:
>
> coeff = deriv.subs(r, subs_options::no_pattern);
>
> while evaluating the third term in the expansion, presumably with
> a 1/x factor. I'm new to ginac so its taking me a while to learn the
> code -- next step is to try and get it running in gdb -- so I'd appreciate
> any input from the list about how ginac is handling and/or is
> supposed to handle this kind of error. Other software, like maxima,
> handles the problem fine:
>
> (%o6) maxima(sqrt(x), x, 0, 3)
> (%i7) taylor(sqrt(x),x,0,3);
GiNaC can only compute Taylor and Laurent series. Your's is a Puiseux
series: a series not in integer powers of x but in rational powers of x.
The Puiseux expansion of sqrt(x) is, well, x^(1/2).
You may try to set x=y^q and compute the Laurent expansion in y. Setting
q=2 in your case would give the desired result:
series(sqrt(x),x,0,3)
= series(sqrt(y^2),y,0,3*2)
= y
= x^(1/2).
Note that the member functions degree() and ldegree() currently return
int, so this would have to be generalized somehow, when implementing
Puiseux series directly in GiNaC.
Bye
-richy.
--
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>
More information about the GiNaC-devel
mailing list