passagemath-modules 10.5.46__cp310-cp310-macosx_14_0_arm64.whl → 10.6.20__cp310-cp310-macosx_14_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-modules might be problematic. Click here for more details.

Files changed (320) hide show
  1. {passagemath_modules-10.5.46.dist-info → passagemath_modules-10.6.20.dist-info}/METADATA +49 -44
  2. {passagemath_modules-10.5.46.dist-info → passagemath_modules-10.6.20.dist-info}/RECORD +320 -314
  3. passagemath_modules.dylibs/libmpc.3.dylib +0 -0
  4. passagemath_modules.dylibs/libopenblasp-r0.3.29.dylib +0 -0
  5. sage/algebras/clifford_algebra.py +2 -2
  6. sage/algebras/clifford_algebra_element.cpython-310-darwin.so +0 -0
  7. sage/algebras/clifford_algebra_element.pyx +4 -2
  8. sage/algebras/exterior_algebra_groebner.cpython-310-darwin.so +0 -0
  9. sage/algebras/exterior_algebra_groebner.pyx +2 -0
  10. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +83 -5
  11. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-310-darwin.so +0 -0
  12. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +2 -0
  13. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +28 -3
  14. sage/algebras/finite_gca.py +1 -1
  15. sage/algebras/lie_algebras/bgg_dual_module.py +18 -11
  16. sage/algebras/lie_algebras/classical_lie_algebra.py +3 -3
  17. sage/algebras/lie_algebras/examples.py +2 -2
  18. sage/algebras/lie_algebras/free_lie_algebra.py +1 -1
  19. sage/algebras/lie_algebras/heisenberg.py +4 -4
  20. sage/algebras/lie_algebras/lie_algebra.py +1 -1
  21. sage/algebras/lie_algebras/lie_algebra_element.cpython-310-darwin.so +0 -0
  22. sage/algebras/lie_algebras/lie_algebra_element.pyx +63 -27
  23. sage/algebras/lie_algebras/quotient.py +40 -29
  24. sage/algebras/lie_algebras/subalgebra.py +76 -53
  25. sage/algebras/lie_algebras/verma_module.py +1 -3
  26. sage/algebras/octonion_algebra.cpython-310-darwin.so +0 -0
  27. sage/algebras/octonion_algebra.pyx +1 -1
  28. sage/algebras/orlik_solomon.py +4 -4
  29. sage/algebras/orlik_terao.py +4 -4
  30. sage/algebras/steenrod/steenrod_algebra.py +37 -30
  31. sage/algebras/steenrod/steenrod_algebra_bases.py +2 -2
  32. sage/algebras/steenrod/steenrod_algebra_misc.py +4 -4
  33. sage/algebras/steenrod/steenrod_algebra_mult.py +2 -2
  34. sage/all__sagemath_modules.py +1 -0
  35. sage/calculus/integration.cpython-310-darwin.so +0 -0
  36. sage/calculus/integration.pyx +6 -5
  37. sage/calculus/interpolation.cpython-310-darwin.so +0 -0
  38. sage/calculus/interpolators.cpython-310-darwin.so +0 -0
  39. sage/calculus/ode.cpython-310-darwin.so +0 -0
  40. sage/calculus/ode.pxd +2 -2
  41. sage/calculus/ode.pyx +6 -4
  42. sage/calculus/riemann.cpython-310-darwin.so +0 -0
  43. sage/calculus/riemann.pyx +68 -48
  44. sage/calculus/transforms/dwt.cpython-310-darwin.so +0 -0
  45. sage/calculus/transforms/fft.cpython-310-darwin.so +0 -0
  46. sage/coding/ag_code_decoders.cpython-310-darwin.so +0 -0
  47. sage/coding/ag_code_decoders.pyx +31 -31
  48. sage/coding/binary_code.cpython-310-darwin.so +0 -0
  49. sage/coding/binary_code.pxd +6 -6
  50. sage/coding/binary_code.pyx +212 -173
  51. sage/coding/guruswami_sudan/utils.py +3 -5
  52. sage/coding/kasami_codes.cpython-310-darwin.so +0 -0
  53. sage/coding/kasami_codes.pyx +20 -24
  54. sage/coding/linear_code.py +2 -2
  55. sage/coding/linear_code_no_metric.py +5 -5
  56. sage/coding/linear_rank_metric.py +81 -19
  57. sage/combinat/free_module.py +22 -2
  58. sage/combinat/root_system/ambient_space.py +1 -1
  59. sage/combinat/root_system/associahedron.py +4 -4
  60. sage/combinat/root_system/braid_move_calculator.py +1 -1
  61. sage/combinat/root_system/braid_orbit.cpython-310-darwin.so +0 -0
  62. sage/combinat/root_system/branching_rules.py +2 -2
  63. sage/combinat/root_system/cartan_type.py +14 -14
  64. sage/combinat/root_system/coxeter_group.py +2 -2
  65. sage/combinat/root_system/coxeter_type.py +11 -0
  66. sage/combinat/root_system/extended_affine_weyl_group.py +8 -8
  67. sage/combinat/root_system/fundamental_group.py +2 -4
  68. sage/combinat/root_system/hecke_algebra_representation.py +1 -1
  69. sage/combinat/root_system/pieri_factors.py +2 -2
  70. sage/combinat/root_system/root_lattice_realization_algebras.py +1 -1
  71. sage/combinat/root_system/root_lattice_realizations.py +1 -1
  72. sage/combinat/root_system/type_folded.py +3 -3
  73. sage/combinat/root_system/type_reducible.py +8 -7
  74. sage/combinat/root_system/type_super_A.py +2 -2
  75. sage/combinat/root_system/weight_lattice_realizations.py +9 -8
  76. sage/combinat/root_system/weyl_characters.py +1 -1
  77. sage/crypto/__init__.py +1 -0
  78. sage/crypto/block_cipher/des.py +1 -1
  79. sage/crypto/block_cipher/miniaes.py +3 -3
  80. sage/crypto/block_cipher/present.py +3 -3
  81. sage/crypto/block_cipher/sdes.py +3 -3
  82. sage/crypto/boolean_function.cpython-310-darwin.so +0 -0
  83. sage/crypto/boolean_function.pyx +22 -23
  84. sage/crypto/key_exchange/diffie_hellman.py +4 -9
  85. sage/crypto/mq/sr.py +1 -1
  86. sage/crypto/public_key/blum_goldwasser.py +3 -3
  87. sage/crypto/sbox.cpython-310-darwin.so +0 -0
  88. sage/crypto/sbox.pyx +1 -1
  89. sage/crypto/sboxes.py +22 -0
  90. sage/crypto/util.py +4 -6
  91. sage/ext/interpreters/__init__.py +1 -1
  92. sage/ext/interpreters/all__sagemath_modules.py +1 -1
  93. sage/ext/interpreters/wrapper_cc.cpython-310-darwin.so +0 -0
  94. sage/ext/interpreters/wrapper_cc.pxd +5 -5
  95. sage/ext/interpreters/wrapper_cc.pyx +1 -1
  96. sage/ext/interpreters/wrapper_cdf.cpython-310-darwin.so +0 -0
  97. sage/ext/interpreters/wrapper_cdf.pxd +5 -7
  98. sage/ext/interpreters/wrapper_cdf.pyx +4 -10
  99. sage/ext/interpreters/wrapper_rdf.cpython-310-darwin.so +0 -0
  100. sage/ext/interpreters/wrapper_rdf.pxd +1 -1
  101. sage/ext/interpreters/wrapper_rdf.pyx +1 -1
  102. sage/ext/interpreters/wrapper_rr.cpython-310-darwin.so +0 -0
  103. sage/ext/interpreters/wrapper_rr.pxd +5 -5
  104. sage/ext/interpreters/wrapper_rr.pyx +1 -2
  105. sage/geometry/toric_lattice.py +3 -3
  106. sage/geometry/toric_lattice_element.cpython-310-darwin.so +0 -0
  107. sage/groups/additive_abelian/additive_abelian_group.py +1 -1
  108. sage/groups/additive_abelian/qmodnz.py +4 -4
  109. sage/groups/matrix_gps/coxeter_group.py +17 -4
  110. sage/groups/matrix_gps/group_element.cpython-310-darwin.so +0 -0
  111. sage/groups/misc_gps/argument_groups.py +2 -2
  112. sage/groups/misc_gps/imaginary_groups.py +4 -4
  113. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-310-darwin.so +0 -0
  114. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-310-darwin.so +0 -0
  115. sage/homology/chain_complex.py +0 -2
  116. sage/homology/hochschild_complex.py +3 -3
  117. sage/homology/homology_morphism.py +6 -6
  118. sage/homology/homology_vector_space_with_basis.py +1 -1
  119. sage/libs/gsl/array.cpython-310-darwin.so +0 -0
  120. sage/libs/mpmath/utils.cpython-310-darwin.so +0 -0
  121. sage/matrix/action.cpython-310-darwin.so +0 -0
  122. sage/matrix/args.cpython-310-darwin.so +0 -0
  123. sage/matrix/args.pyx +25 -10
  124. sage/matrix/benchmark.py +8 -4
  125. sage/matrix/compute_J_ideal.py +2 -2
  126. sage/matrix/constructor.cpython-310-darwin.so +0 -0
  127. sage/matrix/echelon_matrix.cpython-310-darwin.so +0 -0
  128. sage/matrix/echelon_matrix.pyx +1 -1
  129. sage/matrix/matrix0.cpython-310-darwin.so +0 -0
  130. sage/matrix/matrix0.pxd +3 -3
  131. sage/matrix/matrix0.pyx +7 -5
  132. sage/matrix/matrix1.cpython-310-darwin.so +0 -0
  133. sage/matrix/matrix1.pyx +87 -48
  134. sage/matrix/matrix2.cpython-310-darwin.so +0 -0
  135. sage/matrix/matrix2.pxd +3 -3
  136. sage/matrix/matrix2.pyx +758 -75
  137. sage/matrix/matrix_cdv.cpython-310-darwin.so +0 -0
  138. sage/matrix/matrix_complex_double_dense.cpython-310-darwin.so +0 -0
  139. sage/matrix/matrix_complex_double_dense.pyx +1 -1
  140. sage/matrix/matrix_dense.cpython-310-darwin.so +0 -0
  141. sage/matrix/matrix_dense.pyx +2 -3
  142. sage/matrix/matrix_double_dense.cpython-310-darwin.so +0 -0
  143. sage/matrix/matrix_double_dense.pyx +11 -5
  144. sage/matrix/matrix_double_sparse.cpython-310-darwin.so +0 -0
  145. sage/matrix/matrix_generic_dense.cpython-310-darwin.so +0 -0
  146. sage/matrix/matrix_generic_sparse.cpython-310-darwin.so +0 -0
  147. sage/matrix/matrix_generic_sparse.pyx +1 -1
  148. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-310-darwin.so +0 -0
  149. sage/matrix/matrix_numpy_dense.cpython-310-darwin.so +0 -0
  150. sage/matrix/matrix_numpy_integer_dense.cpython-310-darwin.so +0 -0
  151. sage/matrix/matrix_polynomial_dense.cpython-310-darwin.so +0 -0
  152. sage/matrix/matrix_polynomial_dense.pyx +952 -261
  153. sage/matrix/matrix_real_double_dense.cpython-310-darwin.so +0 -0
  154. sage/matrix/matrix_sparse.cpython-310-darwin.so +0 -0
  155. sage/matrix/matrix_sparse.pyx +2 -3
  156. sage/matrix/matrix_window.cpython-310-darwin.so +0 -0
  157. sage/matrix/matrix_window.pyx +2 -2
  158. sage/matrix/misc_mpfr.cpython-310-darwin.so +0 -0
  159. sage/matrix/operation_table.py +0 -2
  160. sage/matrix/special.py +4 -0
  161. sage/matrix/strassen.cpython-310-darwin.so +0 -0
  162. sage/matrix/strassen.pyx +1 -1
  163. sage/matroids/basis_exchange_matroid.cpython-310-darwin.so +0 -0
  164. sage/matroids/basis_matroid.cpython-310-darwin.so +0 -0
  165. sage/matroids/chow_ring.py +68 -65
  166. sage/matroids/chow_ring_ideal.py +41 -38
  167. sage/matroids/circuit_closures_matroid.cpython-310-darwin.so +0 -0
  168. sage/matroids/circuits_matroid.cpython-310-darwin.so +0 -0
  169. sage/matroids/database_matroids.py +16 -5
  170. sage/matroids/dual_matroid.py +2 -2
  171. sage/matroids/extension.cpython-310-darwin.so +0 -0
  172. sage/matroids/flats_matroid.cpython-310-darwin.so +0 -0
  173. sage/matroids/gammoid.py +1 -1
  174. sage/matroids/graphic_matroid.cpython-310-darwin.so +0 -0
  175. sage/matroids/graphic_matroid.pyx +3 -3
  176. sage/matroids/lean_matrix.cpython-310-darwin.so +0 -0
  177. sage/matroids/lean_matrix.pyx +22 -22
  178. sage/matroids/linear_matroid.cpython-310-darwin.so +0 -0
  179. sage/matroids/linear_matroid.pyx +13 -13
  180. sage/matroids/matroid.cpython-310-darwin.so +0 -0
  181. sage/matroids/matroid.pyx +15 -15
  182. sage/matroids/matroids_plot_helpers.py +48 -46
  183. sage/matroids/minor_matroid.py +2 -2
  184. sage/matroids/set_system.cpython-310-darwin.so +0 -0
  185. sage/matroids/transversal_matroid.cpython-310-darwin.so +0 -0
  186. sage/matroids/transversal_matroid.pyx +3 -3
  187. sage/matroids/union_matroid.cpython-310-darwin.so +0 -0
  188. sage/matroids/union_matroid.pyx +3 -0
  189. sage/matroids/unpickling.cpython-310-darwin.so +0 -0
  190. sage/matroids/utilities.py +2 -2
  191. sage/misc/c3.cpython-310-darwin.so +0 -0
  192. sage/misc/compat.py +1 -2
  193. sage/misc/pickle_old.cpython-310-darwin.so +0 -0
  194. sage/modules/diamond_cutting.py +117 -30
  195. sage/modules/fg_pid/fgp_module.py +3 -3
  196. sage/modules/filtered_vector_space.py +4 -4
  197. sage/modules/finite_submodule_iter.cpython-310-darwin.so +0 -0
  198. sage/modules/fp_graded/free_module.py +2 -2
  199. sage/modules/fp_graded/module.py +2 -2
  200. sage/modules/fp_graded/morphism.py +4 -4
  201. sage/modules/fp_graded/steenrod/morphism.py +1 -1
  202. sage/modules/free_module.py +144 -15
  203. sage/modules/free_module_element.cpython-310-darwin.so +0 -0
  204. sage/modules/free_module_element.pyx +4 -4
  205. sage/modules/free_module_integer.py +2 -2
  206. sage/modules/free_module_morphism.py +3 -3
  207. sage/modules/free_module_pseudohomspace.py +352 -0
  208. sage/modules/free_module_pseudomorphism.py +578 -0
  209. sage/modules/free_quadratic_module_integer_symmetric.py +24 -13
  210. sage/modules/matrix_morphism.py +9 -9
  211. sage/modules/multi_filtered_vector_space.py +4 -4
  212. sage/modules/ore_module.py +2208 -0
  213. sage/modules/ore_module_element.py +178 -0
  214. sage/modules/ore_module_homspace.py +147 -0
  215. sage/modules/ore_module_morphism.py +968 -0
  216. sage/modules/quotient_module.py +11 -1
  217. sage/modules/submodule.py +1 -1
  218. sage/modules/torsion_quadratic_module.py +1 -1
  219. sage/modules/vector_complex_double_dense.cpython-310-darwin.so +0 -0
  220. sage/modules/vector_double_dense.cpython-310-darwin.so +0 -0
  221. sage/modules/vector_integer_dense.cpython-310-darwin.so +0 -0
  222. sage/modules/vector_integer_sparse.cpython-310-darwin.so +0 -0
  223. sage/modules/vector_integer_sparse.pyx +4 -4
  224. sage/modules/vector_modn_dense.cpython-310-darwin.so +0 -0
  225. sage/modules/vector_modn_sparse.cpython-310-darwin.so +0 -0
  226. sage/modules/vector_numpy_dense.cpython-310-darwin.so +0 -0
  227. sage/modules/vector_numpy_integer_dense.cpython-310-darwin.so +0 -0
  228. sage/modules/vector_rational_dense.cpython-310-darwin.so +0 -0
  229. sage/modules/vector_rational_dense.pyx +1 -1
  230. sage/modules/vector_rational_sparse.cpython-310-darwin.so +0 -0
  231. sage/modules/vector_rational_sparse.pyx +5 -5
  232. sage/modules/vector_real_double_dense.cpython-310-darwin.so +0 -0
  233. sage/modules/vector_space_morphism.py +2 -2
  234. sage/modules/with_basis/cell_module.py +17 -0
  235. sage/modules/with_basis/indexed_element.cpython-310-darwin.so +0 -0
  236. sage/modules/with_basis/indexed_element.pyx +1 -1
  237. sage/modules/with_basis/invariant.py +1 -1
  238. sage/modules/with_basis/representation.py +0 -1
  239. sage/modules/with_basis/subquotient.py +2 -2
  240. sage/numerical/gauss_legendre.cpython-310-darwin.so +0 -0
  241. sage/probability/probability_distribution.cpython-310-darwin.so +0 -0
  242. sage/quadratic_forms/binary_qf.py +7 -7
  243. sage/quadratic_forms/bqf_class_group.py +26 -92
  244. sage/quadratic_forms/count_local_2.cpython-310-darwin.so +0 -0
  245. sage/quadratic_forms/extras.py +1 -1
  246. sage/quadratic_forms/quadratic_form.py +5 -4
  247. sage/quadratic_forms/quadratic_form__equivalence_testing.py +7 -4
  248. sage/quadratic_forms/quadratic_form__evaluate.cpython-310-darwin.so +0 -0
  249. sage/quadratic_forms/quadratic_form__local_field_invariants.py +10 -10
  250. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +2 -2
  251. sage/quadratic_forms/ternary.cpython-310-darwin.so +0 -0
  252. sage/quadratic_forms/ternary_qf.py +50 -83
  253. sage/rings/complex_conversion.cpython-310-darwin.so +0 -0
  254. sage/rings/complex_double.cpython-310-darwin.so +0 -0
  255. sage/rings/complex_double.pxd +1 -0
  256. sage/rings/complex_double.pyx +37 -32
  257. sage/rings/complex_mpc.cpython-310-darwin.so +0 -0
  258. sage/rings/complex_mpc.pyx +27 -23
  259. sage/rings/complex_mpfr.cpython-310-darwin.so +0 -0
  260. sage/rings/complex_mpfr.pyx +11 -9
  261. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +277 -21
  262. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +10 -1
  263. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1 -1
  264. sage/rings/function_field/drinfeld_modules/homset.py +1 -2
  265. sage/rings/function_field/drinfeld_modules/morphism.py +2 -2
  266. sage/rings/function_field/hermite_form_polynomial.cpython-310-darwin.so +0 -0
  267. sage/rings/function_field/khuri_makdisi.cpython-310-darwin.so +0 -0
  268. sage/rings/function_field/khuri_makdisi.pyx +27 -25
  269. sage/rings/invariants/invariant_theory.py +61 -60
  270. sage/rings/invariants/reconstruction.py +8 -8
  271. sage/rings/polynomial/laurent_polynomial_mpair.cpython-310-darwin.so +0 -0
  272. sage/rings/polynomial/ore_function_element.py +1 -1
  273. sage/rings/polynomial/ore_polynomial_element.cpython-310-darwin.so +0 -0
  274. sage/rings/polynomial/ore_polynomial_element.pyx +8 -8
  275. sage/rings/polynomial/ore_polynomial_ring.py +134 -17
  276. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-310-darwin.so +0 -0
  277. sage/rings/polynomial/skew_polynomial_element.cpython-310-darwin.so +0 -0
  278. sage/rings/polynomial/skew_polynomial_finite_field.cpython-310-darwin.so +0 -0
  279. sage/rings/polynomial/skew_polynomial_finite_field.pyx +3 -4
  280. sage/rings/polynomial/skew_polynomial_finite_order.cpython-310-darwin.so +0 -0
  281. sage/rings/polynomial/skew_polynomial_finite_order.pyx +2 -5
  282. sage/rings/real_double_element_gsl.cpython-310-darwin.so +0 -0
  283. sage/rings/real_mpfr.cpython-310-darwin.so +0 -0
  284. sage/rings/real_mpfr.pyx +25 -7
  285. sage/rings/ring_extension.cpython-310-darwin.so +0 -0
  286. sage/rings/ring_extension.pyx +4 -2
  287. sage/rings/ring_extension_conversion.cpython-310-darwin.so +0 -0
  288. sage/rings/ring_extension_element.cpython-310-darwin.so +0 -0
  289. sage/rings/ring_extension_element.pyx +42 -0
  290. sage/rings/ring_extension_morphism.cpython-310-darwin.so +0 -0
  291. sage/schemes/projective/cohomology.py +2 -2
  292. sage/stats/basic_stats.py +9 -6
  293. sage/stats/distributions/dgs_misc.h +11 -4
  294. sage/stats/distributions/discrete_gaussian_integer.cpython-310-darwin.so +0 -0
  295. sage/stats/distributions/discrete_gaussian_integer.pyx +9 -7
  296. sage/stats/hmm/chmm.cpython-310-darwin.so +0 -0
  297. sage/stats/hmm/chmm.pyx +13 -13
  298. sage/stats/hmm/distributions.cpython-310-darwin.so +0 -0
  299. sage/stats/hmm/distributions.pxd +3 -3
  300. sage/stats/hmm/distributions.pyx +3 -3
  301. sage/stats/hmm/hmm.cpython-310-darwin.so +0 -0
  302. sage/stats/hmm/hmm.pxd +3 -3
  303. sage/stats/hmm/hmm.pyx +6 -6
  304. sage/stats/hmm/util.cpython-310-darwin.so +0 -0
  305. sage/stats/hmm/util.pyx +6 -6
  306. sage/stats/intlist.cpython-310-darwin.so +0 -0
  307. sage/stats/intlist.pxd +3 -3
  308. sage/stats/time_series.cpython-310-darwin.so +0 -0
  309. sage/tensor/modules/alternating_contr_tensor.py +3 -3
  310. sage/tensor/modules/comp.py +3 -3
  311. sage/tensor/modules/ext_pow_free_module.py +3 -3
  312. sage/tensor/modules/format_utilities.py +3 -3
  313. sage/tensor/modules/free_module_linear_group.py +3 -3
  314. sage/tensor/modules/free_module_morphism.py +0 -1
  315. sage/tensor/modules/tensor_free_module.py +3 -3
  316. sage/tensor/modules/tensor_free_submodule.py +1 -1
  317. sage/tensor/modules/tensor_free_submodule_basis.py +1 -1
  318. sage/tensor/modules/tensor_with_indices.py +5 -5
  319. {passagemath_modules-10.5.46.dist-info → passagemath_modules-10.6.20.dist-info}/WHEEL +0 -0
  320. {passagemath_modules-10.5.46.dist-info → passagemath_modules-10.6.20.dist-info}/top_level.txt +0 -0
