aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: a376912a9f9cab222de2be02619139a6a72b20c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Kummer Degrees
A one-file SageMath script that computes the degrees of Kummer Extensions of
the rational numbers. In order to use the functions KummerDegree and
TotalKummerFailure (described below), simply download the file
kummer_degree.sage and include it in your project, for example with
attach("kummer_degree.sage").

A Kummer Extension of Q is a field extension of the form Q_{M,N}:=
Q(\zeta_M,G^{1/N}), where:
* M and N are integers with N dividing M;
* \zeta_M is a root of unity of order M;
* G is a finitely generated subgroup of the multiplicative group of Q;
* G^{1/N} is the set of all elements x of an algebraic closure of Q such that
x^n belongs to G.

The main importance of this script is to show that, for a fixed group G as
above, one can compute in a finite time a finite-case-distinction formula
that computes the degrees [Q_{M,N}:Q] of such extensions when M and N vary.
A preprint by A. Perucca, P. Sgobba and S. Tronto that explains how this is
possible can be found in the docs folder.

I have not computed accurately the complexity of the code. However, I can
say the following:
* The complexity is exponential in the rank r of the group.
* The script can become slow if the generators of the group G are n-th powers
for very high n.
* The generators given are factored as product of prime powers, so very large
generators can slow the script as well.
* The code is very fast for groups of small rank (e.g. up to 5) and generated
by elements of magnitude 10^6; higher ranks are feasible as well with smaller
generators.
* The complexity of the calculation of a call of KummerDegree(G,M,N) does not
depend on M and N.


## KummerDegree( G, M, N )

Returns the degree of the Kummer extension Q_{M,N}. Again, G is given simply as a list of generators and it may contain torsion.

Examples:

```
sage: KummerDegree([-36,12,-1],120,24)
4608
```

```
sage: KummerDegree([144,27,49/81,-1/125,121/13],36*10^6,36*10^6)
1007769600000000000000000000000000000000000
```

## TotalKummerFailure( G )

Outputs the description of the failure of maximality for all possible values of M and N. Here G is given as a list of generators (not necessarily a basis). G can also contain torsion. If G = <-1>, the program stops immediately.

Example:

```

sage: TotalKummerFailure([-36,12,-1])
M_0 = 24
N_0 = 8

The following table shows the total failure of Kummer degrees in case the quotient M/N is EVEN.
The degree of the Kummer extension (M,N) is e / f, where e = phi(M)*N^rank(G) if N is odd and e = 2*phi(M)*N^rank(G) if N is even and f is the entry of the table below at the row labelled with gcd(N,N0) and the column labelled with gcd(M,M0).

      |   1   2   3   4   6   8   12   24
  -   -   -   -   -   -   -   -   -    -
  1   |   1   1   1   1   1   1   1    1
  2   |   4   4   4   4   4   4   8    8
  4   |   4   4   4   4   4   8   8    16
  8   |   8   8   8   8   8   8   8    16

The following table shows the total failure of Kummer degrees if the quotient M/N is ODD and is read as the previous one.

      |   1   2   3   4   6   8   12   24
  -   -   -   -   -   -   -   -   -    -
  1   |   1   1   1   1   1   1   1    1
  2   |   2   2   2   2   4   2   4    4
  4   |   2   2   2   4   4   4   8    8
  8   |   4   4   4   4   4   4   8    8

```


Generated with cgit - Back to sebastiano.tronto.net