Copyright | (c) 2018 Alexandre Rodrigues Baldé |
---|---|
License | MIT |
Maintainer | Alexandre Rodrigues Baldé <alexandrer_b@outlook.com> |
Safe Haskell | None |
Language | Haskell2010 |
This module exports functions for manipulating Eisenstein integers, including computing their prime factorisations.
Synopsis
- data EisensteinInteger = !Integer :+ !Integer
- ω :: EisensteinInteger
- conjugate :: EisensteinInteger -> EisensteinInteger
- norm :: EisensteinInteger -> Integer
- associates :: EisensteinInteger -> [EisensteinInteger]
- ids :: [EisensteinInteger]
- findPrime :: Prime Integer -> Prime EisensteinInteger
- primes :: [Prime EisensteinInteger]
Documentation
data EisensteinInteger Source #
An Eisenstein integer is a + bω
, where a
and b
are both integers.
Instances
ω :: EisensteinInteger Source #
The imaginary unit for Eisenstein integers, where
ω == (-1/2) + ((sqrt 3)/2)ι == exp(2*pi*ι/3)
and ι
is the usual imaginary unit with ι² == -1
.
conjugate :: EisensteinInteger -> EisensteinInteger Source #
Conjugate a Eisenstein integer.
norm :: EisensteinInteger -> Integer Source #
The square of the magnitude of a Eisenstein integer.
associates :: EisensteinInteger -> [EisensteinInteger] Source #
Produce a list of an EisensteinInteger
's associates.
ids :: [EisensteinInteger] Source #
List of all Eisenstein units, counterclockwise across all sextants,
starting with 1
.
Primality functions
findPrime :: Prime Integer -> Prime EisensteinInteger Source #
Find an Eisenstein integer whose norm is the given prime number
in the form 3k + 1
.
>>>
import Math.NumberTheory.Primes (nextPrime)
>>>
findPrime (nextPrime 7)
Prime 3+2*ω
primes :: [Prime EisensteinInteger] Source #
An infinite list of Eisenstein primes. Uses primes in Z
to exhaustively
generate all Eisenstein primes in order of ascending norm.
- Every prime is in the first sextant, so the list contains no associates.
- Eisenstein primes from the whole complex plane can be generated by
applying
associates
to each prime in this list.
>>>
take 10 primes
[Prime 2+ω,Prime 2,Prime 3+2*ω,Prime 3+ω,Prime 4+3*ω,Prime 4+ω,Prime 5+3*ω,Prime 5+2*ω,Prime 5,Prime 6+5*ω]