Skip to content

A new structure for Reed-Solomon codes in Sage #18928

@sagetrac-dlucas

Description

@sagetrac-dlucas

This ticket proposes a new implementation for Generalized Reed-Solomon codes in Sage.
It contains:

  • a new code class, GeneralizedReedSolomonCode, which wraps Reed-Solomon code in the object-oriented structure introduced in Prepare linear_code for inheritance #18099,
  • a first new encoder, GRSEvaluationVectorEncoder, which can encode words from a message space which is a vector space, and
  • a second new encoder, GRSEvaluationPolynomialEncoder, which can encode words from a message space which is a polynomial ring.

This new implementation properly sets GRS codes in the object-oriented structure, which allows the user to use specific methods and algorithms to encode (and later decode) words. It also introduces the notion of generalized Reed-Solomon codes, which means that the user can now set a list of column multipliers for the code.

It also allows to compute parity-check matrix and generator matrix from the parameters of the code, through dedicated methods. It allows super-fast computation of certain - usually exponential - properties, such as weight distribution.

As GRS codes are now objects in Sage, it is also possible to ask a GRS code for its specific parameters (like the list of its evaluation points, or its column multipliers).

The two provided encoders follow the structure introduced in #18376.

This ticket also removes the old ReedSolomonCode method from the global namespace as it was deprecated more than a year ago (see #15445).

More details about GRS codes can be found in the docstring of the provided code.

Depends on #18376

Component: coding theory

Author: David Lucas, Johan Sebastian Rosenkilde Nielsen

Branch/Commit: eabe7e0

Reviewer: Johan Sebastian Rosenkilde Nielsen, David Lucas

Issue created by migration from https://trac.sagemath.org/ticket/18928

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions