Details
The ring of Eisenstein integers is ℤ[
ω], where
is a primitive third root of unity.
ResourceFunction["EisensteinIntegers"] supports two representations: an Eisenstein integer can be given either as a pair
{i1,i2}, which denotes
, or as
. In the latter case, the symbol used to denote the extension element,
ω, must be given explicitly in all operations.
The norm of an Eisenstein integer is defined as the product of the integer with its complex conjugate. The conjugate of
ω is
.
There are six units in the ring of Eisenstein integers: {±1,±ω,±ω2=∓(1+ω)}. An Eisenstein integer is a unit if and only if its norm is 1.
Supported unary operations are "Re", "Im", "ReIm", "Conjugate", "Norm", "Abs", "Reciprocal", "UnitQ", "PrimeQ" and "FactorInteger".
The conjugate of ω is ω2. This is equal to -1-ω due to the fundamental identity ω2+ω+1=0. ResourceFunction["EisensteinIntegers"] always reduces by this identity, so ω2 is never used in a result (and is not supported in input).
Supported binary operations are "Plus", "Times", "Power", "Dot", "Quotient", "Remainder", "QuotientRemainder", "AssociatesQ", "DividesQ","IntegerExponent", "GCD" and "ExtendedGCD".
Except where specified otherwise, all supported operations in effect do what the corresponding functions do with ordinary or Gaussian integers.
ResourceFunction["EisensteinIntegers"] supports "Power" when the second argument is an explicit nonnegative integer.
Ordinary multiplication is used in "Dot", that is, no conjugation takes place.
ResourceFunction["EisensteinIntegers"] also supports "ListPlus" and "ListTimes" so one can give a list of arguments for adding or multiplying.
ResourceFunction["EisensteinIntegers"] also supports "PowerMod". The power must be a nonnegative integer. The modulus must be an Eisenstein integer.
ResourceFunction["EisensteinIntegers"] regards the multiplier of the extension element as the "imaginary" part, even though it has both a real and an imaginary component in the complex plane.
The Eisenstein integer a+b ω has norm a2+b2-ab. The absolute value is the square root of the norm.
Unary operations and binary operations that do not use division allow symbolic input—that is, Eisenstein numbers that are not expressed using explicit integers.
The reciprocal operation will in general return an Eisenstein rational rather than an integer. All other operations return integers when given explicit Eisenstein integer inputs.