@@ -258,11 +258,11 @@ def __eq__(self, other):
258
258
True
259
259
"""
260
260
return isinstance (other , GeneralizedReedSolomonCode ) \
261
- and self .base_field () == other .base_field () \
262
- and self .length () == other .length () \
263
- and self .dimension () == other .dimension () \
264
- and self .evaluation_points () == other .evaluation_points () \
265
- and self .column_multipliers () == other .column_multipliers ()
261
+ and self .base_field () == other .base_field () \
262
+ and self .length () == other .length () \
263
+ and self .dimension () == other .dimension () \
264
+ and self .evaluation_points () == other .evaluation_points () \
265
+ and self .column_multipliers () == other .column_multipliers ()
266
266
267
267
def __hash__ (self ):
268
268
"""
@@ -298,9 +298,9 @@ def _repr_(self):
298
298
[40, 12, 29] Generalized Reed-Solomon Code over GF(59)
299
299
"""
300
300
return "[%s, %s, %s] %sReed-Solomon Code over GF(%s)" \
301
- % (self .length (), self .dimension (), self .minimum_distance (),
302
- "Generalized " if self .is_generalized () else "" ,
303
- self .base_field ().cardinality ())
301
+ % (self .length (), self .dimension (), self .minimum_distance (),
302
+ "Generalized " if self .is_generalized () else "" ,
303
+ self .base_field ().cardinality ())
304
304
305
305
def _latex_ (self ):
306
306
r"""
@@ -319,9 +319,9 @@ def _latex_(self):
319
319
[40, 12, 29] \textnormal{ Generalized Reed-Solomon Code over } \Bold{F}_{59}
320
320
"""
321
321
return "[%s, %s, %s] \\ textnormal{ %sReed-Solomon Code over } %s" \
322
- % (self .length (), self .dimension (), self .minimum_distance (),
323
- "Generalized " if self .is_generalized () else "" ,
324
- self .base_field ()._latex_ ())
322
+ % (self .length (), self .dimension (), self .minimum_distance (),
323
+ "Generalized " if self .is_generalized () else "" ,
324
+ self .base_field ()._latex_ ())
325
325
326
326
def minimum_distance (self ):
327
327
r"""
@@ -390,7 +390,7 @@ def is_generalized(self):
390
390
sage: C2.is_generalized()
391
391
True
392
392
"""
393
- return not all ( beta .is_one () for beta in self .column_multipliers () )
393
+ return not all (beta .is_one () for beta in self .column_multipliers ())
394
394
395
395
@cached_method
396
396
def multipliers_product (self ):
@@ -538,7 +538,7 @@ def weight_distribution(self):
538
538
q = self .base_ring ().order ()
539
539
s = SR .var ('s' )
540
540
wd = [1 ] + [0 ] * (d - 1 )
541
- for i in range (d , n + 1 ):
541
+ for i in range (d , n + 1 ):
542
542
tmp = binomial (n , i ) * (q - 1 )
543
543
wd .append (tmp * symbolic_sum (binomial (i - 1 , s ) * (- 1 )** s * q ** (i - d - s ), s , 0 , i - d ))
544
544
return wd
@@ -647,9 +647,9 @@ def ReedSolomonCode(base_field, length, dimension, primitive_root=None):
647
647
else :
648
648
if primitive_root .multiplicative_order () != length :
649
649
raise ValueError ("Supplied primitive_root is not a primitive n'th root of unity" )
650
- return GeneralizedReedSolomonCode ([ primitive_root ** i for i in range (length ) ], dimension )
650
+ return GeneralizedReedSolomonCode ([primitive_root ** i for i in range (length )], dimension )
651
651
652
- ####################### encoders ###############################
652
+ # ###################### encoders ###############################
653
653
654
654
655
655
class GRSEvaluationVectorEncoder (Encoder ):
@@ -723,7 +723,7 @@ def __eq__(self, other):
723
723
False
724
724
"""
725
725
return isinstance (other , GRSEvaluationVectorEncoder ) \
726
- and self .code () == other .code ()
726
+ and self .code () == other .code ()
727
727
728
728
def _repr_ (self ):
729
729
r"""
@@ -788,7 +788,7 @@ def generator_matrix(self):
788
788
C = self .code ()
789
789
alphas = C .evaluation_points ()
790
790
col_mults = C .column_multipliers ()
791
- g = matrix (C .base_field (), C .dimension (), C .length (), lambda i ,j : col_mults [j ] * alphas [j ]** i )
791
+ g = matrix (C .base_field (), C .dimension (), C .length (), lambda i , j : col_mults [j ] * alphas [j ]** i )
792
792
g .set_immutable ()
793
793
return g
794
794
@@ -1086,7 +1086,7 @@ def message_space(self):
1086
1086
polynomial_ring = message_space
1087
1087
1088
1088
1089
- ####################### decoders ###############################
1089
+ # ###################### decoders ###############################
1090
1090
1091
1091
1092
1092
class GRSBerlekampWelchDecoder (Decoder ):
@@ -1184,7 +1184,7 @@ def _latex_(self):
1184
1184
\textnormal{ Reed-Solomon Code over } \Bold{F}_{59}
1185
1185
"""
1186
1186
return "\\ textnormal{Berlekamp Welch decoder for }%s" \
1187
- % self .code ()._latex_ ()
1187
+ % self .code ()._latex_ ()
1188
1188
1189
1189
def _decode_to_code_and_message (self , r ):
1190
1190
r"""
@@ -1229,14 +1229,15 @@ def _decode_to_code_and_message(self, r):
1229
1229
col_mults = C .column_multipliers ()
1230
1230
1231
1231
r_list = copy (r )
1232
- r_list = [r [i ]/ col_mults [i ] for i in range (0 , C .length ())]
1233
-
1234
- t = (C .minimum_distance ()- 1 ) // 2
1235
- l0 = n - 1 - t
1236
- l1 = n - 1 - t - (k - 1 )
1237
- S = matrix (C .base_field (), n , l0 + l1 + 2 ,
1238
- lambda i , j : (C .evaluation_points ()[i ])** j if j < (l0 + 1 )
1239
- else r_list [i ]* (C .evaluation_points ()[i ])** (j - (l0 + 1 )))
1232
+ r_list = [r [i ] / col_mults [i ] for i in range (C .length ())]
1233
+
1234
+ t = (C .minimum_distance () - 1 ) // 2
1235
+ l0 = n - 1 - t
1236
+ l1 = n - t - k
1237
+ pts = C .evaluation_points ()
1238
+ S = matrix (C .base_field (), n , l0 + l1 + 2 ,
1239
+ lambda i , j : (pts [i ]** j if j < (l0 + 1 )
1240
+ else r_list [i ] * pts [i ]** (j - (l0 + 1 ))))
1240
1241
S = S .right_kernel ()
1241
1242
S = S .basis_matrix ().row (0 )
1242
1243
R = C .base_field ()['x' ]
@@ -1574,7 +1575,7 @@ def _partial_xgcd(self, a, b, PolRing):
1574
1575
1575
1576
r = b
1576
1577
prev_r = a
1577
- while ( r .degree () >= stop ) :
1578
+ while r .degree () >= stop :
1578
1579
q = prev_r .quo_rem (r )[0 ]
1579
1580
(prev_r , r ) = (r , prev_r - q * r )
1580
1581
(prev_s , s ) = (s , prev_s - q * s )
@@ -1858,9 +1859,9 @@ def __eq__(self, other):
1858
1859
False
1859
1860
"""
1860
1861
return isinstance (other , GRSErrorErasureDecoder ) \
1861
- and self .code () == other .code ()
1862
+ and self .code () == other .code ()
1862
1863
1863
- def _repr_ (self ):
1864
+ def _repr_ (self ) -> str :
1864
1865
r"""
1865
1866
Return a string representation of ``self``.
1866
1867
@@ -1890,7 +1891,7 @@ def _latex_(self):
1890
1891
\textnormal{ Reed-Solomon Code over } \Bold{F}_{59}
1891
1892
"""
1892
1893
return "\\ textnormal{Error-Erasure decoder for }%s" \
1893
- % self .code ()._latex_ ()
1894
+ % self .code ()._latex_ ()
1894
1895
1895
1896
def decode_to_message (self , word_and_erasure_vector ):
1896
1897
r"""
@@ -2095,8 +2096,8 @@ def __eq__(self, other):
2095
2096
False
2096
2097
"""
2097
2098
return isinstance (other , GRSKeyEquationSyndromeDecoder ) \
2098
- and self .code () == other .code ()\
2099
- and self .input_space () == other .input_space ()
2099
+ and self .code () == other .code ()\
2100
+ and self .input_space () == other .input_space ()
2100
2101
2101
2102
def _repr_ (self ):
2102
2103
r"""
@@ -2165,7 +2166,7 @@ def _partial_xgcd(self, a, b, PolRing):
2165
2166
prev_r = a
2166
2167
r = b
2167
2168
2168
- while ( r .degree () >= t .degree () ):
2169
+ while r .degree () >= t .degree ():
2169
2170
q = prev_r .quo_rem (r )[0 ]
2170
2171
prev_r , r = r , prev_r - q * r
2171
2172
prev_t , t = t , prev_t - q * t
@@ -2376,10 +2377,10 @@ def decoding_radius(self):
2376
2377
sage: D.decoding_radius()
2377
2378
14
2378
2379
"""
2379
- return (self .code ().minimum_distance ()- 1 ) // 2
2380
+ return (self .code ().minimum_distance () - 1 ) // 2
2380
2381
2381
2382
2382
- ####################### registration ###############################
2383
+ # ###################### registration ###############################
2383
2384
2384
2385
GeneralizedReedSolomonCode ._registered_encoders ["EvaluationVector" ] = GRSEvaluationVectorEncoder
2385
2386
GeneralizedReedSolomonCode ._registered_encoders ["EvaluationPolynomial" ] = GRSEvaluationPolynomialEncoder
0 commit comments