arithmoi-0.12.0.2: Efficient basic number-theoretic functions.
Copyright(c) 2016 Chris Fredrickson Google Inc.
LicenseMIT
MaintainerChris Fredrickson <chris.p.fredrickson@gmail.com>
Safe HaskellNone
LanguageHaskell2010

Math.NumberTheory.Quadratic.GaussianIntegers

Description

This module exports functions for manipulating Gaussian integers, including computing their prime factorisations.

Synopsis

Documentation

data GaussianInteger Source #

A Gaussian integer is a+bi, where a and b are both integers.

Constructors

(:+) infix 6 

Fields

Instances

Instances details
Eq GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Num GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Ord GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Show GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Generic GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Associated Types

type Rep GaussianInteger :: Type -> Type #

NFData GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Methods

rnf :: GaussianInteger -> () #

GcdDomain GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Euclidean GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Semiring GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

Ring GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

UniqueFactorisation GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

type Rep GaussianInteger Source # 
Instance details

Defined in Math.NumberTheory.Quadratic.GaussianIntegers

type Rep GaussianInteger = D1 ('MetaData "GaussianInteger" "Math.NumberTheory.Quadratic.GaussianIntegers" "arithmoi-0.12.0.2-1LBW47IaiR6Hp9NDnAlXcl" 'False) (C1 ('MetaCons ":+" 'PrefixI 'True) (S1 ('MetaSel ('Just "real") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Integer) :*: S1 ('MetaSel ('Just "imag") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Integer)))

ι :: GaussianInteger Source #

The imaginary unit, where

ι .^ 2 == -1

conjugate :: GaussianInteger -> GaussianInteger Source #

Conjugate a Gaussian integer.

norm :: GaussianInteger -> Integer Source #

The square of the magnitude of a Gaussian integer.

primes :: [Prime GaussianInteger] Source #

An infinite list of the Gaussian primes. Uses primes in Z to exhaustively generate all Gaussian primes (up to associates), in order of ascending magnitude.

>>> take 10 primes
[Prime 1+ι,Prime 2+ι,Prime 1+2*ι,Prime 3,Prime 3+2*ι,Prime 2+3*ι,Prime 4+ι,Prime 1+4*ι,Prime 5+2*ι,Prime 2+5*ι]

findPrime :: Prime Integer -> Prime GaussianInteger Source #

Find a Gaussian integer whose norm is the given prime number of form 4k + 1 using Hermite-Serret algorithm.

>>> import Math.NumberTheory.Primes (nextPrime)
>>> findPrime (nextPrime 5)
Prime 2+ι