#8327: Implement the universal cyclotomic field, using Zumbroich basis
--------------------------------------------------------------------------------------------------------------------+
Reporter: nthiery
| Owner:
Type: enhancement
| Status: needs_review
Priority: major
| Milestone: sage-4.8
Component: number fields
| Keywords: Cyclotomic field,
Zumbroich basis
Work_issues: Find dependency or rebase first patch. Fix doctests. Needs more
doctests and Sphinxified docstrings. | Upstream: N/A
Reviewer:
| Author: Christian Stump, Simon
King
Merged:
| Dependencies:
--------------------------------------------------------------------------------------------------------------------+
Changes (by stumpc5):
* status: needs_work => needs_review
Old description:
> This patch provides the universal cyclotomic field
>
> {{{
> sage: UCF
> Universal Cyclotomic Field endowed with the Zumbroich basis
> }}}
>
> in sage. This field is the smallest field extension of QQ which contains
> all roots of unity.
>
> {{{
> sage: E(3); E(3)^3
> E(3)
> 1
> sage: E(6); E(6)^2; E(6)^3; E(6)^6
> -E(3)^2
> E(3)
> -1
> 1
> }}}
>
> It comes equipped with a distinguished basis, called the Zumbroich
> basis, which gives, for any n, A basis of QQ( E(n) ) over QQ, where (n,k)
> stands for E(n)^k.
>
> {{{
> sage: UCF.zumbroich_basis(6)
> [(6, 2), (6, 4)]
> }}}
>
> As seen for E(6), every element in UCF is expressed in terms of the
> smallest cyclotomic field in which it is contained.
>
> {{{
> sage: E(6)*E(4)
> -E(12)^11
> }}}
>
> It provides arithmetics on UCF as addition, multiplication, and inverses:
>
> {{{
> sage: E(3)+E(4)
> E(12)^4 - E(12)^7 - E(12)^11
> sage: E(3)*E(4)
> E(12)^7
> sage: (E(3)+E(4)).inverse()
> E(12)^4 + E(12)^8 + E(12)^11
> sage: (E(3)+E(4))*(E(3)+E(4)).inverse()
> 1
> }}}
>
> And also things like Galois conjugates.
>
> {{{
> sage: (E(3)+E(4)).galois_conjugates()
> [E(12)^4 - E(12)^7 - E(12)^11, -E(12)^7 + E(12)^8 - E(12)^11, E(12)^4
> + E(12)^7 + E(12)^11, E(12)^7 + E(12)^8 + E(12)^11]
> }}}
>
> The ticket does not use the gap interface; it depends on #9651 (Addition
> of combinatorial free module).
>
> __Apply__
>
> * [attachment:trac_8327_universal_cyclotomic_field-cs.patch]
> * [attachment:trac_8327_universal_cyclotomic_field_new_cython-sk.patch]
New description:
This patch provides the universal cyclotomic field
{{{
sage: UCF
Universal Cyclotomic Field endowed with the Zumbroich basis
}}}
in sage. This field is the smallest field extension of QQ which contains
all roots of unity.
{{{
sage: E(3); E(3)^3
E(3)
1
sage: E(6); E(6)^2; E(6)^3; E(6)^6
-E(3)^2
E(3)
-1
1
}}}
It comes equipped with a distinguished basis, called the Zumbroich
basis, which gives, for any n, A basis of QQ( E(n) ) over QQ, where (n,k)
stands for E(n)^k.
{{{
sage: UCF.zumbroich_basis(6)
[(6, 2), (6, 4)]
}}}
As seen for E(6), every element in UCF is expressed in terms of the
smallest cyclotomic field in which it is contained.
{{{
sage: E(6)*E(4)
-E(12)^11
}}}
It provides arithmetics on UCF as addition, multiplication, and inverses:
{{{
sage: E(3)+E(4)
E(12)^4 - E(12)^7 - E(12)^11
sage: E(3)*E(4)
E(12)^7
sage: (E(3)+E(4)).inverse()
E(12)^4 + E(12)^8 + E(12)^11
sage: (E(3)+E(4))*(E(3)+E(4)).inverse()
1
}}}
And also things like Galois conjugates.
{{{
sage: (E(3)+E(4)).galois_conjugates()
[E(12)^4 - E(12)^7 - E(12)^11, -E(12)^7 + E(12)^8 - E(12)^11, E(12)^4
+ E(12)^7 + E(12)^11, E(12)^7 + E(12)^8 + E(12)^11]
}}}
The ticket does not use the gap interface; it depends on #9651 (Addition
of combinatorial free module).
__Apply__
* [attachment:trac_8327_universal_cyclotomic_field-cs.patch]
--
Comment:
I found the bug and fixed it, all the above doctests now work (but only on
4.7.1, the other version is still building and will take more time).
What about "needs more doctests and Sphinxified docstrings"? I agree that
the cython part is still not well documented. Could you be specific where
I should explain better what's going on? Part of the problem is that
computing the Zumbroich basis is something that is not simple to
understand without really looking at the paper. And even after
understanding that, everything becomes unreadable after implementing it in
a (hopefully fairly) fast way in cython...
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/8327#comment:36>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.