@@ -65,7 +65,7 @@ class Algebras(AlgebrasCategory):
65
65
 
66
66
  sage: A = RootSystem(["B",2]).weight_space().algebra(QQ)
67
67
  sage: A.some_elements()
68
- [B[2*Lambda[1] + 2*Lambda[2]], ... B[Lambda[1]], B[Lambda[2]]]
68
+ [B[2*Lambda[1] + 2*Lambda[2]], ...B[Lambda[1]], B[Lambda[2]]]
69
69
  sage: A.some_elements() # needs sage.graphs
70
70
  [B[2*Lambda[1] + 2*Lambda[2]],
71
71
  B[2*Lambda[1] - 2*Lambda[2]],
@@ -3645,7 +3645,7 @@ class RootLatticeRealizations(Category_over_base_ring):
3645
3645
  # Descents
3646
3646
  ##########################################################################
3647
3647
 
3648
- def has_descent(self, i, positive=False):
3648
+ def has_descent(self, i, positive=False) -> bool:
3649
3649
  """
3650
3650
  Test if ``self`` has a descent at position `i`, that is, if ``self`` is
3651
3651
  on the strict negative side of the `i`-th simple reflection
@@ -293,9 +293,9 @@ class CartanTypeFolded(UniqueRepresentation, SageObject):
293
293
  return root.leading_coefficient() / coroot.leading_coefficient()
294
294
  index_set = self._cartan_type.index_set()
295
295
  min_f = min(f(j) for j in index_set)
296
- return Family(dict( (i, int(f(i) / min_f)) for i in index_set ))
296
+ return Family({i: int(f(i) / min_f) for i in index_set})
297
297
  elif self._cartan_type.is_affine():
298
298
  c = self._cartan_type.translation_factors()
299
299
  cmax = max(c)
300
- return Family(dict( (i, int(cmax / c[i]))
301
- for i in self._cartan_type.index_set() ))
300
+ return Family({i: int(cmax / c[i])
301
+ for i in self._cartan_type.index_set()})
@@ -117,11 +117,12 @@ class CartanType(SageObject, CartanType_abstract):
117
117
  """
118
118
  self._types = types
119
119
  self.affine = False
120
- indices = (None,) + tuple( (i, j)
121
- for i in range(len(types))
122
- for j in types[i].index_set() )
120
+ indices = (None,) + tuple((i, j)
121
+ for i in range(len(types))
122
+ for j in types[i].index_set())
123
123
  self._indices = indices
124
- self._index_relabelling = dict((indices[i], i) for i in range(1, len(indices)))
124
+ self._index_relabelling = {indices[i]: i
125
+ for i in range(1, len(indices))}
125
126
 
126
127
  self._spaces = [t.root_system().ambient_space() for t in types]
127
128
  if all(l is not None for l in self._spaces):
@@ -131,9 +132,9 @@ class CartanType(SageObject, CartanType_abstract):
131
132
  self.tools = root_system.type_reducible
132
133
  # a direct product of finite Cartan types is again finite;
133
134
  # idem for simply laced and crystallographic.
134
- super_classes = tuple( cls
135
- for cls in (CartanType_finite, CartanType_simply_laced, CartanType_crystallographic)
136
- if all(isinstance(t, cls) for t in types) )
135
+ super_classes = tuple(cls
136
+ for cls in (CartanType_finite, CartanType_simply_laced, CartanType_crystallographic)
137
+ if all(isinstance(t, cls) for t in types))
137
138
  self._add_abstract_superclass(super_classes)
138
139
 
139
140
  def _repr_(self, compact=True): # We should make a consistent choice here
@@ -376,7 +376,7 @@ class AmbientSpace(ambient_space.AmbientSpace):
376
376
  I = P.index_set()
377
377
  return P.sum((-c/dep[0]) * h[I[i]] for i,c in dep[1:].items())
378
378
 
379
- def has_descent(self, i, positive=False):
379
+ def has_descent(self, i, positive=False) -> bool:
380
380
  """
381
381
  Test if ``self`` has a descent at position `i`, that is
382
382
  if ``self`` is on the strict negative side of the `i`-th
@@ -415,7 +415,7 @@ class AmbientSpace(ambient_space.AmbientSpace):
415
415
  else:
416
416
  return s < 0
417
417
 
418
- def is_dominant_weight(self):
418
+ def is_dominant_weight(self) -> bool:
419
419
  """
420
420
  Test whether ``self`` is a dominant element of the weight lattice.
421
421
 
@@ -480,7 +480,7 @@ class WeightLatticeRealizations(Category_over_base_ring):
480
480
  sage: R.reduced_word_of_alcove_morphism(omega3.translation)
481
481
  [0, 1, 0, 2, 1, 0]
482
482
 
483
- sage: # needs sage.libs.gap
483
+ sage: # needs sage.graphs sage.libs.gap
484
484
  sage: W = WeylGroup(['C',3,1])
485
485
  sage: s = W.simple_reflections()
486
486
  sage: w = s[0]*s[1]*s[2]*s[3]*s[2]
@@ -597,10 +597,10 @@ class WeightLatticeRealizations(Category_over_base_ring):
597
597
  # Now, we have d = f w^-1
598
598
  winv = ~w
599
599
  assert all(alpha[i].level().is_zero() for i in self.index_set())
600
- rank_simple_roots = dict( (alpha[i],i) for i in self.index_set())
600
+ rank_simple_roots = {alpha[i]: i for i in self.index_set()}
601
601
  permutation = dict()
602
602
  for i in self.index_set():
603
- root = f(winv.action(alpha[i])) # This is d(alpha_i)
603
+ root = f(winv.action(alpha[i])) # This is d(alpha_i)
604
604
  assert root in rank_simple_roots
605
605
  permutation[i] = rank_simple_roots[root]
606
606
  assert set(permutation.values()), set(self.index_set())
@@ -695,7 +695,8 @@ class WeightLatticeRealizations(Category_over_base_ring):
695
695
  # preserving the alcoves.
696
696
  if elements is None:
697
697
  c = self.cartan_type().c()
698
- elements = [ c[i] * Lambda[i] for i in self.cartan_type().classical().index_set() ]
698
+ elements = [c[i] * Lambda[i]
699
+ for i in self.cartan_type().classical().index_set()]
699
700
 
700
701
  # When the null root is zero in this root lattice realization,
701
702
  # the roots correspond to the classical roots. We use that to
@@ -704,7 +705,7 @@ class WeightLatticeRealizations(Category_over_base_ring):
704
705
  # set to be of the form 0..n
705
706
  test_automorphism = self.null_root().is_zero() and set(self.index_set()) == set(i for i in range(len(self.index_set())))
706
707
  # dictionary assigning a simple root to its index
707
- rank_simple_roots = dict( (alpha[i],i) for i in self.index_set() )
708
+ rank_simple_roots = {alpha[i]: i for i in self.index_set()}
708
709
 
709
710
  try:
710
711
  W = self.weyl_group()
@@ -779,15 +780,15 @@ class WeightLatticeRealizations(Category_over_base_ring):
779
780
  EXAMPLES::
780
781
 
781
782
  sage: L = RootSystem(['C',2,1]).weight_lattice()
782
- sage: L.signs_of_alcovewalk([1,2,0,1,2,1,2,0,1,2]) # needs sage.libs.gap
783
+ sage: L.signs_of_alcovewalk([1,2,0,1,2,1,2,0,1,2]) # needs sage.graphs sage.libs.gap
783
784
  [-1, -1, 1, -1, 1, 1, 1, 1, 1, 1]
784
785
 
785
786
  sage: L = RootSystem(['A',2,1]).weight_lattice()
786
- sage: L.signs_of_alcovewalk([0,1,2,1,2,0,1,2,0,1,2,0]) # needs sage.libs.gap
787
+ sage: L.signs_of_alcovewalk([0,1,2,1,2,0,1,2,0,1,2,0]) # needs sage.graphs sage.libs.gap
787
788
  [1, 1, 1, 1, -1, 1, -1, 1, -1, 1, -1, 1]
788
789
 
789
790
  sage: L = RootSystem(['B',2,1]).coweight_lattice()
790
- sage: L.signs_of_alcovewalk([0,1,2,0,1,2]) # needs sage.libs.gap
791
+ sage: L.signs_of_alcovewalk([0,1,2,0,1,2]) # needs sage.graphs sage.libs.gap
791
792
  [1, -1, 1, -1, 1, 1]
792
793
 
793
794
  .. WARNING::
@@ -91,7 +91,7 @@ class WeylCharacterRing(CombinatorialFreeModule):
91
91
  For more information, see the thematic tutorial *Lie Methods and
92
92
  Related Combinatorics in Sage*, available at:
93
93
 
94
- https://doc.sagemath.org/html/en/thematic_tutorials/lie.html
94
+ https://passagemath.org/docs/latest/html/en/thematic_tutorials/lie.html
95
95
  """
96
96
  @staticmethod
97
97
  def __classcall__(cls, ct, base_ring=ZZ, prefix=None, style='lattice', k=None, conjugate=False, cyclotomic_order=None, fusion_labels=None, inject_variables=False):
sage/crypto/__init__.py CHANGED
@@ -1,3 +1,4 @@
1
1
  # sage_setup: distribution = sagemath-modules
2
+ # delvewheel: patch
2
3
  from sage.misc.lazy_import import lazy_import
3
4
  lazy_import('sage.crypto.lattice', 'gen_lattice')
@@ -1042,7 +1042,7 @@ def convert_to_vector(I, L):
1042
1042
 
1043
1043
  - ``I`` -- integer or bit list-like
1044
1044
 
1045
- - ``L`` -- integer; the desired bit length of the ouput
1045
+ - ``L`` -- integer; the desired bit length of the output
1046
1046
 
1047
1047
  OUTPUT: the ``L``-bit vector representation of ``I``
1048
1048
 
@@ -12,7 +12,7 @@ AUTHORS:
12
12
  - Minh Van Nguyen (2009-05): initial version
13
13
  """
14
14
 
15
- ###########################################################################
15
+ # #########################################################################
16
16
  # Copyright (c) 2009 Minh Van Nguyen <nguyenminh2@gmail.com>
17
17
  #
18
18
  # This program is free software; you can redistribute it and/or modify
@@ -25,8 +25,8 @@ AUTHORS:
25
25
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
26
  # GNU General Public License for more details.
27
27
  #
28
- # http://www.gnu.org/licenses/
29
- ###########################################################################
28
+ # https://www.gnu.org/licenses/
29
+ # #########################################################################
30
30
 
31
31
  from sage.matrix.matrix_dense import Matrix_dense
32
32
  from sage.matrix.matrix_space import MatrixSpace
@@ -554,7 +554,7 @@ class PRESENT(SageObject):
554
554
  :mod:`sage.crypto.sbox` uses big endian by default whereas most of
555
555
  Sage uses little endian. So to use the big endian PRESENT Sbox from
556
556
  :mod:`sage.crypto.sboxes` :func:`sbox_layer` has to do some endian
557
- conversion (i.e. reverse input and ouput of the Sbox). Keep this in
557
+ conversion (i.e. reverse input and output of the Sbox). Keep this in
558
558
  mind if you change the Sbox or :func:`sbox_layer`.
559
559
  """
560
560
  sbox = self.sbox if not inverse else self.sbox.inverse()
@@ -704,7 +704,7 @@ class PRESENT_KS(SageObject):
704
704
  :mod:`sage.crypto.sbox` uses big endian by default whereas most of Sage
705
705
  uses little endian. So to use the big endian PRESENT Sbox from
706
706
  :mod:`sage.crypto.sboxes` :class:`PRESENT_KS` has to do some endian
707
- conversion (i.e. reverse input and ouput of the Sbox). Keep this in
707
+ conversion (i.e. reverse input and output of the Sbox). Keep this in
708
708
  mind if you change the Sbox or :func:`__call__`.
709
709
 
710
710
  .. automethod:: __init__
@@ -886,7 +886,7 @@ def convert_to_vector(I, L):
886
886
 
887
887
  - ``I`` -- integer or bit list-like
888
888
 
889
- - ``L`` -- integer; the desired bit length of the ouput
889
+ - ``L`` -- integer; the desired bit length of the output
890
890
 
891
891
  OUTPUT: the ``L``-bit vector representation of ``I``
892
892
 
@@ -13,7 +13,7 @@ AUTHORS:
13
13
  - Minh Van Nguyen (2009-06): initial version
14
14
  """
15
15
 
16
- ###########################################################################
16
+ # #########################################################################
17
17
  # Copyright (c) 2009 Minh Van Nguyen <nguyenminh2@gmail.com>
18
18
  #
19
19
  # This program is free software; you can redistribute it and/or modify
@@ -26,8 +26,8 @@ AUTHORS:
26
26
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27
27
  # GNU General Public License for more details.
28
28
  #
29
- # http://www.gnu.org/licenses/
30
- ###########################################################################
29
+ # https://www.gnu.org/licenses/
30
+ # #########################################################################
31
31
 
32
32
  from sage.monoids.string_monoid import BinaryStrings
33
33
  from sage.structure.sage_object import SageObject
@@ -101,7 +101,7 @@ cdef long yellow_code(unsigned long a) noexcept:
101
101
  cdef unsigned long s = (8*sizeof(unsigned long)) >> 1
102
102
  cdef unsigned long m = (~0UL) >> s
103
103
  cdef unsigned long r = a
104
- while(s):
104
+ while s:
105
105
  sig_check()
106
106
  r ^= (r&m) << s
107
107
  s >>= 1
@@ -289,11 +289,11 @@ cdef class BooleanFunction(SageObject):
289
289
  if isinstance(x, str):
290
290
  L = ZZ(len(x))
291
291
  if L.is_power_of(2):
292
- x = ZZ("0x"+x).digits(base=2,padto=4*L)
292
+ x = ZZ("0x" + x).digits(base=2, padto=4*L)
293
293
  else:
294
294
  raise ValueError("the length of the truth table must be a power of 2")
295
295
  from types import GeneratorType
296
- if isinstance(x, (list,tuple,GeneratorType)):
296
+ if isinstance(x, (list, tuple, GeneratorType)):
297
297
  # initialisation from a truth table
298
298
 
299
299
  # first, check the length
@@ -337,14 +337,15 @@ cdef class BooleanFunction(SageObject):
337
337
  FiniteField_givaro = ()
338
338
  if isinstance(K, FiniteField_givaro): # the ordering is not the same in this case
339
339
  for u in K:
340
- bitset_set_to(self._truth_table, ZZ(u._vector_().list(),2), (x(u)).trace())
340
+ bitset_set_to(self._truth_table,
341
+ ZZ(u._vector_().list(), 2), (x(u)).trace())
341
342
  else:
342
- for i,u in enumerate(K):
343
+ for i, u in enumerate(K):
343
344
  bitset_set_to(self._truth_table, i, (x(u)).trace())
344
345
  elif isinstance(x, BooleanFunction):
345
346
  self._nvariables = x.nvariables()
346
347
  bitset_init(self._truth_table, <mp_bitcnt_t> (1<<self._nvariables))
347
- bitset_copy(self._truth_table,(<BooleanFunction>x)._truth_table)
348
+ bitset_copy(self._truth_table, (<BooleanFunction>x)._truth_table)
348
349
  else:
349
350
  raise TypeError("unable to init the Boolean function")
350
351
 
@@ -508,7 +509,7 @@ cdef class BooleanFunction(SageObject):
508
509
  bitset_copy(anf, self._truth_table)
509
510
  reed_muller(anf.bits, ZZ(anf.limbs).exact_log(2))
510
511
  from sage.rings.polynomial.pbori.pbori import BooleanPolynomialRing
511
- R = BooleanPolynomialRing(self._nvariables,"x")
512
+ R = BooleanPolynomialRing(self._nvariables, "x")
512
513
  G = R.gens()
513
514
  P = R(0)
514
515
 
@@ -518,7 +519,7 @@ cdef class BooleanFunction(SageObject):
518
519
  inf = i*sizeof(long)*8
519
520
  sup = min((i+1)*sizeof(long)*8, (1<<self._nvariables))
520
521
  for j in range(inf, sup):
521
- if bitset_in(anf,j):
522
+ if bitset_in(anf, j):
522
523
  m = R(1)
523
524
  for k in range(self._nvariables):
524
525
  if (j>>k)&1:
@@ -593,9 +594,9 @@ cdef class BooleanFunction(SageObject):
593
594
  if format == 'bin':
594
595
  return tuple(self)
595
596
  if format == 'int':
596
- return tuple(map(int,self))
597
+ return tuple(map(int, self))
597
598
  if format == 'hex':
598
- S = ZZ(self.truth_table(),2).str(16)
599
+ S = ZZ(self.truth_table(), 2).str(16)
599
600
  S = "0"*((1<<(self._nvariables-2)) - len(S)) + S
600
601
  return S
601
602
  raise ValueError("unknown output format")
@@ -714,7 +715,7 @@ cdef class BooleanFunction(SageObject):
714
715
  (0, -4, 0, 4, 0, 4, 0, 4)
715
716
  """
716
717
  cdef long *temp
717
- cdef mp_bitcnt_t i,n
718
+ cdef mp_bitcnt_t i, n
718
719
 
719
720
  if self._walsh_hadamard_transform is None:
720
721
  n = self._truth_table.size
@@ -1011,7 +1012,7 @@ cdef class BooleanFunction(SageObject):
1011
1012
  """
1012
1013
  # NOTE: this is a toy implementation
1013
1014
  from sage.rings.polynomial.polynomial_ring_constructor import BooleanPolynomialRing_constructor
1014
- R = BooleanPolynomialRing_constructor(self._nvariables,'x')
1015
+ R = BooleanPolynomialRing_constructor(self._nvariables, 'x')
1015
1016
  G = R.gens()
1016
1017
  r = [R(1)]
1017
1018
 
@@ -1023,7 +1024,8 @@ cdef class BooleanFunction(SageObject):
1023
1024
 
1024
1025
  from sage.matrix.constructor import Matrix
1025
1026
  from sage.arith.misc import binomial
1026
- M = Matrix(GF(2), sum(binomial(self._nvariables,i) for i in range(d+1)), len(s))
1027
+ M = Matrix(GF(2), sum(binomial(self._nvariables, i)
1028
+ for i in range(d+1)), len(s))
1027
1029
 
1028
1030
  cdef long i
1029
1031
  for i in range(1, d+1):
@@ -1037,23 +1039,20 @@ cdef class BooleanFunction(SageObject):
1037
1039
  cdef long j
1038
1040
  cdef mp_bitcnt_t v
1039
1041
 
1040
- for i,m in enumerate(r):
1042
+ for i, m in enumerate(r):
1041
1043
  t = BooleanFunction(m)
1042
- for j,v in enumerate(s):
1044
+ for j, v in enumerate(s):
1043
1045
  sig_check()
1044
- M[i,j] = bitset_in(t._truth_table,v)
1046
+ M[i, j] = bitset_in(t._truth_table, v)
1045
1047
 
1046
1048
  kg = M.kernel().gens()
1047
1049
 
1048
1050
  if kg:
1049
- res = sum([kg[0][i]*ri for i,ri in enumerate(r)])
1051
+ res = sum([kg[0][i]*ri for i, ri in enumerate(r)])
1050
1052
  else:
1051
1053
  res = None
1052
1054
 
1053
- if dim:
1054
- return res, len(kg)
1055
- else:
1056
- return res
1055
+ return (res, len(kg)) if dim else res
1057
1056
 
1058
1057
  def algebraic_immunity(self, annihilator=False):
1059
1058
  """
@@ -1211,7 +1210,7 @@ cdef class BooleanFunction(SageObject):
1211
1210
  except TypeError:
1212
1211
  raise TypeError("cannot compute is_linear_structure() using parameter %s" % (val,))
1213
1212
 
1214
- def has_linear_structure(self):
1213
+ def has_linear_structure(self) -> bool:
1215
1214
  r"""
1216
1215
  Return ``True`` if this function has a linear structure.
1217
1216
 
@@ -1484,5 +1483,5 @@ def random_boolean_function(n):
1484
1483
  T[0] = B._truth_table[0]
1485
1484
  for i in range(T.limbs):
1486
1485
  sig_check()
1487
- T.bits[i] = r.randrange(0,Integer(1)<<(sizeof(unsigned long)*8))
1486
+ T.bits[i] = r.randrange(0, Integer(1)<<(sizeof(unsigned long)*8))
1488
1487
  return B
@@ -18,22 +18,17 @@ AUTHORS:
18
18
  # (at your option) any later version.
19
19
  # https://www.gnu.org/licenses/
20
20
  # ****************************************************************************
21
-
22
- from sage.misc.superseded import experimental
21
+ from typing import Union
23
22
 
24
23
  from sage.crypto.key_exchange.key_exchange_scheme import KeyExchangeScheme
25
-
26
- from sage.arith.misc import is_prime
27
24
  from sage.misc.prandom import randint
28
- from sage.rings.integer import Integer
25
+ from sage.misc.superseded import experimental
29
26
  from sage.rings.finite_rings.finite_field_constructor import GF
30
- from sage.rings.finite_rings.finite_field_prime_modn import \
31
- FiniteField_prime_modn
27
+ from sage.rings.finite_rings.finite_field_prime_modn import FiniteField_prime_modn
32
28
  from sage.rings.finite_rings.integer_mod import IntegerMod_abstract
29
+ from sage.rings.integer import Integer
33
30
  from sage.structure.proof.proof import WithProof
34
31
 
35
- from typing import Union
36
-
37
32
 
38
33
  class DiffieHellman(KeyExchangeScheme):
39
34
 
sage/crypto/mq/sr.py CHANGED
@@ -463,7 +463,7 @@ class SR_generic(MPolynomialSystemGenerator):
463
463
  self._reverse_variables = bool(kwargs.get("reverse_variables", True))
464
464
 
465
465
  with AllowZeroInversionsContext(self):
466
- sub_byte_lookup = dict([(v, self.sub_byte(v)) for v in self._base])
466
+ sub_byte_lookup = {v: self.sub_byte(v) for v in self._base}
467
467
  self._sub_byte_lookup = sub_byte_lookup
468
468
 
469
469
  if self._gf2:
@@ -18,7 +18,7 @@ AUTHORS:
18
18
  the description contained in [MvOV1996]_.
19
19
  """
20
20
 
21
- #*****************************************************************************
21
+ # ****************************************************************************
22
22
  # Copyright (c) 2009, 2010 Mike Hogan
23
23
  # Copyright (c) 2009, 2010 David Joyner <wdjoyner@gmail.com>
24
24
  # Copyright (c) 2009, 2010 Minh Van Nguyen <nguyenminh2@gmail.com>
@@ -27,8 +27,8 @@ AUTHORS:
27
27
  # it under the terms of the GNU General Public License as published by
28
28
  # the Free Software Foundation, either version 2 of the License, or
29
29
  # (at your option) any later version.
30
- # http://www.gnu.org/licenses/
31
- #*****************************************************************************
30
+ # https://www.gnu.org/licenses/
31
+ # ****************************************************************************
32
32
 
33
33
  from operator import xor
34
34
 
Binary file
sage/crypto/sbox.pyx CHANGED
@@ -1647,7 +1647,7 @@ cdef class SBox(SageObject):
1647
1647
  ret.append((j, i, c))
1648
1648
  return ret
1649
1649
 
1650
- def has_linear_structure(self):
1650
+ def has_linear_structure(self) -> bool:
1651
1651
  """
1652
1652
  Return ``True`` if there exists a nonzero component function of this
1653
1653
  S-Box that has a linear structure.
sage/crypto/sboxes.py CHANGED
@@ -400,6 +400,28 @@ def monomial_function(n, e):
400
400
  return SBox(X**e)
401
401
 
402
402
 
403
+ def inversion(n):
404
+ r"""
405
+ Return the S-Box constructed from the inversion mapping over `\GF{2^n}`
406
+ extending `0 \mapsto 0`.
407
+
408
+ INPUT:
409
+
410
+ - ``n`` -- size of the S-Box
411
+
412
+ EXAMPLES::
413
+
414
+ sage: from sage.crypto.sboxes import inversion
415
+ sage: S4 = inversion(4)
416
+ sage: S4.differential_uniformity()
417
+ 4
418
+ sage: S5 = inversion(5)
419
+ sage: S5.differential_uniformity()
420
+ 2
421
+ """
422
+ return monomial_function(n, 2**n - 2)
423
+
424
+
403
425
  def chi(n):
404
426
  r"""
405
427
  Return the `\chi` function defined over `\GF{2^n}` used in the nonlinear
sage/crypto/util.py CHANGED
@@ -12,21 +12,19 @@ AUTHORS:
12
12
  ``is_blum_prime``, ``least_significant_bits``, ``random_blum_prime``.
13
13
  """
14
14
 
15
- #*****************************************************************************
15
+ # ***************************************************************************
16
16
  # Copyright (c) 2009, 2010 Minh Van Nguyen <nguyenminh2@gmail.com>
17
17
  #
18
18
  # This program is free software: you can redistribute it and/or modify
19
19
  # it under the terms of the GNU General Public License as published by
20
20
  # the Free Software Foundation, either version 2 of the License, or
21
21
  # (at your option) any later version.
22
- # http://www.gnu.org/licenses/
23
- #*****************************************************************************
22
+ # https://www.gnu.org/licenses/
23
+ # ***************************************************************************
24
24
 
25
- from sage.arith.functions import lcm
26
25
  from sage.arith.misc import is_prime, primes, random_prime
27
26
  from sage.misc.lazy_import import lazy_import
28
27
  from sage.rings.finite_rings.integer_mod import Mod as mod
29
- from sage.rings.integer import Integer
30
28
 
31
29
  lazy_import('sage.arith.misc', ('carmichael_lambda'), deprecation=34719)
32
30
  lazy_import('sage.monoids.string_monoid', 'BinaryStrings')
@@ -259,7 +257,7 @@ def bin_to_ascii(B):
259
257
  return "".join(A)
260
258
 
261
259
 
262
- def has_blum_prime(lbound, ubound):
260
+ def has_blum_prime(lbound, ubound) -> bool:
263
261
  r"""
264
262
  Determine whether or not there is a Blum prime within the specified closed
265
263
  interval.
@@ -1 +1 @@
1
- # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-0ajc9jfq/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
1
+ # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-dhl06n4x/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
@@ -1,2 +1,2 @@
1
1
  # sage_setup: distribution = sagemath-modules
2
- # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-0ajc9jfq/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
2
+ # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-dhl06n4x/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
@@ -1,15 +1,15 @@
1
1
  # sage_setup: distribution = sagemath-modules
2
- # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-0ajc9jfq/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
3
-
4
- from cpython.ref cimport PyObject
5
-
6
- from sage.ext.fast_callable cimport Wrapper
2
+ # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-dhl06n4x/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
7
3
 
8
4
  from sage.rings.real_mpfr cimport RealNumber
9
5
  from sage.libs.mpfr cimport *
10
6
  from sage.rings.complex_mpfr cimport ComplexNumber
11
7
  from sage.libs.mpc cimport *
12
8
 
9
+ from cpython.ref cimport PyObject
10
+
11
+ from sage.ext.fast_callable cimport Wrapper
12
+
13
13
  cdef class Wrapper_cc(Wrapper):
14
14
  cdef object domain
15
15
  cdef ComplexNumber domain_element
@@ -1,5 +1,5 @@
1
1
  # sage_setup: distribution = sagemath-modules
2
- # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-0ajc9jfq/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
2
+ # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-dhl06n4x/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
3
3
  # distutils: libraries = mpfr mpc gmp
4
4
 
5
5
  cdef public bint cc_py_call_helper(object domain, object fn,
@@ -1,16 +1,14 @@
1
1
  # sage_setup: distribution = sagemath-modules
2
- # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-0ajc9jfq/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
2
+ # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-dhl06n4x/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
3
+
4
+ # distutils: language = c++
5
+ cimport libcpp.complex
6
+ ctypedef libcpp.complex.complex[double] double_complex
3
7
 
4
8
  from cpython.ref cimport PyObject
5
9
 
6
10
  from sage.ext.fast_callable cimport Wrapper
7
11
 
8
- # We need the type double_complex to work around
9
- # http://trac.cython.org/ticket/869
10
- # so this is a bit hackish.
11
- cdef extern from "complex.h":
12
- ctypedef double double_complex "double complex"
13
-
14
12
  cdef class Wrapper_cdf(Wrapper):
15
13
  cdef int _n_args
16
14
  cdef double_complex* _args
@@ -1,22 +1,17 @@
1
1
  # sage_setup: distribution = sagemath-modules
2
- # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-0ajc9jfq/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
2
+ # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-dhl06n4x/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
3
3
  from sage.libs.gsl.complex cimport *
4
4
  from sage.rings.complex_double cimport ComplexDoubleElement
5
5
  import sage.rings.complex_double
6
6
  cdef object CDF = sage.rings.complex_double.CDF
7
7
 
8
- cdef extern from "complex.h":
9
- cdef double creal(double_complex)
10
- cdef double cimag(double_complex)
11
- cdef double_complex _Complex_I
12
-
13
8
  cdef inline double_complex CDE_to_dz(zz) noexcept:
14
9
  cdef ComplexDoubleElement z = <ComplexDoubleElement>(zz if isinstance(zz, ComplexDoubleElement) else CDF(zz))
15
- return GSL_REAL(z._complex) + _Complex_I * GSL_IMAG(z._complex)
10
+ return double_complex(GSL_REAL(z._complex), GSL_IMAG(z._complex))
16
11
 
17
12
  cdef inline ComplexDoubleElement dz_to_CDE(double_complex dz):
18
13
  cdef ComplexDoubleElement z = <ComplexDoubleElement>ComplexDoubleElement.__new__(ComplexDoubleElement)
19
- GSL_SET_COMPLEX(&z._complex, creal(dz), cimag(dz))
14
+ GSL_SET_COMPLEX(&z._complex, dz.real(), dz.imag())
20
15
  return z
21
16
 
22
17
  cdef public bint cdf_py_call_helper(object fn,
@@ -36,7 +31,6 @@ cdef public bint cdf_py_call_helper(object fn,
36
31
  return 1
37
32
 
38
33
 
39
-
40
34
  from cpython.ref cimport PyObject
41
35
  cdef extern from "Python.h":
42
36
  void Py_DECREF(PyObject *o)
@@ -59,7 +53,7 @@ cdef extern from "interp_cdf.c":
59
53
  double_complex* constants,
60
54
  PyObject** py_constants,
61
55
  double_complex* stack,
62
- int* code) except? -1094648119105371
56
+ int* code) except *
63
57
 
64
58
  cdef class Wrapper_cdf(Wrapper):
65
59
  # attributes are declared in corresponding .pxd file
@@ -1,5 +1,5 @@
1
1
  # sage_setup: distribution = sagemath-modules
2
- # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-0ajc9jfq/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
2
+ # Automatically generated by /private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/build-env-dhl06n4x/lib/python3.10/site-packages/sage_setup/autogen/interpreters/internal/generator.py. Do not edit!
3
3
 
4
4
  from cpython.ref cimport PyObject
5
5