|
|
|
last edited 17 years ago by alfredo |
| 1 2 3 4 5 6 | ||
|
Editor: gdr
Time: 2008/10/13 20:30:41 GMT-7 |
||
| Note: Fixed in OpenAxiom | ||
added:
From gdr Mon Oct 13 20:30:41 -0700 2008
From: gdr
Date: Mon, 13 Oct 2008 20:30:41 -0700
Subject: Fixed in OpenAxiom
Message-ID: <20081013203041-0700@axiom-wiki.newsynthesis.org>
Axiom provides functionality to evaluate operators using a given evaluation function. Unfortunately, it is broken.
g := operator 'g;
eval(g(1783), g, i+->i)
| (1) |
eval(g(n), g, i+->i)
| (2) |
eval(a*g(n), g, i+->i)
| (3) |
eval(a*g(1783), g, i+->i)
| (4) |
I guess that the problem is in 'smprep$FS':
smprep(lop, lexp, lfunc, p) ==
..(v := mainVariable p) case "failed" => p::%
..symbolIfCan(k := v::K) case SY => p::%
..g := (op := operator k)
.....(arg := [eval(a,lop,lexp,lfunc) for a in argument k]$List(%))
..q := map(eval(#1::%, lop, lexp, lfunc),
...........univariate(p, k))$SparseUnivariatePolynomialFunctions2(MP, %)
..(n := position(name op, lop)) < minIndex lop => q g
..a:% := 0
..f := eval((lfunc.n) arg, lop, lexp, lfunc)
..e := lexp.n
..while q ^= 0 repeat
....m := degree q
....qr := divide(m, e)
....t1 := f ** (qr.quotient)::N
....t2 := g ** (qr.remainder)::N
....a := a + leadingCoefficient(q) * t1 * t2
....q := reductum q
..a
It seems that Axiom picks the wrong mainVariable in the broken case, namely a instead of g(1783). I badly need this fixed...
Martin
no patch available
http://axiom.svn.sourceforge.net/viewvc/axiom/branches/wh-sandbox/src/algebra/fspace.spad.pamphlet?r1=432&r2=585