Ralf Hemmecke <[EMAIL PROTECTED]> writes: > On 08/21/2006 03:38 AM, Jay Belanger wrote: >> Martin Rubey <[EMAIL PROTECTED]> writes: >> >>> "Igor Khavkine" <[EMAIL PROTECTED]> writes: >>> >>>> Can someone explain the following behavior of Taylor series in Axiom? >>>> >>>> (113) -> y := taylor x >>>> (113) x >>>> Type: UnivariateTaylorSeries(Expression >>>> Integer,x,0) >>>> (114) -> x*y >>>> (114) x x >>>> Type: UnivariateTaylorSeries(Expression >>>> Integer,x,0) >>>> (115) -> coefficient(%,1) >>>> (115) x >>>> Type: Expression >>>> Integer >>> The reason is that Axiom cannot really know whether you meant x in (114) to >>> be >>> an element of the coefficient Ring EXPR INT, or to be a univariate Taylor >>> series. In case of doubt, it usually chooses the wrong possibility :-) >> >> When multiplying two elements, shouldn't Axiom try to coerce them to >> be in the same structure? (I realize it doesn't, particularly here, >> but wouldn't that be reasonable behavior?) > > But Axiom coerced the two x to the same domain!!!
Not in any meaningful way. What I think should have happened is something like (1) -> y := taylor x (1) x Type: UnivariateTaylorSeries(Expression Integer,x,0) (2) -> (x::UnivariateTaylorSeries(Expression Integer,x,0))*y 2 (2) x Type: UnivariateTaylorSeries(Expression Integer,x,0) (without the cast having to be explicit). The only real experience I have with domains is in MuPAD, and this is roughly how MuPAD handles it. > The first x is a coefficient, and the second x is the variable from > the Taylor series. So you cannot complain. Oh, I can always complain. The only question is whether or not my complaints are justified. > The only problem is that it is terribly confusing. Unfortunately, I > cannot even blame that the user did anything wrong since Axiom came up > with this strange type UnivariateTaylorSeries(Expression Integer,x,0). > > But I could blame the user for trying to do "x * y". Here you instruct > the compiler to guess since there is no function > > *: (Symbol, UTS(Expression Integer,x,0))->UTS(Expression Integer,x,0) > > so the interpreter has to do something with the x. It coerces it to > Expression(Integer). That is perfectly legal. But not perfectly reasonable, I think. And it isn't coercing x to be in the same domain as the other x, which is what I think should happen. Jay _______________________________________________ Axiom-math mailing list Axiom-math@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-math