Skip to content

Cubic reciprocity law #155

@Bodigrim

Description

@Bodigrim

It may be fun to extend Math.NumberTheory.Moduli.Jacobi to cover not only quadratic reciprocity, but cubic as well.

Quadratic reciprocity symbol or Jacobi symbol answers the question whether an equation x^2 = n (mod m) has any solutions. Similarly, cubic residue symbol answers whether x^3 = n (mod m) has solutions.

The values of Jacobi symbol are units of real integers (+ zero), while the values of cubic symbol are units of Eisenstein integers.

When this will be implemented, we can proceed to modular cubic roots (similar to Math.NumberTheory.Moduli.Sqrt) and eventually solve cubic and quartic modular equations in Math.NumberTheory.Moduli.Equations.


Steps to implement:

  1. Define data CubicSymbol = Zero | Omega | OmegaSquare | One and define cubicSymbol :: EisensteinInteger -> EisensteinInteger -> CubicSymbol in accordance to the definition of cubic residue character.

  2. Define the modular cube root in accordance to one of the algorithms in New Cube Root Algorithm. The API should be designed similar to Math.NumberTheory.Moduli.Sqrt.

  3. Develop an algorithm to solve cubic modular equations (similar to the real case) and implement it as Math.NumberTheory.Moduli.Equations.solveCubic.

  4. Develop an algorithm to solve quartic modular equations (similar to the real case) and implement it as Math.NumberTheory.Moduli.Equations.solveCubic.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions