You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jan 30, 2023. It is now read-only.
Maps the set to a vector over GF(2) to an integer.
142
+
Maps the set to an integer.
143
+
The integer is given by `\sum^{m-1}_{i=0} 2^i\delta(i\in s)`.
142
144
143
145
INPUT::
144
146
@@ -160,10 +162,10 @@ def _set_to_mask(s, m):
160
162
p<<=1
161
163
returnans
162
164
163
-
165
+
@cached_method
164
166
def_list_polynomial(base_field, y, dim):
165
167
r"""
166
-
Lists all polynomials of degree ``dim-1`` over ``base_field``.
168
+
Returns the list of all polynomials of degree ``dim-1`` over ``base_field``.
167
169
168
170
INPUT::
169
171
@@ -195,42 +197,40 @@ def _list_polynomial(base_field, y, dim):
195
197
returnv
196
198
197
199
198
-
defReedSolomonSupercode(code, p=None):
200
+
def_reed_solomon_supercode(code, p=None):
199
201
r"""
200
-
Returns the Reed Solomon super code of the given Reed-Muller code.
201
-
202
+
Returns the Reed Solomon supercode of the given Reed-Muller code.
203
+
The Reed Solomon supercode can be obtained my mapping each element of a vector field `\Bold{F}^m_{q}` to `\Bold{F}_{q^m}`
204
+
via a linear transformation over `\Bold{F}_q` and then using them as evaluation points of Reed-Solomon code.
205
+
This process gives a supercode of the Reed-Muller code which is a Reed-Solomon code.
206
+
202
207
INPUT::
203
208
204
-
- ``code`` -- A Reed-Muller code of appropiate order.
209
+
- ``code`` -- A Reed-Muller code.
205
210
206
211
- ``p`` -- An irreducible polynomial over the base field of ``code`` of degree same as number of variables used in ``code``.
207
212
208
213
EXAMPLES::
209
214
215
+
sage: from sage.coding.reed_muller_code import _reed_solomon_supercode
210
216
sage: C = codes.ReedMullerCode(GF(3), 2, 5)
211
-
sage: sC = codes.ReedSolomonSupercode(C)
217
+
sage: sC = _reed_solomon_supercode(C)
212
218
sage: sC
213
219
[243, 163, 81] Generalized Reed-Solomon Code over Finite Field in y of size 3^5
214
220
215
-
A polynomial ``p`` can be passed to direct the extension field.
221
+
A polynomial ``p`` can be passed to direct the extension field::
216
222
217
223
sage: F = GF(4)
218
224
sage: R.<x> = F[]
219
225
sage: p = x^4 + x^3 + F.gen()*x^2 + x + 1
220
226
sage: p.is_irreducible()
221
227
True
222
228
sage: C = codes.ReedMullerCode(F, 2, 4)
223
-
sage: sC = codes.ReedSolomonSupercode(C, p)
229
+
sage: sC = _reed_solomon_supercode(C, p)
224
230
sage: sC
225
231
[256, 129, 128] Generalized Reed-Solomon Code over Univariate Quotient Polynomial Ring in y over Finite Field in z2 of size 2^2 with modulus y^4 + y^3 + z2*y^2 + y + 1
Returns the Reed Solomon supercode of the given Reed-Muller code.
496
+
The Reed Solomon supercode can be obtained my mapping each element of a vector field `\Bold{F}^m_{q}` to `\Bold{F}_{q^m}`
497
+
via a linear transformation over `\Bold{F}_q` and then using them as evaluation points of Reed-Solomon code.
498
+
This process gives a supercode of the Reed-Muller code which is a Reed-Solomon code.
499
+
500
+
INPUT::
501
+
502
+
- ``p`` -- An irreducible polynomial over the base field of ``code`` of degree same as number of variables used in ``code``.
503
+
504
+
EXAMPLES::
505
+
506
+
sage: C = codes.ReedMullerCode(GF(3), 2, 5)
507
+
sage: sC = C.reed_solomon_supercode()
508
+
sage: sC
509
+
[243, 163, 81] Generalized Reed-Solomon Code over Finite Field in y of size 3^5
510
+
511
+
A polynomial ``p`` can be passed to direct the extension field::
512
+
513
+
sage: F = GF(4)
514
+
sage: R.<x> = F[]
515
+
sage: p = x^4 + x^3 + F.gen()*x^2 + x + 1
516
+
sage: p.is_irreducible()
517
+
True
518
+
sage: C = codes.ReedMullerCode(F, 2, 4)
519
+
sage: sC = C.reed_solomon_supercode(p)
520
+
sage: sC
521
+
[256, 129, 128] Generalized Reed-Solomon Code over Univariate Quotient Polynomial Ring in y over Finite Field in z2 of size 2^2 with modulus y^4 + y^3 + z2*y^2 + y + 1
Returns the Reed Solomon supercode of the given Reed-Muller code.
674
+
The Reed Solomon supercode can be obtained my mapping each element of a vector field `\Bold{F}^m_{q}` to `\Bold{F}_{q^m}`
675
+
via a linear transformation over `\Bold{F}_q` and then using them as evaluation points of Reed-Solomon code.
676
+
This process gives a supercode of the Reed-Muller code which is a Reed-Solomon code.
677
+
678
+
INPUT::
679
+
680
+
- ``p`` -- An irreducible polynomial over the base field of ``code`` of degree same as number of variables used in ``code``.
681
+
682
+
EXAMPLES::
683
+
684
+
sage: C = codes.ReedMullerCode(GF(2), 2, 5)
685
+
sage: sC = C.reed_solomon_supercode()
686
+
sage: sC
687
+
[32, 32, 1] Generalized Reed-Solomon Code over Finite Field in y of size 2^5
688
+
689
+
A polynomial ``p`` can be passed to direct the extension field::
690
+
691
+
sage: F = GF(2)
692
+
sage: R.<x> = F[]
693
+
sage: p = x^4 + x + 1
694
+
sage: p.is_irreducible()
695
+
True
696
+
sage: C = codes.ReedMullerCode(F, 2, 4)
697
+
sage: sC = C.reed_solomon_supercode(p)
698
+
sage: sC
699
+
[16, 16, 1] Generalized Reed-Solomon Code over Finite Field in y of size 2^4
700
+
701
+
"""
702
+
return_reed_solomon_supercode(self, p)
703
+
704
+
705
+
638
706
639
707
classReedMullerVectorEncoder(Encoder):
640
708
r"""
@@ -1308,7 +1376,7 @@ class QAryReedMullerRSDecoder(Decoder):
1308
1376
1309
1377
We can use other decoders for the Reed-Solomon supercode as well,
1310
1378
1311
-
sage: sC = codes.ReedSolomonSupercode(C)
1379
+
sage: sC = C.reed_solomon_supercode()
1312
1380
sage: D = codes.decoders.QAryReedMullerRSDecoder(C, sC.decoder("BerlekampWelch"))
1313
1381
sage: D
1314
1382
Reed Solomon based decoder for Reed-Muller Code of order 2 and 3 variables over Finite Field of size 3 that uses Berlekamp-Welch decoder for [27, 19, 9] Generalized Reed-Solomon Code over Finite Field in y of size 3^3
0 commit comments