axiom-developer
[Top][All Lists]

## [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])

So I add theses macros :

CI      ==> Complex Integer
LV      ==> OrderedVariableList [c,s]
PCI     ==> SparseMultivariatePolynomial(Complex Integer, LV)
PI      ==> SparseMultivariatePolynomial(Integer, LV)

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.

```