series expansion.

Chris Dams chrisd at sci.kun.nl
Fri Mar 26 15:56:00 CET 2004


Hello everybody,

Question: what is the output of

	ex test=1+power(x,4)*sqrt(1+x*x);
	cout << test.series(x==0,2) << endl;

Answer: Order(1)

Question: Why?
Answer: Because in the x-involving product order=2, degsum=4, ldegree of
the sqrt is 0, the sqrt is expanded up to order -2 and
Order(x^2)*Order(x^-2)=Order(1).

Question: What is to be done now?
Answer: Have a look at the attached patch.

Bye,
Chris Dams
-------------- next part --------------
Index: pseries.cpp
===================================================================
RCS file: /home/cvs/GiNaC/ginac/pseries.cpp,v
retrieving revision 1.75
diff -r1.75 pseries.cpp
790c790,794
< 		int real_ldegree = buf.expand().ldegree(sym-r.rhs());
---
> 		int real_ldegree = 0;
> 		try {
> 			real_ldegree = buf.expand().ldegree(sym-r.rhs());
> 		}
> 		catch (std::runtime_error) {}
802a807,812
> 
> 	if(degsum>order)
> 	{	epvector epv;
> 		epv.push_back(expair(Order(_ex1),order));
> 		return (new pseries(r, epv))->setflag(status_flags::dynallocated);
> 	}


More information about the GiNaC-devel mailing list