Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Algebraic Integers

  • To: mathgroup at
  • Subject: [mg28519] Re: [mg28504] Algebraic Integers
  • From: Ken Levasseur <Kenneth_Levasseur at>
  • Date: Tue, 24 Apr 2001 01:48:53 -0400 (EDT)
  • References: <>
  • Sender: owner-wri-mathgroup at


Do you want to base your ordering on the norm of the algebraic integers?  If so, the following
code is something I recently wrote up for a colleague.  It's a bit rough, but you might want to
try something like this:

We will base all norms on this function.  Assume f is an algebraic integer, p is the minimal
polynomial and cRule is the conjugation rule.   The indeterminate variable can by anything you
choose as long as you're consistant. I use x for Z[i],  \[Omega] for the Eisenstein extension, and
r for Z[Sqrt[K]].   I'm sure the programming could be improved, and extensions with more
complicated conjugates would need a different structure.

GNorm[f_, p_, cRule_] := PolynomialMod[Expand[f * (f /. cRule)], p]


\!\(GaussianNorm[f_] := GNorm[f, x\^2 + 1, x -> \(-x\)]\)

GaussianNorm[a + b x]

\!\(TraditionalForm\`a\^2 + b\^2\)

\!\(GaussianNorm[\((a + b\ x)\)\^2]\)

\!\(TraditionalForm\`a\^4 + 2\ b\^2\ a\^2 + b\^4\)

\!\(Factor[GaussianNorm[\((a + b\ x)\)\^2]]\)

\!\(TraditionalForm\`\((a\^2 + b\^2)\)\^2\)

Eisenstein Norm
\!\(EisensteinNorm[f_] :=
    GNorm[f, \ \[Omega]\^2 + \[Omega] + 1, \ \[Omega] -> \[Omega]\^2]\)

EisensteinNorm[a + \[Omega] b]

\!\(TraditionalForm\`a\^2 - b\ a + b\^2\)


RootKNorm[f_, K_:2] := GNorm[f, r^2 - K, r -> -r]

RootKNorm[a + b r, K]

\!\(TraditionalForm\`a\^2 - b\^2\ K\)

Ken Levasseur
Math Sciences
UMass Lowell

Konstantin L Kouptsov wrote:

> I am doing the algebraic manipulations with the numbers a+b*p, where a,b are integers
> and p is essentially the irrational number (say Sqrt[2]). There is a number of rules allowing
> manipulation of the numbers without referring to the value of p (for example: p/: 1/p=p/2;)
> I want function Min[] to calculate the minimum of the set of algebraic integers (a+b*p) the way
> it works for ordinary numbers, but giving the answer in algebraic form:
> In:= Min[3 p - 2, 5 p - 4]
> Out:= 3 p -2
> Is there any _elegant_ solution for this problem?

  • Prev by Date: Re: ListPlot with row vectors
  • Next by Date: RE: Two questions concerning ListDensityPlot ...
  • Previous by thread: Algebraic Integers
  • Next by thread: Re: Algebraic Integers