Package: recip
=========================REpository of Complex multiplication SageMath code=========================.. image:: https://travis-ci.org/mstreng/recip.svg?branch=master:target: https://travis-ci.org/mstreng/recipOnce 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.gitChange to the root directory and run::$ sage -pip install --upgrade --no-index -v .For convenience this package contains a [makefile](makefile) with thisand other often used commands. Should you wish too, you can use theshorthand::$ make installUsage-----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 + 5Source code-----------All source code is stored in the folder ``recip`` using the same name as thepackage. This is not mandatory but highly recommended for clarity. All source foldermust contain a ``__init__.py`` file with needed includes.Tests-----This package is configured for tests written in the documentationstrings, 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 unittests as well.Once the package is installed, one can use the SageMath test systemconfigured in ``setup.py`` to run the tests::$ sage setup.py testThis is just calling ``sage -t`` with appropriate flags.Shorthand::$ make testDocumentation-------------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 myresearch.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 isapproprate 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 thepublications that should be cited when you use them, and the name of the filethat 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 Igusaclass 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 classescite [BLS]see bls.sage for examples* Computations related to Shimura's reciprocity lawcite [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 polynomialscite [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 examplesHere is a list of SageMath programs written by my students and me that is not partof this repository.* Height reduction of binary forms and hyperelliptic curves.(with Florian Bouyer)https://bitbucket.org/mstreng/reducecite [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 interestedTo use the latest version of this package directly from the web, start SageMathand 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 somedirectory, 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 ofIgusa 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 Strenghttp://arxiv.org/abs/1302.3756[BLS]    -  Abelian surfaces admitting an (l,l)-endomorphism -- Reinier Broker,Kristin Lauter, and Marco Strengaccepted for publication by Journal of Algebra, 2013http://arxiv.org/abs/1106.1884[BouyerS] - Examples of CM curves of genus 2 defined over the reflex field --Florian Bouyer and Marco Strenghttp://arxiv.org/abs/1307.0486[GJLSVW] -  Igusa class polynomials, embeddings of quartic CM fields, andarithmetic intersection theory -- Helen Grundman, JenniferJohnson-Leung, Kristin Lauter, Adriana Salerno, Bianca Viray, andErika Wittenbornhttp://arxiv.org/abs/1006.0208[GL]     -  Genus 2 curves with complex multiplication -- Eyal Goren andKristin Lauter[LV]     -  An arithmetic intersection formula for denominators of Igusa classpolynomials -- Kristin Lauter and Bianca VirayarXiv:1210.7841v1[Yang]   -  Arithmetic interseciton on a Hilbert modular surface and theFaltings height -- Tonghai Yanghttp://www.math.wisc.edu/~thyang/general4L.pdf[recip]  -  recip, SageMath package for explicit complex multiplication -- MarcoStrenghttps://bitbucket.org/mstreng/recip/[Streng12]-  An explicit version of Shimura's reciprocity law for Siegelmodular functions -- Marco StrengarXiv:1201.0020[Streng14]-  Computing Igusa Class PolynomialsMathematics of Computation, Vol. 83 (2014), pp 275--309