@@ -199,6 +199,7 @@ def _check_n_q_d(n, q, d, field_based=True):
199199
200200 TESTS::
201201
202+ sage: # needs sage.libs.pari
202203 sage: from sage.coding.code_bounds import _check_n_q_d
203204 sage: _check_n_q_d(20, 16, 5)
204205 True
@@ -251,26 +252,26 @@ def codesize_upper_bound(n, d, q, algorithm=None):
251252
252253 EXAMPLES::
253254
254- sage: codes.bounds.codesize_upper_bound(10,3, 2)
255+ sage: codes.bounds.codesize_upper_bound(10, 3, 2)
255256 93
256- sage: codes.bounds.codesize_upper_bound(24,8,2, algorithm="LP")
257+ sage: codes.bounds.codesize_upper_bound(24, 8, 2, algorithm="LP") # needs sage.numerical.mip
257258 4096
258- sage: codes.bounds.codesize_upper_bound(10,3,2, algorithm="gap") # optional - gap_package_guava
259+ sage: codes.bounds.codesize_upper_bound(10, 3, 2, algorithm="gap") # optional - gap_package_guava
259260 85
260- sage: codes.bounds.codesize_upper_bound(11,3,4, algorithm=None)
261+ sage: codes.bounds.codesize_upper_bound(11, 3, 4, algorithm=None) # needs sage.symbolic
261262 123361
262- sage: codes.bounds.codesize_upper_bound(11,3,4, algorithm="gap") # optional - gap_package_guava
263+ sage: codes.bounds.codesize_upper_bound(11, 3, 4, algorithm="gap") # optional - gap_package_guava
263264 123361
264- sage: codes.bounds.codesize_upper_bound(11,3,4, algorithm="LP")
265+ sage: codes.bounds.codesize_upper_bound(11, 3, 4, algorithm="LP") # needs sage.numerical.mip
265266 109226
266267
267268 TESTS:
268269
269270 Make sure :issue:`22961` is fixed::
270271
271- sage: codes.bounds.codesize_upper_bound(19,10,2)
272+ sage: codes.bounds.codesize_upper_bound(19, 10, 2)
272273 20
273- sage: codes.bounds.codesize_upper_bound(19,10,2, algorithm="gap") # optional - gap_package_guava
274+ sage: codes.bounds.codesize_upper_bound(19, 10, 2, algorithm="gap") # optional - gap_package_guava
274275 20
275276
276277 Meaningless parameters are rejected::
@@ -308,18 +309,18 @@ def dimension_upper_bound(n, d, q, algorithm=None):
308309
309310 EXAMPLES::
310311
311- sage: codes.bounds.dimension_upper_bound(10,3,2)
312+ sage: codes.bounds.dimension_upper_bound(10,3,2) # needs sage.libs.pari sage.symbolic
312313 6
313- sage: codes.bounds.dimension_upper_bound(30,15,4)
314+ sage: codes.bounds.dimension_upper_bound(30,15,4) # needs sage.libs.pari sage.symbolic
314315 13
315- sage: codes.bounds.dimension_upper_bound(30,15,4,algorithm="LP")
316+ sage: codes.bounds.dimension_upper_bound(30,15,4,algorithm="LP") # needs sage.libs.pari sage.numerical.mip
316317 12
317318
318319 TESTS:
319320
320321 Meaningless code parameters are rejected::
321322
322- sage: codes.bounds.dimension_upper_bound(13,3,6)
323+ sage: codes.bounds.dimension_upper_bound(13,3,6) # needs sage.libs.pari
323324 Traceback (most recent call last):
324325 ...
325326 ValueError: The alphabet size does not make sense for a code over a field
@@ -421,23 +422,23 @@ def griesmer_upper_bound(n,q,d,algorithm=None):
421422
422423 The bound is reached for the ternary Golay codes::
423424
424- sage: codes.bounds.griesmer_upper_bound(12,3,6)
425+ sage: codes.bounds.griesmer_upper_bound(12,3,6) # needs sage.libs.pari
425426 729
426- sage: codes.bounds.griesmer_upper_bound(11,3,5)
427+ sage: codes.bounds.griesmer_upper_bound(11,3,5) # needs sage.libs.pari
427428 729
428429
429430 ::
430431
431- sage: codes.bounds.griesmer_upper_bound(10,2,3)
432+ sage: codes.bounds.griesmer_upper_bound(10,2,3) # needs sage.libs.pari
432433 128
433- sage: codes.bounds.griesmer_upper_bound(10,2,3,algorithm="gap") # optional - gap_package_guava
434+ sage: codes.bounds.griesmer_upper_bound(10,2,3,algorithm="gap") # optional - gap_package_guava, needs sage.libs.pari
434435 128
435436
436437 TESTS::
437438
438- sage: codes.bounds.griesmer_upper_bound(11,3,6)
439+ sage: codes.bounds.griesmer_upper_bound(11,3,6) # needs sage.libs.pari
439440 243
440- sage: codes.bounds.griesmer_upper_bound(11,3,6)
441+ sage: codes.bounds.griesmer_upper_bound(11,3,6) # needs sage.libs.pari
441442 243
442443 """
443444 _check_n_q_d (n , q , d )
@@ -448,7 +449,7 @@ def griesmer_upper_bound(n,q,d,algorithm=None):
448449 else :
449450 # To compute the bound, we keep summing up the terms on the RHS
450451 # until we start violating the inequality.
451- from sage .functions . other import ceil
452+ from sage .arith . misc import integer_ceil as ceil
452453 den = 1
453454 s = 0
454455 k = 0
@@ -570,7 +571,7 @@ def gv_info_rate(n, delta, q):
570571
571572 EXAMPLES::
572573
573- sage: RDF(codes.bounds.gv_info_rate(100,1/4,3)) # abs tol 1e-15
574+ sage: RDF(codes.bounds.gv_info_rate(100,1/4,3)) # abs tol 1e-15 # needs sage.libs.pari sage.symbolic
574575 0.36704992608261894
575576 """
576577 q = ZZ (q )
@@ -592,9 +593,9 @@ def entropy(x, q=2):
592593
593594 sage: codes.bounds.entropy(0, 2)
594595 0
595- sage: codes.bounds.entropy(1/5,4).factor() # optional - sage.symbolic
596+ sage: codes.bounds.entropy(1/5,4).factor() # needs sage.symbolic
596597 1/10*(log(3) - 4*log(4/5) - log(1/5))/log(2)
597- sage: codes.bounds.entropy(1, 3) # optional - sage.symbolic
598+ sage: codes.bounds.entropy(1, 3) # needs sage.symbolic
598599 log(2)/log(3)
599600
600601 Check that values not within the limits are properly handled::
@@ -641,8 +642,9 @@ def entropy_inverse(x, q=2):
641642
642643 EXAMPLES::
643644
645+ sage: # needs sage.symbolic
644646 sage: from sage.coding.code_bounds import entropy_inverse
645- sage: entropy_inverse(0.1)
647+ sage: entropy_inverse(0.1) # needs scipy
646648 0.012986862055...
647649 sage: entropy_inverse(1)
648650 1/2
@@ -678,10 +680,11 @@ def gv_bound_asymp(delta, q):
678680
679681 EXAMPLES::
680682
681- sage: RDF(codes.bounds.gv_bound_asymp(1/4,2))
683+ sage: # needs sage.symbolic
684+ sage: RDF(codes.bounds.gv_bound_asymp(1/4,2)) # needs sage.libs.pari
682685 0.18872187554086...
683686 sage: f = lambda x: codes.bounds.gv_bound_asymp(x,2)
684- sage: plot(f,0,1)
687+ sage: plot(f,0,1) # needs sage.libs.pari sage.plot
685688 Graphics object consisting of 1 graphics primitive
686689 """
687690 return 1 - entropy (delta , q )
@@ -693,10 +696,11 @@ def hamming_bound_asymp(delta, q):
693696
694697 EXAMPLES::
695698
696- sage: RDF(codes.bounds.hamming_bound_asymp(1/4,2))
699+ sage: # needs sage.symbolic
700+ sage: RDF(codes.bounds.hamming_bound_asymp(1/4,2)) # needs sage.libs.pari
697701 0.456435556800...
698702 sage: f = lambda x: codes.bounds.hamming_bound_asymp(x,2)
699- sage: plot(f,0,1)
703+ sage: plot(f,0,1) # needs sage.libs.pari sage.plot
700704 Graphics object consisting of 1 graphics primitive
701705 """
702706 return 1 - entropy (delta / 2 , q )
@@ -711,7 +715,7 @@ def singleton_bound_asymp(delta, q):
711715 sage: codes.bounds.singleton_bound_asymp(1/4,2)
712716 3/4
713717 sage: f = lambda x: codes.bounds.singleton_bound_asymp(x,2)
714- sage: plot(f,0,1)
718+ sage: plot(f,0,1) # needs sage.plot
715719 Graphics object consisting of 1 graphics primitive
716720 """
717721 return 1 - delta
@@ -740,7 +744,7 @@ def elias_bound_asymp(delta, q):
740744
741745 EXAMPLES::
742746
743- sage: codes.bounds.elias_bound_asymp(1/4,2)
747+ sage: codes.bounds.elias_bound_asymp(1/4,2) # needs sage.symbolic
744748 0.39912396330...
745749 """
746750 r = 1 - 1 / q
@@ -755,7 +759,7 @@ def mrrw1_bound_asymp(delta, q):
755759
756760 EXAMPLES::
757761
758- sage: codes.bounds.mrrw1_bound_asymp(1/4,2) # abs tol 4e-16
762+ sage: codes.bounds.mrrw1_bound_asymp(1/4,2) # abs tol 4e-16 # needs sage.symbolic
759763 0.3545789026652697
760764 """
761765 return RDF (entropy ((q - 1 - delta * (q - 2 )- 2 * sqrt ((q - 1 )* delta * (1 - delta )))/ q ,q ))
0 commit comments