CM SageMath code
Project description
=========================
REpository of Complex multiplication SageMath code
=========================
.. image:: https://travis-ci.org/mstreng/recip.svg?branch=master
:target: https://travis-ci.org/mstreng/recip
Once the Travis CI set-up has been completed, the documentation for the package can be found at https://mstreng.github.io/recip/doc/html/
Installation
------------
Local install from source
^^^^^^^^^^^^^^^^^^^^^^^^^
Download the source from the git repository::
$ git clone https://github.com/mstreng/recip.git
Change to the root directory and run::
$ sage -pip install --upgrade --no-index -v .
For convenience this package contains a [makefile](makefile) with this
and other often used commands. Should you wish too, you can use the
shorthand::
$ make install
Usage
-----
Once the package is installed, you can use it in Sage with::
sage: from recip import *
sage: CM_Field([5,5,5])
CM Number Field in alpha with defining polynomial x^4 + 5*x^2 + 5
Source code
-----------
All source code is stored in the folder ``recip`` using the same name as the
package. This is not mandatory but highly recommended for clarity. All source folder
must contain a ``__init__.py`` file with needed includes.
Tests
-----
This package is configured for tests written in the documentation
strings, also known as ``doctests``. For examples, see this
[source file](recip/ultimate_question.py). See also
[SageMath's coding conventions and best practices document](http://doc.sagemath.org/html/en/developer/coding_basics.html#writing-testable-examples).
With additional configuration, it would be possible to include unit
tests as well.
Once the package is installed, one can use the SageMath test system
configured in ``setup.py`` to run the tests::
$ sage setup.py test
This is just calling ``sage -t`` with appropriate flags.
Shorthand::
$ make test
Documentation
-------------
The documentation of the package can be generated using Sage's
``Sphinx`` installation::
$ cd docs
$ sage -sh -c "make html"
Shorthand::
$ make doc
#*****************************************************************************
# Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Marco Streng
# <marco.streng@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#*****************************************************************************
RECIP -- REpository of Complex multIPlication SageMath code.
This started out as code meant for computing with Shimura's RECIProcity law,
but grew into a collection of much of the SageMath code written by me for my
research.
Version 0.2.5 (tested with SageMath 8.0, short tests only).
When using this package in a publication, it is highly likely that it is
approprate certain publications. Please CITE the relevant JOURNAL publications,
as well as giving the URL of this repository.
Here is a list of functionalities of this repository, together with the
publications that should be cited when you use them, and the name of the file
that has examples.
* Igusa class polynomials (proven correct)
See both "Igusa class polynomials (not proven correct)" and
"Denominators of Igusa class polynomials" below.
* Non-maximal orders of CM-fields and their polarized ideal classes and Igusa
class polynomials.
cite [BissonStreng] (code is written for, part of, and based on, this publication)
see orders.sage for examples
* (n,n)-isogenies between polarized ideal classes
cite [BLS]
see bls.sage for examples
* Computations related to Shimura's reciprocity law
cite [Streng12] (code is written for, part of, and based on, this publication)
see article.sage for examples
* Igusa class polynomials (not proven correct)
cite [Streng14], [vWamelen], [Weng] (code is based on these publications)
* Denominators of Igusa class polynomials
cite [BouyerStreng] (code is written for, and hence part of, this publication)
and depending on how the code is used, and on the kind of quartic CM-field,
also cite one or more of:
[BouyerStreng], [GL], [LV], [Yang] (large parts of the code are based on these)
see denominators.sage for examples
Here is a list of SageMath programs written by my students and me that is not part
of this repository.
* Height reduction of binary forms and hyperelliptic curves.
(with Florian Bouyer)
https://bitbucket.org/mstreng/reduce
cite [BouyerS] (code is written for, part of, and based on, this publication)
* Solving conics and Mestre's algorithm
(with Florian Bouyer)
now part of the standard SageMath functionality
* Hilbert modular polynomials
(by Chloe Martindale)
contact her if you are interested
* CM class number one for genus 2 and 3
(by Pınar Kılıçer)
contact her if you are interested
To use the latest version of this package directly from the web, start SageMath
and type::
sage: load("https://bitbucket.org/mstreng/recip/raw/master/recip_online.sage")
To use this package offline, download it first and extract it to some
directory, say "somewhere_on_my_drive/recip", then start SageMath and type::
sage: load_attach_path("somewhere_on_my_drive/recip")
sage: load("recip.sage")
[ABLPV] - Comparing arithmetic intersection formulas for denominators of
Igusa class polynomials -- Jacqueline Anderson, Jennifer S.
Balakrishnan, Kristin Lauter, Jennifer Park, and Bianca Viray
[BissonS] - On polarised class groups of orders in quartic CM fields --
Gaetan Bisson and Marco Streng
http://arxiv.org/abs/1302.3756
[BLS] - Abelian surfaces admitting an (l,l)-endomorphism -- Reinier Broker,
Kristin Lauter, and Marco Streng
accepted for publication by Journal of Algebra, 2013
http://arxiv.org/abs/1106.1884
[BouyerS] - Examples of CM curves of genus 2 defined over the reflex field --
Florian Bouyer and Marco Streng
http://arxiv.org/abs/1307.0486
[GJLSVW] - Igusa class polynomials, embeddings of quartic CM fields, and
arithmetic intersection theory -- Helen Grundman, Jennifer
Johnson-Leung, Kristin Lauter, Adriana Salerno, Bianca Viray, and
Erika Wittenborn
http://arxiv.org/abs/1006.0208
[GL] - Genus 2 curves with complex multiplication -- Eyal Goren and
Kristin Lauter
[LV] - An arithmetic intersection formula for denominators of Igusa class
polynomials -- Kristin Lauter and Bianca Viray
arXiv:1210.7841v1
[Yang] - Arithmetic interseciton on a Hilbert modular surface and the
Faltings height -- Tonghai Yang
http://www.math.wisc.edu/~thyang/general4L.pdf
[recip] - recip, SageMath package for explicit complex multiplication -- Marco
Streng
https://bitbucket.org/mstreng/recip/
[Streng12]- An explicit version of Shimura's reciprocity law for Siegel
modular functions -- Marco Streng
arXiv:1201.0020
[Streng14]- Computing Igusa Class Polynomials
Mathematics of Computation, Vol. 83 (2014), pp 275--309
REpository of Complex multiplication SageMath code
=========================
.. image:: https://travis-ci.org/mstreng/recip.svg?branch=master
:target: https://travis-ci.org/mstreng/recip
Once the Travis CI set-up has been completed, the documentation for the package can be found at https://mstreng.github.io/recip/doc/html/
Installation
------------
Local install from source
^^^^^^^^^^^^^^^^^^^^^^^^^
Download the source from the git repository::
$ git clone https://github.com/mstreng/recip.git
Change to the root directory and run::
$ sage -pip install --upgrade --no-index -v .
For convenience this package contains a [makefile](makefile) with this
and other often used commands. Should you wish too, you can use the
shorthand::
$ make install
Usage
-----
Once the package is installed, you can use it in Sage with::
sage: from recip import *
sage: CM_Field([5,5,5])
CM Number Field in alpha with defining polynomial x^4 + 5*x^2 + 5
Source code
-----------
All source code is stored in the folder ``recip`` using the same name as the
package. This is not mandatory but highly recommended for clarity. All source folder
must contain a ``__init__.py`` file with needed includes.
Tests
-----
This package is configured for tests written in the documentation
strings, also known as ``doctests``. For examples, see this
[source file](recip/ultimate_question.py). See also
[SageMath's coding conventions and best practices document](http://doc.sagemath.org/html/en/developer/coding_basics.html#writing-testable-examples).
With additional configuration, it would be possible to include unit
tests as well.
Once the package is installed, one can use the SageMath test system
configured in ``setup.py`` to run the tests::
$ sage setup.py test
This is just calling ``sage -t`` with appropriate flags.
Shorthand::
$ make test
Documentation
-------------
The documentation of the package can be generated using Sage's
``Sphinx`` installation::
$ cd docs
$ sage -sh -c "make html"
Shorthand::
$ make doc
#*****************************************************************************
# Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Marco Streng
# <marco.streng@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#*****************************************************************************
RECIP -- REpository of Complex multIPlication SageMath code.
This started out as code meant for computing with Shimura's RECIProcity law,
but grew into a collection of much of the SageMath code written by me for my
research.
Version 0.2.5 (tested with SageMath 8.0, short tests only).
When using this package in a publication, it is highly likely that it is
approprate certain publications. Please CITE the relevant JOURNAL publications,
as well as giving the URL of this repository.
Here is a list of functionalities of this repository, together with the
publications that should be cited when you use them, and the name of the file
that has examples.
* Igusa class polynomials (proven correct)
See both "Igusa class polynomials (not proven correct)" and
"Denominators of Igusa class polynomials" below.
* Non-maximal orders of CM-fields and their polarized ideal classes and Igusa
class polynomials.
cite [BissonStreng] (code is written for, part of, and based on, this publication)
see orders.sage for examples
* (n,n)-isogenies between polarized ideal classes
cite [BLS]
see bls.sage for examples
* Computations related to Shimura's reciprocity law
cite [Streng12] (code is written for, part of, and based on, this publication)
see article.sage for examples
* Igusa class polynomials (not proven correct)
cite [Streng14], [vWamelen], [Weng] (code is based on these publications)
* Denominators of Igusa class polynomials
cite [BouyerStreng] (code is written for, and hence part of, this publication)
and depending on how the code is used, and on the kind of quartic CM-field,
also cite one or more of:
[BouyerStreng], [GL], [LV], [Yang] (large parts of the code are based on these)
see denominators.sage for examples
Here is a list of SageMath programs written by my students and me that is not part
of this repository.
* Height reduction of binary forms and hyperelliptic curves.
(with Florian Bouyer)
https://bitbucket.org/mstreng/reduce
cite [BouyerS] (code is written for, part of, and based on, this publication)
* Solving conics and Mestre's algorithm
(with Florian Bouyer)
now part of the standard SageMath functionality
* Hilbert modular polynomials
(by Chloe Martindale)
contact her if you are interested
* CM class number one for genus 2 and 3
(by Pınar Kılıçer)
contact her if you are interested
To use the latest version of this package directly from the web, start SageMath
and type::
sage: load("https://bitbucket.org/mstreng/recip/raw/master/recip_online.sage")
To use this package offline, download it first and extract it to some
directory, say "somewhere_on_my_drive/recip", then start SageMath and type::
sage: load_attach_path("somewhere_on_my_drive/recip")
sage: load("recip.sage")
[ABLPV] - Comparing arithmetic intersection formulas for denominators of
Igusa class polynomials -- Jacqueline Anderson, Jennifer S.
Balakrishnan, Kristin Lauter, Jennifer Park, and Bianca Viray
[BissonS] - On polarised class groups of orders in quartic CM fields --
Gaetan Bisson and Marco Streng
http://arxiv.org/abs/1302.3756
[BLS] - Abelian surfaces admitting an (l,l)-endomorphism -- Reinier Broker,
Kristin Lauter, and Marco Streng
accepted for publication by Journal of Algebra, 2013
http://arxiv.org/abs/1106.1884
[BouyerS] - Examples of CM curves of genus 2 defined over the reflex field --
Florian Bouyer and Marco Streng
http://arxiv.org/abs/1307.0486
[GJLSVW] - Igusa class polynomials, embeddings of quartic CM fields, and
arithmetic intersection theory -- Helen Grundman, Jennifer
Johnson-Leung, Kristin Lauter, Adriana Salerno, Bianca Viray, and
Erika Wittenborn
http://arxiv.org/abs/1006.0208
[GL] - Genus 2 curves with complex multiplication -- Eyal Goren and
Kristin Lauter
[LV] - An arithmetic intersection formula for denominators of Igusa class
polynomials -- Kristin Lauter and Bianca Viray
arXiv:1210.7841v1
[Yang] - Arithmetic interseciton on a Hilbert modular surface and the
Faltings height -- Tonghai Yang
http://www.math.wisc.edu/~thyang/general4L.pdf
[recip] - recip, SageMath package for explicit complex multiplication -- Marco
Streng
https://bitbucket.org/mstreng/recip/
[Streng12]- An explicit version of Shimura's reciprocity law for Siegel
modular functions -- Marco Streng
arXiv:1201.0020
[Streng14]- Computing Igusa Class Polynomials
Mathematics of Computation, Vol. 83 (2014), pp 275--309
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
recip-3.0.1.tar.gz
(140.0 kB
view hashes)