Copyright | (c) 2016 Chris Fredrickson Google Inc. |
---|---|
License | MIT |
Maintainer | Chris Fredrickson <chris.p.fredrickson@gmail.com> |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
This module exports functions for manipulating Gaussian integers, including computing their prime factorisations.
Synopsis
- data GaussianInteger = (:+) {}
- ι :: GaussianInteger
- conjugate :: GaussianInteger -> GaussianInteger
- norm :: GaussianInteger -> Integer
- primes :: Infinite (Prime GaussianInteger)
- findPrime :: Prime Integer -> Prime GaussianInteger
Documentation
data GaussianInteger Source #
A Gaussian integer is a+bi, where a and b are both integers.
Instances
ι :: 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 :: Infinite (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+ι