Bill Allombert on Fri, 09 Jul 2004 22:52:25 +0200

 Re: complex arithmetic

```On Mon, Jul 05, 2004 at 03:49:26PM -0400, Jacques Le Normand wrote:
> Hello,
> I'd like to do exact arithmetic in Q[e^(Pi*I/n)]. for example, in GAP I would
> type "E(24) * E(24)" and it would output "E(12)"  (E(n) is e^(Pi*I/n) or
> somesuch in GAP). This is fine; however, GAP is woefully slow, and I want to
> use libPari, which is speedy. n is fixed before any computation starts. is
> there any way of doing this in Pari? thanks

E(n) is e^(2*Pi*I/n) in GAP.

You can define E(n) by Mod(x,polcyclo(n)). However in PARI, you have to
take care of embedding yourself. One way to work around that is to
embed everything in a large cyclotomic field.
For example, if everything live in Q[e^(2*Pi*I/N)] for a suitable N,
you can do:
E(n)=Mod(x^(N/n),polcyclo(n))

For example
? N=24;
? E(24)^2==E(12)
%2 = 1
? E(6)^6
%3 = 1

More generally, PARI handle Q[exp(2*Pi*I/n)] as Q[X]/(P) where
P is is nth-cyclotomic polynomial (P=polcyclo(n) in GP notation).
The element A mod P of Q[X]/(P) is stored as Mod(A,P) with GP.
You can do computation with Mod(A,P) with +,-,*,/,^ as usual.

Cheers,
Bill.

```