[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Axiom-developer] I can't translate from the interpreter to the compiler
From: |
Francois Maltey |
Subject: |
[Axiom-developer] I can't translate from the interpreter to the compiler |
Date: |
21 Mar 2006 21:47:50 +0100 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 |
Hello,
In the interpreter I have this single line :
fct (n, x) == eval (real ((c + %i * s)^n), [c, s], [cos x, sin x])
I want to add this function in manip.spad... :-(
So I add theses macros :
CI ==> Complex Integer
LV ==> OrderedVariableList [c,s]
PCI ==> SparseMultivariatePolynomial(Complex Integer, LV)
PI ==> SparseMultivariatePolynomial(Integer, LV)
I add theses variables :
v1c := ((variable (c))@Union (OrderedVariableList [c,s], "failed"))::LV
v1s := ((variable (s))@Union (OrderedVariableList [c,s], "failed"))::LV
vc := v1c :: PCI
vs := v1s :: PCI
ve : PCI := vc + (imaginary()::CI) * vs -- the (c + %i * s)
The interpreter is fine : 8 caracters for the Moivre formula.
I become stupid in front of the compiler : I must type theses 5 lines.
And now after hours, axiom reject both
real (ve^n)
map (t +-> real t, ve^n)
How can I coerce this SMP Complex Integer to SMP Integer ?
How can I use eval from SMP (Integer, [c,s]) to SMP (R, K) ?
where R is the basis Ring of the Expression
and K are the kernels? functions of Expression.
I hope the end of my program is easier to translate in *.spad.
If someone can help me, again...
the Mupad code for this is :
if t = DOM_INT then
y := y / n;
S:= genident("S");
C:= genident("C");
return(subs(expand(((C+I*S)^n-(C-I*S)^n)/2/I),[C=cos(y),S=sin(y)]))
end_if
If possible I prefer use real and imag, and no C+I*S and C-I*S.
But today I can't get any results.
François, in France
And thanks a lot for your reponses about cartesian product, types, etc.
- [Axiom-developer] I can't translate from the interpreter to the compiler,
Francois Maltey <=