taytorat() produces an internal symbol visible at toplevel (%o2). According to the documentation, taytorat(expr) is equivalent to rat(ratdisrep(expr)), which is not the case here (%o3) (Not sure what rat is trying to do here).
(%i1) ft: taylor(f(x,y), [x,y],[a1,a2], [1,1]);
taytorat(ft);
ratdisrep(ft);
rat(%);
(%o1) f(a1,a2)+((at('diff(f(x,y),x,1),x=a1))*(x-a1)+(at('diff(f(a1,y),y,1),y=a2))*(y-a2))+...
(%o2) ((at('diff(f(x,y),x,1),x=a1))*(x-a1)+(at('diff(f(a1,y),y,1),y=a2))*(y-a2))*g36791+f(a1,a2)
(%o3) (at('diff(f(a1,y),y,1),y=a2))*(y-a2)+(x-a1)*(at('diff(f(x,y),x,1),x=a1))+f(a1,a2)
(%o4) (at('diff(f(a1,y),y,1),y=a2))*y+(x-a1)*(at('diff(f(x,y),x,1),x=a1))-(at('diff(f(a1,y),y,1),y=a2))*a2+f(a1,a2)
This is with
-------------------------------------------------------------
Maxima version: 5.19.2
Maxima build date: 8:55 8/31/2009
host type: i686-pc-mingw32
lisp-implementation-type: GNU Common Lisp (GCL)
lisp-implementation-version: GCL 2.6.8
-------------------------------------------------------------
Thank you for the report. This is a very old bug.
Here are some other examples:
taytoratcallsSRRATto see if that can do the conversion. IfSRRATfails thentaytoratfalls back to callingratdisrepfollowed toRATF. SoSRRATis supposed to be the "fast" version, but if it fails then, basically,rat(ratdisrep(...))is used instead.The problem is that
SRRATdoesn't handle multivariate expansions correctly and it also doesn't signal failure in this case either.taytoratthinksSRRATsucceeds and so it returns the bogus result with internal gensyms.I see no problems with the test suite when using following patch, which just has
SRRATgive up if it sees a multivariate expansion. This will causetaytoratgo through the "slow" path which handles this case.Then we have
And in case anyone else is interested:
taytoratused to be calledsrrata long time ago.Fixed by commit [38d4b2].
Related
Commit: [38d4b2]