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
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-math