QiPy documentation

QiPy is a Python library to work with quadratic integers. Well-known examples are Gaussian integers and Eisenstein integers. Besides, QiPy implements ideals, ideal classes and class groups of quadratic integer rings.

This library has been exhaustively tested with unit tests and property testing.

Installation

QiPy is written in Python 3 and uses the Python library SymPy. Therefore, Python 3 and SymPy must be installed in your computer.

The easiest way to install QiPy is with pip :

pip3 install qipy

Examples of usage

Computing \(\frac{1 + i}{1 - i}\) in \(\mathbb{Z}[i]\):

>>> Zi = QuadraticIntegerRing(-1)
>>> Zi("1 + I") / Zi("1 - I")
I

Factoring \(2\) in \(\mathbb{Z}[i]\):

>>> Zi = QuadraticIntegerRing(-1)
>>> Zi(2).factor()
[1 + I, 1 - I]

Testing whether the ideal \(\langle 3, 1 + \sqrt{-5} \rangle\) in \(\mathcal{O}_{\mathbb{Q}[\sqrt{-5}]}\) is principal:

>>> O = QuadraticIntegerRing(-5)
>>> Ideal(O(3), O("1 + sqrt(-5)")).is_principal()
False

Factoring the ideal \(\langle 2 \rangle\) in \(\mathbb{Z}[i]\):

>>> Zi = QuadraticIntegerRing(-1)
>>> Ideal(Zi(2)).factor()
[<1 + I,2*I>, <1 + I,2*I>]

Computing the order of the ideal class with representative \(\langle 3, 1 + \sqrt{-5} \rangle\) in \(\mathcal{O}_{\mathbb{Q}[\sqrt{-5}]}\):

>>> O = QuadraticIntegerRing(-5)
>>> a = IdealClass(Ideal(O(3), O("1 + sqrt(-5)")))
>>> a.order
2

Computing the class number of \(\mathcal{O}_{\mathbb{Q}[\sqrt{-5}]}\):

>>> G = ClassGroup(-5)
>>> G.class_number
2

Contents

QiPy has been implemented in three main modules. See the documentation of each module for descriptions and examples of their funcionalities.