[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Axiom-developer] [#136 cercion of power series] (new)
From: |
Bill Page |
Subject: |
[Axiom-developer] [#136 cercion of power series] (new) |
Date: |
Sun, 27 Mar 2005 12:34:41 -0600 |
Changes
http://page.axiom-developer.org/zope/mathaction/136CercionOfPowerSeries/diff
--
Original Date: Fri, 25 Mar 2005 10:47:55 -0600
In axiom the cercion of power series is really strange:
- ExpressionToUnivariatePowerSeries (function: series,taylor,laurent...)
return Any type.
- When this Any type is printed, the series is coerced. For example to
UnivariatePuiseuxSeries.
- This process of coercion is strange.
I will give some hint to understand this. First here is the actions that you
have to do for a better understanding of this bug.
Here the interpreter has to coerce the series (EXPR (INT OR OTHER)), the
variable and the expansion point in type.
In Axiom trace all these functions: P2Uls P2Upxs P2Uts Expr2Up NDmp2domain
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
Now you can create power series integer::
a:=series(sin(x))
Beware axiom will crash.
Now type::
a*1.0
restart do the same and type:
1.0*a
You will see that axiom in this process do not coerce all type (for example
sometimes 0.0 (expansion point) remain Integer but of type EXPR FLOAT).
Normally::
x in type is of type Symbol
0.0 (expansion point is of type Expression (type of internal representation
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.
Test it, check it, enhance it.
Regards
<a href="power-series.patch">power-series.patch</a>
>From unknown Fri Mar 25 11:03:14 -0600 2005
From: unknown
Date: Fri, 25 Mar 2005 11:03:14 -0600
Subject: This result is cached
Message-ID: <address@hidden>
The previous patch change the resolved type. It's internally cached and
resolveTTspecial is only invoked once.
>From unknown Fri Mar 25 11:08:50 -0600 2005
From: unknown
Date: Fri, 25 Mar 2005 11:08:50 -0600
Subject: .axiom.input
Message-ID: <address@hidden>
After the above patch applied one bug remain:
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
--
forwarded from http://page.axiom-developer.org/zope/mathaction/address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Axiom-developer] [#136 cercion of power series] (new),
Bill Page <=