|
|
last edited 10 years ago by test1 |
1 2 3 4 | ||
Editor: kratt6
Time: 2007/12/28 13:18:25 GMT-8 |
||
Note: |
added:
From kratt6 Fri Dec 28 13:18:25 -0800 2007
From: kratt6
Date: Fri, 28 Dec 2007 13:18:25 -0800
Subject:
Message-ID: <20071228131825-0800@axiom-wiki.newsynthesis.org>
Category: Axiom Compiler => Axiom Interpreter
Original Date: Fri, 25 Mar 2005 10:47:55 -0600
I will give some hint to understand this. Here the interpreter has to coerce the series (EXPR (INT OR OTHER)), the variable and the expansion point. In Axiom trace all these functions: P2Uls P2Upxs P2Uts Expr2Up NDmp?2domain Var2OtherPS Var2QF P2Us canCoerceLocal coerceIntTableOrFunction coerceIntTower canCoerce1 canCoerceTower canCoerce canCoerceFrom resolveTT1 resolveTTSpecial (you can had HasCate? hasCaty hasCaty1 hasCate1 if you want to better understand ofCategory bug (not parameterized ?) :
)tr P2Uls )tr P2Upxs )tr P2Uts )tr Expr2Up )tr NDmp2domain )tr Var2OtherPS )tr Var2QF )tr P2Us )tr canCoerceLocal )tr coerceIntTableOrFunction )tr coerceIntTower )tr canCoerce1 )tr canCoerceTower )tr canCoerce )tr canCoerceFrom )tr resolveTT1 )tr coerceInt )tr algEqual )tr resolveTTSpecial
a:=series(sin(x))
Beware axiom will crash. Now type:
a*1.0
restart do the same and type:
You will see that axiom in this process does not coerce all types (for example sometimes 0 (expansion point) remain Integer but of type EXPR FLOAT). Normally:
x in displayed type is of type Symbol 0.0 (expansion point) has the same type as the coefficients of the power series. For example: EXPR FLOAT.
Now you can restart and create 2 power series, one with integer the other with float:
a:=series(sin(x))
Coerce it (see above):
a:= a::UnivariatePuiseuxSeries(Expression Integer,x,0) b:= a::UnivariatePuiseuxSeries(Expression Float,x,0.0)
You can type:
a*b
restart do the same type:
b*a
This process of coercion involve some strange type and axiom coerce sometimes to UnivariatePuiseuxSeries?(UnivariatePuiseuxSeries?) etc ... This and the expansion point not really coerced trigger bug. In boot code there is a function resolveTTSpecial and its commentary:
-- tries to resolve things that would otherwise get mangled in the -- rest of the resolve world. I'll leave it for Albi to fix those -- things. (RSS 1/-86)
In this patch I use this function to express the resolved type. It' a temporary hack and I'm not sure that this patch is correct (see the code). Second, I add two other tests: I check the equality of the Symbol(s) and the two expansion points (two different symbols crash axiom for example). Regards
If you add this text to the file .axiom.input (interpreted at the start of axiom) you will crash axiom:
1.0::UnivariatePuiseuxSeries(Expression Float,x,0.0
Regards
Here is another patch if you run into problem with a 'maformed patch 'message .Change to axiom directory: cat power-series.patch2 |patch -0Cheers This patch doesn't check the equality of the expansion points and the symbols for different power series. Example:
a:=series(sin(x)) b:=taylor(sin(x),x=2) a*bBreak if expansion point or variable are not equal for UnivariatePowerSeriesCategory? (fix Sun, 22 May 2005 09:22:00 -0500 bug)