| Copyright | (c) 2016 Chris Fredrickson Google Inc. |
|---|---|
| License | MIT |
| Maintainer | Chris Fredrickson <chris.p.fredrickson@gmail.com> |
| Safe Haskell | None |
| Language | Haskell2010 |
Math.NumberTheory.Quadratic.GaussianIntegers
Description
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+ι