Opened 12 years ago

Implement the universal cyclotomic field, using Zumbroich basis — at Initial Version

Reported by: Owned by: nthiery davidloeffler major sage-5.7 number fields Cyclotomic field, Zumbroich basis sage-combinat, cwitty N/A

Description

Here is a user story for this feature.

We construct the universal cyclotomic field::

```    sage: F = CyclotomicField()
```

This field contains all roots of unity:

```    sage: z3 = F.zeta(3)
sage: z3
E(3)
sage: z3^3
1
sage: z5 = F.zeta(5)
sage: z5
E(5)
sage: z5^5
1
```

It comes equipped with a distinguished basis, called the Zumbroich basis, which consists of a strict subset of all roots of unity::

```    sage: z9 = F.zeta(9)
-E(9)^4-E(9)^7
sage: z3 * z5
sage: E(15)^8
sage: z3 + z5
-E(15)^2-2*E(15)^8-E(15)^11-E(15)^13-E(15)^14
sage: [z9^i for i in range(0,9)]
[1, -E(9)^4-E(9)^7, E(9)^2, E(3), E(9)^4, E(9)^5, E(3)^2, E(9)^7, -E(9)^2-E(9)^5 ]
```

Note: we might want some other style of pretty printing.

The following is called AsRootOfUnity? in Chevie; we might want instead to use (z1*z3).multiplicative_order()::

```    sage: (z1*z3).as_root_of_unity()
11/18
```

Depending on the progress on #6391 (lib gap), we might want to implement this directly in Sage or to instead expose GAP's implementation, creating elements as in::

```sage: z5 = gap("E(5)")
sage: z3 = gap("E(3)")
sage: z3+z5
-E(15)^2-2*E(15)^8-E(15)^11-E(15)^13-E(15)^14
```

Change History (0)

Note: See TracTickets for help on using tickets.