passagemath-categories 10.6.32__cp314-cp314t-musllinux_1_2_aarch64.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.
Files changed (719) hide show
  1. passagemath_categories-10.6.32.dist-info/METADATA +156 -0
  2. passagemath_categories-10.6.32.dist-info/RECORD +719 -0
  3. passagemath_categories-10.6.32.dist-info/WHEEL +5 -0
  4. passagemath_categories-10.6.32.dist-info/top_level.txt +2 -0
  5. passagemath_categories.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_categories.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  7. passagemath_categories.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
  8. sage/all__sagemath_categories.py +28 -0
  9. sage/arith/all.py +38 -0
  10. sage/arith/constants.pxd +27 -0
  11. sage/arith/functions.cpython-314t-aarch64-linux-musl.so +0 -0
  12. sage/arith/functions.pxd +4 -0
  13. sage/arith/functions.pyx +221 -0
  14. sage/arith/misc.py +6552 -0
  15. sage/arith/multi_modular.cpython-314t-aarch64-linux-musl.so +0 -0
  16. sage/arith/multi_modular.pxd +39 -0
  17. sage/arith/multi_modular.pyx +994 -0
  18. sage/arith/rational_reconstruction.cpython-314t-aarch64-linux-musl.so +0 -0
  19. sage/arith/rational_reconstruction.pxd +4 -0
  20. sage/arith/rational_reconstruction.pyx +115 -0
  21. sage/arith/srange.cpython-314t-aarch64-linux-musl.so +0 -0
  22. sage/arith/srange.pyx +571 -0
  23. sage/calculus/all__sagemath_categories.py +2 -0
  24. sage/calculus/functional.py +481 -0
  25. sage/calculus/functions.py +151 -0
  26. sage/categories/additive_groups.py +73 -0
  27. sage/categories/additive_magmas.py +1044 -0
  28. sage/categories/additive_monoids.py +114 -0
  29. sage/categories/additive_semigroups.py +184 -0
  30. sage/categories/affine_weyl_groups.py +238 -0
  31. sage/categories/algebra_ideals.py +95 -0
  32. sage/categories/algebra_modules.py +96 -0
  33. sage/categories/algebras.py +349 -0
  34. sage/categories/algebras_with_basis.py +377 -0
  35. sage/categories/all.py +160 -0
  36. sage/categories/aperiodic_semigroups.py +29 -0
  37. sage/categories/associative_algebras.py +47 -0
  38. sage/categories/bialgebras.py +101 -0
  39. sage/categories/bialgebras_with_basis.py +414 -0
  40. sage/categories/bimodules.py +206 -0
  41. sage/categories/chain_complexes.py +268 -0
  42. sage/categories/classical_crystals.py +480 -0
  43. sage/categories/coalgebras.py +405 -0
  44. sage/categories/coalgebras_with_basis.py +232 -0
  45. sage/categories/coercion_methods.cpython-314t-aarch64-linux-musl.so +0 -0
  46. sage/categories/coercion_methods.pyx +52 -0
  47. sage/categories/commutative_additive_groups.py +104 -0
  48. sage/categories/commutative_additive_monoids.py +45 -0
  49. sage/categories/commutative_additive_semigroups.py +48 -0
  50. sage/categories/commutative_algebra_ideals.py +87 -0
  51. sage/categories/commutative_algebras.py +94 -0
  52. sage/categories/commutative_ring_ideals.py +58 -0
  53. sage/categories/commutative_rings.py +736 -0
  54. sage/categories/complete_discrete_valuation.py +293 -0
  55. sage/categories/complex_reflection_groups.py +145 -0
  56. sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
  57. sage/categories/coxeter_group_algebras.py +186 -0
  58. sage/categories/coxeter_groups.py +3402 -0
  59. sage/categories/crystals.py +2628 -0
  60. sage/categories/cw_complexes.py +216 -0
  61. sage/categories/dedekind_domains.py +137 -0
  62. sage/categories/discrete_valuation.py +325 -0
  63. sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
  64. sage/categories/division_rings.py +114 -0
  65. sage/categories/domains.py +95 -0
  66. sage/categories/drinfeld_modules.py +789 -0
  67. sage/categories/dual.py +42 -0
  68. sage/categories/enumerated_sets.py +1146 -0
  69. sage/categories/euclidean_domains.py +271 -0
  70. sage/categories/examples/algebras_with_basis.py +102 -0
  71. sage/categories/examples/all.py +1 -0
  72. sage/categories/examples/commutative_additive_monoids.py +130 -0
  73. sage/categories/examples/commutative_additive_semigroups.py +199 -0
  74. sage/categories/examples/coxeter_groups.py +8 -0
  75. sage/categories/examples/crystals.py +236 -0
  76. sage/categories/examples/cw_complexes.py +163 -0
  77. sage/categories/examples/facade_sets.py +187 -0
  78. sage/categories/examples/filtered_algebras_with_basis.py +204 -0
  79. sage/categories/examples/filtered_modules_with_basis.py +154 -0
  80. sage/categories/examples/finite_coxeter_groups.py +252 -0
  81. sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
  82. sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
  83. sage/categories/examples/finite_enumerated_sets.py +208 -0
  84. sage/categories/examples/finite_monoids.py +150 -0
  85. sage/categories/examples/finite_semigroups.py +190 -0
  86. sage/categories/examples/finite_weyl_groups.py +191 -0
  87. sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
  88. sage/categories/examples/graded_modules_with_basis.py +168 -0
  89. sage/categories/examples/graphs.py +122 -0
  90. sage/categories/examples/hopf_algebras_with_basis.py +145 -0
  91. sage/categories/examples/infinite_enumerated_sets.py +190 -0
  92. sage/categories/examples/lie_algebras.py +352 -0
  93. sage/categories/examples/lie_algebras_with_basis.py +196 -0
  94. sage/categories/examples/magmas.py +162 -0
  95. sage/categories/examples/manifolds.py +94 -0
  96. sage/categories/examples/monoids.py +144 -0
  97. sage/categories/examples/posets.py +178 -0
  98. sage/categories/examples/semigroups.py +580 -0
  99. sage/categories/examples/semigroups_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  100. sage/categories/examples/semigroups_cython.pyx +221 -0
  101. sage/categories/examples/semirings.py +249 -0
  102. sage/categories/examples/sets_cat.py +706 -0
  103. sage/categories/examples/sets_with_grading.py +101 -0
  104. sage/categories/examples/with_realizations.py +542 -0
  105. sage/categories/fields.py +991 -0
  106. sage/categories/filtered_algebras.py +63 -0
  107. sage/categories/filtered_algebras_with_basis.py +548 -0
  108. sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
  109. sage/categories/filtered_modules.py +210 -0
  110. sage/categories/filtered_modules_with_basis.py +1209 -0
  111. sage/categories/finite_complex_reflection_groups.py +1506 -0
  112. sage/categories/finite_coxeter_groups.py +1138 -0
  113. sage/categories/finite_crystals.py +103 -0
  114. sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
  115. sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
  116. sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
  117. sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
  118. sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
  119. sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
  120. sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
  121. sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
  122. sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
  123. sage/categories/finite_enumerated_sets.py +769 -0
  124. sage/categories/finite_fields.py +252 -0
  125. sage/categories/finite_groups.py +256 -0
  126. sage/categories/finite_lattice_posets.py +242 -0
  127. sage/categories/finite_monoids.py +316 -0
  128. sage/categories/finite_permutation_groups.py +339 -0
  129. sage/categories/finite_posets.py +1994 -0
  130. sage/categories/finite_semigroups.py +136 -0
  131. sage/categories/finite_sets.py +93 -0
  132. sage/categories/finite_weyl_groups.py +39 -0
  133. sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
  134. sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
  135. sage/categories/finitely_generated_magmas.py +57 -0
  136. sage/categories/finitely_generated_semigroups.py +214 -0
  137. sage/categories/function_fields.py +76 -0
  138. sage/categories/g_sets.py +77 -0
  139. sage/categories/gcd_domains.py +65 -0
  140. sage/categories/generalized_coxeter_groups.py +94 -0
  141. sage/categories/graded_algebras.py +85 -0
  142. sage/categories/graded_algebras_with_basis.py +258 -0
  143. sage/categories/graded_bialgebras.py +32 -0
  144. sage/categories/graded_bialgebras_with_basis.py +32 -0
  145. sage/categories/graded_coalgebras.py +65 -0
  146. sage/categories/graded_coalgebras_with_basis.py +51 -0
  147. sage/categories/graded_hopf_algebras.py +41 -0
  148. sage/categories/graded_hopf_algebras_with_basis.py +169 -0
  149. sage/categories/graded_lie_algebras.py +91 -0
  150. sage/categories/graded_lie_algebras_with_basis.py +44 -0
  151. sage/categories/graded_lie_conformal_algebras.py +74 -0
  152. sage/categories/graded_modules.py +133 -0
  153. sage/categories/graded_modules_with_basis.py +329 -0
  154. sage/categories/graphs.py +138 -0
  155. sage/categories/group_algebras.py +430 -0
  156. sage/categories/groupoid.py +94 -0
  157. sage/categories/groups.py +667 -0
  158. sage/categories/h_trivial_semigroups.py +64 -0
  159. sage/categories/hecke_modules.py +185 -0
  160. sage/categories/highest_weight_crystals.py +980 -0
  161. sage/categories/hopf_algebras.py +219 -0
  162. sage/categories/hopf_algebras_with_basis.py +309 -0
  163. sage/categories/infinite_enumerated_sets.py +115 -0
  164. sage/categories/integral_domains.py +203 -0
  165. sage/categories/j_trivial_semigroups.py +29 -0
  166. sage/categories/kac_moody_algebras.py +82 -0
  167. sage/categories/kahler_algebras.py +203 -0
  168. sage/categories/l_trivial_semigroups.py +63 -0
  169. sage/categories/lambda_bracket_algebras.py +280 -0
  170. sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
  171. sage/categories/lattice_posets.py +89 -0
  172. sage/categories/left_modules.py +49 -0
  173. sage/categories/lie_algebras.py +1070 -0
  174. sage/categories/lie_algebras_with_basis.py +261 -0
  175. sage/categories/lie_conformal_algebras.py +350 -0
  176. sage/categories/lie_conformal_algebras_with_basis.py +147 -0
  177. sage/categories/lie_groups.py +73 -0
  178. sage/categories/loop_crystals.py +1290 -0
  179. sage/categories/magmas.py +1189 -0
  180. sage/categories/magmas_and_additive_magmas.py +149 -0
  181. sage/categories/magmatic_algebras.py +365 -0
  182. sage/categories/manifolds.py +352 -0
  183. sage/categories/matrix_algebras.py +40 -0
  184. sage/categories/metric_spaces.py +387 -0
  185. sage/categories/modular_abelian_varieties.py +78 -0
  186. sage/categories/modules.py +989 -0
  187. sage/categories/modules_with_basis.py +2794 -0
  188. sage/categories/monoid_algebras.py +38 -0
  189. sage/categories/monoids.py +739 -0
  190. sage/categories/noetherian_rings.py +87 -0
  191. sage/categories/number_fields.py +242 -0
  192. sage/categories/ore_modules.py +189 -0
  193. sage/categories/partially_ordered_monoids.py +49 -0
  194. sage/categories/permutation_groups.py +63 -0
  195. sage/categories/pointed_sets.py +42 -0
  196. sage/categories/polyhedra.py +74 -0
  197. sage/categories/poor_man_map.py +270 -0
  198. sage/categories/posets.py +722 -0
  199. sage/categories/principal_ideal_domains.py +270 -0
  200. sage/categories/quantum_group_representations.py +543 -0
  201. sage/categories/quotient_fields.py +728 -0
  202. sage/categories/r_trivial_semigroups.py +45 -0
  203. sage/categories/regular_crystals.py +898 -0
  204. sage/categories/regular_supercrystals.py +170 -0
  205. sage/categories/right_modules.py +49 -0
  206. sage/categories/ring_ideals.py +74 -0
  207. sage/categories/rings.py +1904 -0
  208. sage/categories/rngs.py +175 -0
  209. sage/categories/schemes.py +393 -0
  210. sage/categories/semigroups.py +1060 -0
  211. sage/categories/semirings.py +71 -0
  212. sage/categories/semisimple_algebras.py +114 -0
  213. sage/categories/sets_with_grading.py +235 -0
  214. sage/categories/shephard_groups.py +43 -0
  215. sage/categories/signed_tensor.py +120 -0
  216. sage/categories/simplicial_complexes.py +134 -0
  217. sage/categories/simplicial_sets.py +1206 -0
  218. sage/categories/super_algebras.py +149 -0
  219. sage/categories/super_algebras_with_basis.py +144 -0
  220. sage/categories/super_hopf_algebras_with_basis.py +126 -0
  221. sage/categories/super_lie_conformal_algebras.py +193 -0
  222. sage/categories/super_modules.py +229 -0
  223. sage/categories/super_modules_with_basis.py +193 -0
  224. sage/categories/supercommutative_algebras.py +99 -0
  225. sage/categories/supercrystals.py +406 -0
  226. sage/categories/tensor.py +110 -0
  227. sage/categories/topological_spaces.py +170 -0
  228. sage/categories/triangular_kac_moody_algebras.py +439 -0
  229. sage/categories/tutorial.py +58 -0
  230. sage/categories/unique_factorization_domains.py +318 -0
  231. sage/categories/unital_algebras.py +426 -0
  232. sage/categories/vector_bundles.py +159 -0
  233. sage/categories/vector_spaces.py +357 -0
  234. sage/categories/weyl_groups.py +853 -0
  235. sage/combinat/all__sagemath_categories.py +34 -0
  236. sage/combinat/backtrack.py +180 -0
  237. sage/combinat/combinat.py +2269 -0
  238. sage/combinat/combinat_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  239. sage/combinat/combinat_cython.pxd +6 -0
  240. sage/combinat/combinat_cython.pyx +390 -0
  241. sage/combinat/combination.py +796 -0
  242. sage/combinat/combinatorial_map.py +416 -0
  243. sage/combinat/composition.py +2192 -0
  244. sage/combinat/dlx.py +510 -0
  245. sage/combinat/integer_lists/__init__.py +7 -0
  246. sage/combinat/integer_lists/base.cpython-314t-aarch64-linux-musl.so +0 -0
  247. sage/combinat/integer_lists/base.pxd +16 -0
  248. sage/combinat/integer_lists/base.pyx +713 -0
  249. sage/combinat/integer_lists/invlex.cpython-314t-aarch64-linux-musl.so +0 -0
  250. sage/combinat/integer_lists/invlex.pxd +4 -0
  251. sage/combinat/integer_lists/invlex.pyx +1650 -0
  252. sage/combinat/integer_lists/lists.py +328 -0
  253. sage/combinat/integer_lists/nn.py +48 -0
  254. sage/combinat/integer_vector.py +1818 -0
  255. sage/combinat/integer_vector_weighted.py +413 -0
  256. sage/combinat/matrices/all__sagemath_categories.py +5 -0
  257. sage/combinat/matrices/dancing_links.cpython-314t-aarch64-linux-musl.so +0 -0
  258. sage/combinat/matrices/dancing_links.pyx +1159 -0
  259. sage/combinat/matrices/dancing_links_c.h +380 -0
  260. sage/combinat/matrices/dlxcpp.py +136 -0
  261. sage/combinat/partition.py +10070 -0
  262. sage/combinat/partitions.cpython-314t-aarch64-linux-musl.so +0 -0
  263. sage/combinat/partitions.pyx +743 -0
  264. sage/combinat/permutation.py +10168 -0
  265. sage/combinat/permutation_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  266. sage/combinat/permutation_cython.pxd +11 -0
  267. sage/combinat/permutation_cython.pyx +407 -0
  268. sage/combinat/q_analogues.py +1090 -0
  269. sage/combinat/ranker.py +268 -0
  270. sage/combinat/subset.py +1561 -0
  271. sage/combinat/subsets_hereditary.py +202 -0
  272. sage/combinat/subsets_pairwise.py +184 -0
  273. sage/combinat/tools.py +63 -0
  274. sage/combinat/tuple.py +348 -0
  275. sage/data_structures/all.py +2 -0
  276. sage/data_structures/all__sagemath_categories.py +2 -0
  277. sage/data_structures/binary_matrix.pxd +138 -0
  278. sage/data_structures/binary_search.cpython-314t-aarch64-linux-musl.so +0 -0
  279. sage/data_structures/binary_search.pxd +3 -0
  280. sage/data_structures/binary_search.pyx +66 -0
  281. sage/data_structures/bitset.cpython-314t-aarch64-linux-musl.so +0 -0
  282. sage/data_structures/bitset.pxd +40 -0
  283. sage/data_structures/bitset.pyx +2385 -0
  284. sage/data_structures/bitset_base.cpython-314t-aarch64-linux-musl.so +0 -0
  285. sage/data_structures/bitset_base.pxd +926 -0
  286. sage/data_structures/bitset_base.pyx +117 -0
  287. sage/data_structures/bitset_intrinsics.h +487 -0
  288. sage/data_structures/blas_dict.cpython-314t-aarch64-linux-musl.so +0 -0
  289. sage/data_structures/blas_dict.pxd +12 -0
  290. sage/data_structures/blas_dict.pyx +469 -0
  291. sage/data_structures/list_of_pairs.cpython-314t-aarch64-linux-musl.so +0 -0
  292. sage/data_structures/list_of_pairs.pxd +16 -0
  293. sage/data_structures/list_of_pairs.pyx +122 -0
  294. sage/data_structures/mutable_poset.py +3312 -0
  295. sage/data_structures/pairing_heap.cpython-314t-aarch64-linux-musl.so +0 -0
  296. sage/data_structures/pairing_heap.h +346 -0
  297. sage/data_structures/pairing_heap.pxd +88 -0
  298. sage/data_structures/pairing_heap.pyx +1464 -0
  299. sage/data_structures/sparse_bitset.pxd +62 -0
  300. sage/data_structures/stream.py +5070 -0
  301. sage/databases/all__sagemath_categories.py +7 -0
  302. sage/databases/sql_db.py +2236 -0
  303. sage/ext/all__sagemath_categories.py +3 -0
  304. sage/ext/fast_callable.cpython-314t-aarch64-linux-musl.so +0 -0
  305. sage/ext/fast_callable.pxd +4 -0
  306. sage/ext/fast_callable.pyx +2746 -0
  307. sage/ext/fast_eval.cpython-314t-aarch64-linux-musl.so +0 -0
  308. sage/ext/fast_eval.pxd +1 -0
  309. sage/ext/fast_eval.pyx +102 -0
  310. sage/ext/interpreters/__init__.py +1 -0
  311. sage/ext/interpreters/all__sagemath_categories.py +2 -0
  312. sage/ext/interpreters/wrapper_el.cpython-314t-aarch64-linux-musl.so +0 -0
  313. sage/ext/interpreters/wrapper_el.pxd +18 -0
  314. sage/ext/interpreters/wrapper_el.pyx +148 -0
  315. sage/ext/interpreters/wrapper_py.cpython-314t-aarch64-linux-musl.so +0 -0
  316. sage/ext/interpreters/wrapper_py.pxd +17 -0
  317. sage/ext/interpreters/wrapper_py.pyx +133 -0
  318. sage/functions/airy.py +937 -0
  319. sage/functions/all.py +97 -0
  320. sage/functions/bessel.py +2102 -0
  321. sage/functions/error.py +784 -0
  322. sage/functions/exp_integral.py +1529 -0
  323. sage/functions/gamma.py +1087 -0
  324. sage/functions/generalized.py +672 -0
  325. sage/functions/hyperbolic.py +747 -0
  326. sage/functions/hypergeometric.py +1156 -0
  327. sage/functions/jacobi.py +1705 -0
  328. sage/functions/log.py +1402 -0
  329. sage/functions/min_max.py +338 -0
  330. sage/functions/orthogonal_polys.py +3106 -0
  331. sage/functions/other.py +2303 -0
  332. sage/functions/piecewise.py +1505 -0
  333. sage/functions/prime_pi.cpython-314t-aarch64-linux-musl.so +0 -0
  334. sage/functions/prime_pi.pyx +262 -0
  335. sage/functions/special.py +1212 -0
  336. sage/functions/spike_function.py +278 -0
  337. sage/functions/transcendental.py +690 -0
  338. sage/functions/trig.py +1062 -0
  339. sage/functions/wigner.py +726 -0
  340. sage/geometry/abc.cpython-314t-aarch64-linux-musl.so +0 -0
  341. sage/geometry/abc.pyx +82 -0
  342. sage/geometry/all__sagemath_categories.py +1 -0
  343. sage/groups/all__sagemath_categories.py +11 -0
  344. sage/groups/generic.py +1733 -0
  345. sage/groups/groups_catalog.py +113 -0
  346. sage/groups/perm_gps/all__sagemath_categories.py +1 -0
  347. sage/groups/perm_gps/partn_ref/all.py +1 -0
  348. sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
  349. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314t-aarch64-linux-musl.so +0 -0
  350. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
  351. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
  352. sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314t-aarch64-linux-musl.so +0 -0
  353. sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
  354. sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
  355. sage/groups/perm_gps/partn_ref/data_structures.cpython-314t-aarch64-linux-musl.so +0 -0
  356. sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
  357. sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
  358. sage/groups/perm_gps/partn_ref/double_coset.cpython-314t-aarch64-linux-musl.so +0 -0
  359. sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
  360. sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
  361. sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314t-aarch64-linux-musl.so +0 -0
  362. sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
  363. sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
  364. sage/groups/perm_gps/partn_ref/refinement_python.cpython-314t-aarch64-linux-musl.so +0 -0
  365. sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
  366. sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
  367. sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314t-aarch64-linux-musl.so +0 -0
  368. sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
  369. sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
  370. sage/interfaces/abc.py +140 -0
  371. sage/interfaces/all.py +58 -0
  372. sage/interfaces/all__sagemath_categories.py +1 -0
  373. sage/interfaces/expect.py +1643 -0
  374. sage/interfaces/interface.py +1682 -0
  375. sage/interfaces/process.cpython-314t-aarch64-linux-musl.so +0 -0
  376. sage/interfaces/process.pxd +5 -0
  377. sage/interfaces/process.pyx +288 -0
  378. sage/interfaces/quit.py +167 -0
  379. sage/interfaces/sage0.py +604 -0
  380. sage/interfaces/sagespawn.cpython-314t-aarch64-linux-musl.so +0 -0
  381. sage/interfaces/sagespawn.pyx +308 -0
  382. sage/interfaces/tab_completion.py +101 -0
  383. sage/misc/all__sagemath_categories.py +78 -0
  384. sage/misc/allocator.cpython-314t-aarch64-linux-musl.so +0 -0
  385. sage/misc/allocator.pxd +6 -0
  386. sage/misc/allocator.pyx +47 -0
  387. sage/misc/binary_tree.cpython-314t-aarch64-linux-musl.so +0 -0
  388. sage/misc/binary_tree.pxd +29 -0
  389. sage/misc/binary_tree.pyx +537 -0
  390. sage/misc/callable_dict.cpython-314t-aarch64-linux-musl.so +0 -0
  391. sage/misc/callable_dict.pyx +89 -0
  392. sage/misc/citation.cpython-314t-aarch64-linux-musl.so +0 -0
  393. sage/misc/citation.pyx +159 -0
  394. sage/misc/converting_dict.py +293 -0
  395. sage/misc/defaults.py +129 -0
  396. sage/misc/derivative.cpython-314t-aarch64-linux-musl.so +0 -0
  397. sage/misc/derivative.pyx +223 -0
  398. sage/misc/functional.py +2005 -0
  399. sage/misc/html.py +589 -0
  400. sage/misc/latex.py +2673 -0
  401. sage/misc/latex_macros.py +236 -0
  402. sage/misc/latex_standalone.py +1833 -0
  403. sage/misc/map_threaded.py +38 -0
  404. sage/misc/mathml.py +76 -0
  405. sage/misc/method_decorator.py +88 -0
  406. sage/misc/mrange.py +755 -0
  407. sage/misc/multireplace.py +41 -0
  408. sage/misc/object_multiplexer.py +92 -0
  409. sage/misc/parser.cpython-314t-aarch64-linux-musl.so +0 -0
  410. sage/misc/parser.pyx +1107 -0
  411. sage/misc/random_testing.py +264 -0
  412. sage/misc/rest_index_of_methods.py +377 -0
  413. sage/misc/search.cpython-314t-aarch64-linux-musl.so +0 -0
  414. sage/misc/search.pxd +2 -0
  415. sage/misc/search.pyx +68 -0
  416. sage/misc/stopgap.cpython-314t-aarch64-linux-musl.so +0 -0
  417. sage/misc/stopgap.pyx +95 -0
  418. sage/misc/table.py +853 -0
  419. sage/monoids/all__sagemath_categories.py +1 -0
  420. sage/monoids/indexed_free_monoid.py +1071 -0
  421. sage/monoids/monoid.py +82 -0
  422. sage/numerical/all__sagemath_categories.py +1 -0
  423. sage/numerical/backends/all__sagemath_categories.py +1 -0
  424. sage/numerical/backends/generic_backend.cpython-314t-aarch64-linux-musl.so +0 -0
  425. sage/numerical/backends/generic_backend.pxd +61 -0
  426. sage/numerical/backends/generic_backend.pyx +1893 -0
  427. sage/numerical/backends/generic_sdp_backend.cpython-314t-aarch64-linux-musl.so +0 -0
  428. sage/numerical/backends/generic_sdp_backend.pxd +38 -0
  429. sage/numerical/backends/generic_sdp_backend.pyx +755 -0
  430. sage/parallel/all.py +6 -0
  431. sage/parallel/decorate.py +575 -0
  432. sage/parallel/map_reduce.py +1997 -0
  433. sage/parallel/multiprocessing_sage.py +76 -0
  434. sage/parallel/ncpus.py +35 -0
  435. sage/parallel/parallelism.py +364 -0
  436. sage/parallel/reference.py +47 -0
  437. sage/parallel/use_fork.py +333 -0
  438. sage/rings/abc.cpython-314t-aarch64-linux-musl.so +0 -0
  439. sage/rings/abc.pxd +31 -0
  440. sage/rings/abc.pyx +526 -0
  441. sage/rings/algebraic_closure_finite_field.py +1154 -0
  442. sage/rings/all__sagemath_categories.py +91 -0
  443. sage/rings/big_oh.py +227 -0
  444. sage/rings/continued_fraction.py +2754 -0
  445. sage/rings/continued_fraction_gosper.py +220 -0
  446. sage/rings/factorint.cpython-314t-aarch64-linux-musl.so +0 -0
  447. sage/rings/factorint.pyx +295 -0
  448. sage/rings/fast_arith.cpython-314t-aarch64-linux-musl.so +0 -0
  449. sage/rings/fast_arith.pxd +21 -0
  450. sage/rings/fast_arith.pyx +535 -0
  451. sage/rings/finite_rings/all__sagemath_categories.py +9 -0
  452. sage/rings/finite_rings/conway_polynomials.py +542 -0
  453. sage/rings/finite_rings/element_base.cpython-314t-aarch64-linux-musl.so +0 -0
  454. sage/rings/finite_rings/element_base.pxd +12 -0
  455. sage/rings/finite_rings/element_base.pyx +1176 -0
  456. sage/rings/finite_rings/finite_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
  457. sage/rings/finite_rings/finite_field_base.pxd +7 -0
  458. sage/rings/finite_rings/finite_field_base.pyx +2171 -0
  459. sage/rings/finite_rings/finite_field_constructor.py +827 -0
  460. sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
  461. sage/rings/finite_rings/galois_group.py +154 -0
  462. sage/rings/finite_rings/hom_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
  463. sage/rings/finite_rings/hom_finite_field.pxd +23 -0
  464. sage/rings/finite_rings/hom_finite_field.pyx +856 -0
  465. sage/rings/finite_rings/hom_prime_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
  466. sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
  467. sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
  468. sage/rings/finite_rings/homset.py +357 -0
  469. sage/rings/finite_rings/integer_mod.cpython-314t-aarch64-linux-musl.so +0 -0
  470. sage/rings/finite_rings/integer_mod.pxd +56 -0
  471. sage/rings/finite_rings/integer_mod.pyx +4586 -0
  472. sage/rings/finite_rings/integer_mod_limits.h +11 -0
  473. sage/rings/finite_rings/integer_mod_ring.py +2044 -0
  474. sage/rings/finite_rings/residue_field.cpython-314t-aarch64-linux-musl.so +0 -0
  475. sage/rings/finite_rings/residue_field.pxd +30 -0
  476. sage/rings/finite_rings/residue_field.pyx +1811 -0
  477. sage/rings/finite_rings/stdint.pxd +19 -0
  478. sage/rings/fraction_field.py +1452 -0
  479. sage/rings/fraction_field_element.cpython-314t-aarch64-linux-musl.so +0 -0
  480. sage/rings/fraction_field_element.pyx +1357 -0
  481. sage/rings/function_field/all.py +7 -0
  482. sage/rings/function_field/all__sagemath_categories.py +2 -0
  483. sage/rings/function_field/constructor.py +218 -0
  484. sage/rings/function_field/element.cpython-314t-aarch64-linux-musl.so +0 -0
  485. sage/rings/function_field/element.pxd +11 -0
  486. sage/rings/function_field/element.pyx +1008 -0
  487. sage/rings/function_field/element_rational.cpython-314t-aarch64-linux-musl.so +0 -0
  488. sage/rings/function_field/element_rational.pyx +513 -0
  489. sage/rings/function_field/extensions.py +230 -0
  490. sage/rings/function_field/function_field.py +1468 -0
  491. sage/rings/function_field/function_field_rational.py +1005 -0
  492. sage/rings/function_field/ideal.py +1155 -0
  493. sage/rings/function_field/ideal_rational.py +629 -0
  494. sage/rings/function_field/jacobian_base.py +826 -0
  495. sage/rings/function_field/jacobian_hess.py +1053 -0
  496. sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
  497. sage/rings/function_field/maps.py +1039 -0
  498. sage/rings/function_field/order.py +281 -0
  499. sage/rings/function_field/order_basis.py +586 -0
  500. sage/rings/function_field/order_rational.py +576 -0
  501. sage/rings/function_field/place.py +426 -0
  502. sage/rings/function_field/place_rational.py +181 -0
  503. sage/rings/generic.py +320 -0
  504. sage/rings/homset.py +332 -0
  505. sage/rings/ideal.py +1885 -0
  506. sage/rings/ideal_monoid.py +215 -0
  507. sage/rings/infinity.py +1890 -0
  508. sage/rings/integer.cpython-314t-aarch64-linux-musl.so +0 -0
  509. sage/rings/integer.pxd +45 -0
  510. sage/rings/integer.pyx +7874 -0
  511. sage/rings/integer_ring.cpython-314t-aarch64-linux-musl.so +0 -0
  512. sage/rings/integer_ring.pxd +8 -0
  513. sage/rings/integer_ring.pyx +1693 -0
  514. sage/rings/laurent_series_ring.py +931 -0
  515. sage/rings/laurent_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  516. sage/rings/laurent_series_ring_element.pxd +11 -0
  517. sage/rings/laurent_series_ring_element.pyx +1927 -0
  518. sage/rings/lazy_series.py +7815 -0
  519. sage/rings/lazy_series_ring.py +4356 -0
  520. sage/rings/localization.py +1043 -0
  521. sage/rings/morphism.cpython-314t-aarch64-linux-musl.so +0 -0
  522. sage/rings/morphism.pxd +39 -0
  523. sage/rings/morphism.pyx +3299 -0
  524. sage/rings/multi_power_series_ring.py +1145 -0
  525. sage/rings/multi_power_series_ring_element.py +2184 -0
  526. sage/rings/noncommutative_ideals.cpython-314t-aarch64-linux-musl.so +0 -0
  527. sage/rings/noncommutative_ideals.pyx +423 -0
  528. sage/rings/number_field/all__sagemath_categories.py +1 -0
  529. sage/rings/number_field/number_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
  530. sage/rings/number_field/number_field_base.pxd +8 -0
  531. sage/rings/number_field/number_field_base.pyx +507 -0
  532. sage/rings/number_field/number_field_element_base.cpython-314t-aarch64-linux-musl.so +0 -0
  533. sage/rings/number_field/number_field_element_base.pxd +6 -0
  534. sage/rings/number_field/number_field_element_base.pyx +36 -0
  535. sage/rings/number_field/number_field_ideal.py +3550 -0
  536. sage/rings/padics/all__sagemath_categories.py +4 -0
  537. sage/rings/padics/local_generic.py +1670 -0
  538. sage/rings/padics/local_generic_element.cpython-314t-aarch64-linux-musl.so +0 -0
  539. sage/rings/padics/local_generic_element.pxd +5 -0
  540. sage/rings/padics/local_generic_element.pyx +1017 -0
  541. sage/rings/padics/misc.py +256 -0
  542. sage/rings/padics/padic_generic.py +1911 -0
  543. sage/rings/padics/pow_computer.cpython-314t-aarch64-linux-musl.so +0 -0
  544. sage/rings/padics/pow_computer.pxd +38 -0
  545. sage/rings/padics/pow_computer.pyx +671 -0
  546. sage/rings/padics/precision_error.py +24 -0
  547. sage/rings/polynomial/all__sagemath_categories.py +25 -0
  548. sage/rings/polynomial/commutative_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  549. sage/rings/polynomial/commutative_polynomial.pxd +6 -0
  550. sage/rings/polynomial/commutative_polynomial.pyx +24 -0
  551. sage/rings/polynomial/cyclotomic.cpython-314t-aarch64-linux-musl.so +0 -0
  552. sage/rings/polynomial/cyclotomic.pyx +404 -0
  553. sage/rings/polynomial/flatten.py +711 -0
  554. sage/rings/polynomial/ideal.py +102 -0
  555. sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
  556. sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
  557. sage/rings/polynomial/laurent_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  558. sage/rings/polynomial/laurent_polynomial.pxd +18 -0
  559. sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
  560. sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
  561. sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
  562. sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
  563. sage/rings/polynomial/multi_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  564. sage/rings/polynomial/multi_polynomial.pxd +12 -0
  565. sage/rings/polynomial/multi_polynomial.pyx +3082 -0
  566. sage/rings/polynomial/multi_polynomial_element.py +2570 -0
  567. sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
  568. sage/rings/polynomial/multi_polynomial_ring.py +947 -0
  569. sage/rings/polynomial/multi_polynomial_ring_base.cpython-314t-aarch64-linux-musl.so +0 -0
  570. sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
  571. sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
  572. sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
  573. sage/rings/polynomial/polydict.cpython-314t-aarch64-linux-musl.so +0 -0
  574. sage/rings/polynomial/polydict.pxd +45 -0
  575. sage/rings/polynomial/polydict.pyx +2701 -0
  576. sage/rings/polynomial/polynomial_compiled.cpython-314t-aarch64-linux-musl.so +0 -0
  577. sage/rings/polynomial/polynomial_compiled.pxd +59 -0
  578. sage/rings/polynomial/polynomial_compiled.pyx +509 -0
  579. sage/rings/polynomial/polynomial_element.cpython-314t-aarch64-linux-musl.so +0 -0
  580. sage/rings/polynomial/polynomial_element.pxd +64 -0
  581. sage/rings/polynomial/polynomial_element.pyx +13255 -0
  582. sage/rings/polynomial/polynomial_element_generic.py +1637 -0
  583. sage/rings/polynomial/polynomial_fateman.py +97 -0
  584. sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
  585. sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
  586. sage/rings/polynomial/polynomial_ring.py +3784 -0
  587. sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
  588. sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314t-aarch64-linux-musl.so +0 -0
  589. sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
  590. sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
  591. sage/rings/polynomial/polynomial_singular_interface.py +549 -0
  592. sage/rings/polynomial/symmetric_ideal.py +989 -0
  593. sage/rings/polynomial/symmetric_reduction.cpython-314t-aarch64-linux-musl.so +0 -0
  594. sage/rings/polynomial/symmetric_reduction.pxd +8 -0
  595. sage/rings/polynomial/symmetric_reduction.pyx +669 -0
  596. sage/rings/polynomial/term_order.py +2279 -0
  597. sage/rings/polynomial/toy_buchberger.py +449 -0
  598. sage/rings/polynomial/toy_d_basis.py +387 -0
  599. sage/rings/polynomial/toy_variety.py +362 -0
  600. sage/rings/power_series_mpoly.cpython-314t-aarch64-linux-musl.so +0 -0
  601. sage/rings/power_series_mpoly.pxd +9 -0
  602. sage/rings/power_series_mpoly.pyx +161 -0
  603. sage/rings/power_series_poly.cpython-314t-aarch64-linux-musl.so +0 -0
  604. sage/rings/power_series_poly.pxd +10 -0
  605. sage/rings/power_series_poly.pyx +1317 -0
  606. sage/rings/power_series_ring.py +1441 -0
  607. sage/rings/power_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  608. sage/rings/power_series_ring_element.pxd +12 -0
  609. sage/rings/power_series_ring_element.pyx +3028 -0
  610. sage/rings/puiseux_series_ring.py +487 -0
  611. sage/rings/puiseux_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  612. sage/rings/puiseux_series_ring_element.pxd +7 -0
  613. sage/rings/puiseux_series_ring_element.pyx +1055 -0
  614. sage/rings/qqbar_decorators.py +167 -0
  615. sage/rings/quotient_ring.py +1598 -0
  616. sage/rings/quotient_ring_element.py +979 -0
  617. sage/rings/rational.cpython-314t-aarch64-linux-musl.so +0 -0
  618. sage/rings/rational.pxd +20 -0
  619. sage/rings/rational.pyx +4284 -0
  620. sage/rings/rational_field.py +1730 -0
  621. sage/rings/real_double.cpython-314t-aarch64-linux-musl.so +0 -0
  622. sage/rings/real_double.pxd +16 -0
  623. sage/rings/real_double.pyx +2218 -0
  624. sage/rings/real_lazy.cpython-314t-aarch64-linux-musl.so +0 -0
  625. sage/rings/real_lazy.pxd +30 -0
  626. sage/rings/real_lazy.pyx +1773 -0
  627. sage/rings/ring.cpython-314t-aarch64-linux-musl.so +0 -0
  628. sage/rings/ring.pxd +30 -0
  629. sage/rings/ring.pyx +850 -0
  630. sage/rings/semirings/all.py +3 -0
  631. sage/rings/semirings/non_negative_integer_semiring.py +107 -0
  632. sage/rings/semirings/tropical_mpolynomial.py +972 -0
  633. sage/rings/semirings/tropical_polynomial.py +997 -0
  634. sage/rings/semirings/tropical_semiring.cpython-314t-aarch64-linux-musl.so +0 -0
  635. sage/rings/semirings/tropical_semiring.pyx +676 -0
  636. sage/rings/semirings/tropical_variety.py +1701 -0
  637. sage/rings/sum_of_squares.cpython-314t-aarch64-linux-musl.so +0 -0
  638. sage/rings/sum_of_squares.pxd +3 -0
  639. sage/rings/sum_of_squares.pyx +336 -0
  640. sage/rings/tests.py +504 -0
  641. sage/schemes/affine/affine_homset.py +508 -0
  642. sage/schemes/affine/affine_morphism.py +1574 -0
  643. sage/schemes/affine/affine_point.py +460 -0
  644. sage/schemes/affine/affine_rational_point.py +308 -0
  645. sage/schemes/affine/affine_space.py +1264 -0
  646. sage/schemes/affine/affine_subscheme.py +592 -0
  647. sage/schemes/affine/all.py +25 -0
  648. sage/schemes/all__sagemath_categories.py +5 -0
  649. sage/schemes/generic/algebraic_scheme.py +2092 -0
  650. sage/schemes/generic/all.py +5 -0
  651. sage/schemes/generic/ambient_space.py +400 -0
  652. sage/schemes/generic/divisor.py +465 -0
  653. sage/schemes/generic/divisor_group.py +313 -0
  654. sage/schemes/generic/glue.py +84 -0
  655. sage/schemes/generic/homset.py +820 -0
  656. sage/schemes/generic/hypersurface.py +234 -0
  657. sage/schemes/generic/morphism.py +2107 -0
  658. sage/schemes/generic/point.py +237 -0
  659. sage/schemes/generic/scheme.py +1190 -0
  660. sage/schemes/generic/spec.py +199 -0
  661. sage/schemes/product_projective/all.py +6 -0
  662. sage/schemes/product_projective/homset.py +236 -0
  663. sage/schemes/product_projective/morphism.py +517 -0
  664. sage/schemes/product_projective/point.py +568 -0
  665. sage/schemes/product_projective/rational_point.py +550 -0
  666. sage/schemes/product_projective/space.py +1301 -0
  667. sage/schemes/product_projective/subscheme.py +466 -0
  668. sage/schemes/projective/all.py +24 -0
  669. sage/schemes/projective/proj_bdd_height.py +453 -0
  670. sage/schemes/projective/projective_homset.py +718 -0
  671. sage/schemes/projective/projective_morphism.py +2792 -0
  672. sage/schemes/projective/projective_point.py +1484 -0
  673. sage/schemes/projective/projective_rational_point.py +569 -0
  674. sage/schemes/projective/projective_space.py +2571 -0
  675. sage/schemes/projective/projective_subscheme.py +1574 -0
  676. sage/sets/all.py +17 -0
  677. sage/sets/cartesian_product.py +376 -0
  678. sage/sets/condition_set.py +525 -0
  679. sage/sets/disjoint_set.cpython-314t-aarch64-linux-musl.so +0 -0
  680. sage/sets/disjoint_set.pxd +36 -0
  681. sage/sets/disjoint_set.pyx +998 -0
  682. sage/sets/disjoint_union_enumerated_sets.py +625 -0
  683. sage/sets/family.cpython-314t-aarch64-linux-musl.so +0 -0
  684. sage/sets/family.pxd +12 -0
  685. sage/sets/family.pyx +1556 -0
  686. sage/sets/finite_enumerated_set.py +406 -0
  687. sage/sets/finite_set_map_cy.cpython-314t-aarch64-linux-musl.so +0 -0
  688. sage/sets/finite_set_map_cy.pxd +34 -0
  689. sage/sets/finite_set_map_cy.pyx +708 -0
  690. sage/sets/finite_set_maps.py +591 -0
  691. sage/sets/image_set.py +448 -0
  692. sage/sets/integer_range.py +829 -0
  693. sage/sets/non_negative_integers.py +241 -0
  694. sage/sets/positive_integers.py +93 -0
  695. sage/sets/primes.py +188 -0
  696. sage/sets/real_set.py +2760 -0
  697. sage/sets/recursively_enumerated_set.cpython-314t-aarch64-linux-musl.so +0 -0
  698. sage/sets/recursively_enumerated_set.pxd +31 -0
  699. sage/sets/recursively_enumerated_set.pyx +2082 -0
  700. sage/sets/set.py +2083 -0
  701. sage/sets/set_from_iterator.py +1021 -0
  702. sage/sets/totally_ordered_finite_set.py +329 -0
  703. sage/symbolic/all__sagemath_categories.py +1 -0
  704. sage/symbolic/function.cpython-314t-aarch64-linux-musl.so +0 -0
  705. sage/symbolic/function.pxd +29 -0
  706. sage/symbolic/function.pyx +1488 -0
  707. sage/symbolic/symbols.py +56 -0
  708. sage/tests/all__sagemath_categories.py +1 -0
  709. sage/tests/cython.cpython-314t-aarch64-linux-musl.so +0 -0
  710. sage/tests/cython.pyx +37 -0
  711. sage/tests/stl_vector.cpython-314t-aarch64-linux-musl.so +0 -0
  712. sage/tests/stl_vector.pyx +171 -0
  713. sage/typeset/all.py +6 -0
  714. sage/typeset/ascii_art.py +295 -0
  715. sage/typeset/character_art.py +789 -0
  716. sage/typeset/character_art_factory.py +572 -0
  717. sage/typeset/symbols.py +334 -0
  718. sage/typeset/unicode_art.py +183 -0
  719. sage/typeset/unicode_characters.py +101 -0
@@ -0,0 +1,4 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ from sage.libs.gmp.types cimport mpz_t, mpq_t
3
+
4
+ cdef int mpq_rational_reconstruction(mpq_t answer, mpz_t a, mpz_t m) except -1
@@ -0,0 +1,115 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ """
3
+ Rational reconstruction
4
+
5
+ This file is a Cython implementation of rational reconstruction, using
6
+ direct MPIR calls.
7
+
8
+ AUTHORS:
9
+
10
+ - ??? (2006 or before)
11
+
12
+ - Jeroen Demeyer (2014-10-20): move this function from ``gmp.pxi``,
13
+ simplify and fix some bugs, see :issue:`17180`
14
+ """
15
+ # ****************************************************************************
16
+ # Copyright (C) 2006 ???
17
+ # Copyright (C) 2014 Jeroen Demeyer <jdemeyer@cage.ugent.be>
18
+ #
19
+ # This program is free software: you can redistribute it and/or modify
20
+ # it under the terms of the GNU General Public License as published by
21
+ # the Free Software Foundation, either version 2 of the License, or
22
+ # (at your option) any later version.
23
+ # https://www.gnu.org/licenses/
24
+ # ****************************************************************************
25
+
26
+ from cysignals.signals cimport sig_on, sig_off
27
+
28
+ from sage.libs.gmp.mpz cimport *
29
+ from sage.libs.gmp.mpq cimport *
30
+
31
+
32
+ cdef int mpq_rational_reconstruction(mpq_t answer, mpz_t a, mpz_t m) except -1:
33
+ """
34
+ Set ``answer`` to a rational number which is `a` modulo `m` and
35
+ such that the numerator and denominator of the result is bounded by
36
+ sqrt(m/2).
37
+
38
+ If `m` is zero, raise :class`ZeroDivisionError`. If the rational
39
+ reconstruction does not exist, raise :exc:`ValueError`.
40
+
41
+ We assume that ``mpq_init`` has been called on ``answer``.
42
+
43
+ For examples, see the ``rational_reconstruction`` method of
44
+ :class:`Integer`.
45
+
46
+ TESTS::
47
+
48
+ sage: q = -113/355
49
+ sage: for p in range(2*355^2, 3*355^2): # long time
50
+ ....: if is_prime(p):
51
+ ....: assert Mod(q, p).rational_reconstruction() == q
52
+ """
53
+ cdef mpz_t bound
54
+ cdef mpz_t u1
55
+ cdef mpz_t u2
56
+ cdef mpz_t v1
57
+ cdef mpz_t v2
58
+ cdef mpz_t q
59
+
60
+ if mpz_sgn(m) == 0:
61
+ raise ZeroDivisionError("rational reconstruction with zero modulus")
62
+
63
+ sig_on()
64
+ mpz_init(bound)
65
+ mpz_init_set_ui(u1, 0)
66
+ mpz_init_set_ui(v1, 1)
67
+ mpz_init(u2)
68
+ mpz_init(v2)
69
+ mpz_init(q)
70
+
71
+ try:
72
+ mpz_abs(u2, m) # u2 = |m|
73
+ mpz_mod(v2, a, u2) # v2 = a % m
74
+ mpz_fdiv_q_2exp(bound, u2, 1)
75
+ mpz_sqrtrem(bound, q, bound) # bound = floor(sqrt(|m|/2))
76
+
77
+ # Initialization: u1 = 0; v1 = 1
78
+ while True:
79
+ if mpz_cmpabs(v2, bound) <= 0:
80
+ break
81
+ mpz_fdiv_q(q, u2, v2) # q = floor(u2/v2)
82
+ mpz_submul(u1, q, v1) # tmp1 = u1 - q*v1 (store tmp1 in u1)
83
+ mpz_submul(u2, q, v2) # tmp2 = u2 - q*v2 (store tmp2 in u2)
84
+ mpz_swap(u1, v1) # u1 = v1; v1 = tmp1
85
+ mpz_swap(u2, v2) # u2 = v2; v2 = tmp2
86
+
87
+ # The answer is v2/v1, but check the conditions first
88
+ if mpz_cmpabs(v1, bound) <= 0:
89
+ mpz_gcd(q, v1, v2)
90
+ if mpz_cmp_ui(q, 1) == 0:
91
+ # Set answer to v2/v1 with correct sign
92
+ if mpz_sgn(v1) >= 0:
93
+ mpz_set(mpq_numref(answer), v2)
94
+ mpz_set(mpq_denref(answer), v1)
95
+ else:
96
+ mpz_neg(mpq_numref(answer), v2)
97
+ mpz_neg(mpq_denref(answer), v1)
98
+ sig_off()
99
+ return 0
100
+
101
+ sig_off()
102
+ # Earlier versions used to put a string representation of
103
+ # the input here. We don't do this, since some low-level code
104
+ # needs to catch and handle this exception so the string
105
+ # handling is just a waste of time. The actual user-facing
106
+ # methods could catch ValueError and raise a better exception
107
+ # instead.
108
+ raise ValueError("rational reconstruction does not exist")
109
+ finally:
110
+ mpz_clear(bound)
111
+ mpz_clear(u1)
112
+ mpz_clear(v1)
113
+ mpz_clear(u2)
114
+ mpz_clear(v2)
115
+ mpz_clear(q)
sage/arith/srange.pyx ADDED
@@ -0,0 +1,571 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ """
3
+ Ranges and the ``[1,2,..,n]`` notation
4
+
5
+ AUTHORS:
6
+
7
+ - Jeroen Demeyer (2016-02-22): moved here from ``misc.py`` and cleaned
8
+ up.
9
+ """
10
+
11
+ # ****************************************************************************
12
+ # Copyright (C) 2006 William Stein <wstein@gmail.com>
13
+ # Copyright (C) 2016 Jeroen Demeyer <jdemeyer@cage.ugent.be>
14
+ #
15
+ # This program is free software: you can redistribute it and/or modify
16
+ # it under the terms of the GNU General Public License as published by
17
+ # the Free Software Foundation, either version 2 of the License, or
18
+ # (at your option) any later version.
19
+ # https://www.gnu.org/licenses/
20
+ # ****************************************************************************
21
+
22
+
23
+ from libc.math cimport ceil
24
+ from cysignals.signals cimport sig_check
25
+
26
+ from sage.rings.integer cimport Integer
27
+ from sage.structure.element cimport parent
28
+ from sage.structure.sequence import Sequence
29
+
30
+
31
+ def xsrange(start, end=None, step=1, universe=None, *, coerce=True, bint include_endpoint=False, endpoint_tolerance=1e-5):
32
+ """
33
+ Return an iterator over numbers
34
+ ``start, start+step, ..., start+k*step``,
35
+ where ``start+k*step < end`` and ``start+(k+1)*step >= end``.
36
+
37
+ This provides one way to iterate over Sage integers as opposed to
38
+ Python int's. It also allows you to specify step sizes for such
39
+ an iteration.
40
+
41
+ INPUT:
42
+
43
+ - ``start`` -- number (default: 0)
44
+
45
+ - ``end`` -- number
46
+
47
+ - ``step`` -- number (default: 1)
48
+
49
+ - ``universe`` -- parent or type where all the elements should live
50
+ (default: deduce from inputs)
51
+
52
+ - ``coerce`` -- convert ``start``, ``end`` and ``step`` to the same
53
+ universe (either the universe given in ``universe`` or the
54
+ automatically detected universe)
55
+
56
+ - ``include_endpoint`` -- whether or not to include the endpoint
57
+ (default: ``False``). This is only relevant if ``end`` is actually of
58
+ the form ``start + k*step`` for some integer `k`.
59
+
60
+ ` ``endpoint_tolerance`` -- used to determine whether or not the
61
+ endpoint is hit for inexact rings (default: 1e-5)
62
+
63
+ OUTPUT: iterator
64
+
65
+ Unlike :func:`range`, ``start`` and ``end`` can be any type of
66
+ numbers, and the resulting iterator involves numbers of that type.
67
+
68
+ .. warning::
69
+
70
+ You need to be careful when using this function over inexact
71
+ rings: the elements are computed via repeated addition rather
72
+ than multiplication, which may produce slightly different
73
+ results. For example::
74
+
75
+ sage: sum([1.1] * 10) == 1.1 * 10
76
+ False
77
+
78
+ Also, the question of whether the endpoint is hit exactly for
79
+ a given ``start + k*step`` is fuzzy for an inexact ring. If
80
+ ``start + k*step = end`` for some `k` within
81
+ ``endpoint_tolerance`` of being integral, it is considered an
82
+ exact hit, thus avoiding spurious values falling just below the
83
+ endpoint.
84
+
85
+ EXAMPLES::
86
+
87
+ sage: xsrange(10)
88
+ <...generator object at 0x...>
89
+ sage: for i in xsrange(1,5):
90
+ ....: print(i)
91
+ 1
92
+ 2
93
+ 3
94
+ 4
95
+
96
+ See :func:`srange` for more examples.
97
+
98
+ TESTS:
99
+
100
+ Ranges can be very large, see :issue:`20094`::
101
+
102
+ sage: it = xsrange(10^30, 10^100)
103
+ sage: for i in range(5):
104
+ ....: print(next(it))
105
+ 1000000000000000000000000000000
106
+ 1000000000000000000000000000001
107
+ 1000000000000000000000000000002
108
+ 1000000000000000000000000000003
109
+ 1000000000000000000000000000004
110
+ """
111
+ if end is None:
112
+ end = start
113
+ start = 0
114
+
115
+ if coerce:
116
+ if universe is None:
117
+ universe = Sequence([start, end, step]).universe()
118
+ start, end, step = universe(start), universe(end), universe(step)
119
+
120
+ if not step:
121
+ raise ValueError("step argument must not be zero")
122
+
123
+ count = (end - start) / step
124
+
125
+ # If count is exact, set endpoint_tolerance to zero
126
+ cdef bint count_is_exact
127
+ try:
128
+ count_is_exact = parent(count).is_exact()
129
+ except Exception:
130
+ count_is_exact = False
131
+
132
+ # Round count up (with tolerance if applicable) and check if
133
+ # endpoint is of the form start + k*step
134
+ if count_is_exact:
135
+ try:
136
+ icount = count.ceil()
137
+ except AttributeError:
138
+ try:
139
+ # Double minus to divide with ceil
140
+ icount = -((start - end) // step)
141
+ except TypeError:
142
+ icount = ceil(count)
143
+ if icount != count:
144
+ include_endpoint = False
145
+ else:
146
+ fcount = count - endpoint_tolerance
147
+ try:
148
+ icount = fcount.ceil()
149
+ except AttributeError:
150
+ icount = ceil(fcount)
151
+ if abs(count - icount) > endpoint_tolerance:
152
+ include_endpoint = False
153
+
154
+ icount = Integer(icount)
155
+
156
+ if icount < 0:
157
+ return
158
+
159
+ cur = start
160
+ # yield in chunks of 1024
161
+ cdef long k
162
+ while icount > 1024:
163
+ for k in range(1024):
164
+ yield cur
165
+ cur += step
166
+ icount -= 1024
167
+ sig_check()
168
+
169
+ for k in range(icount):
170
+ yield cur
171
+ cur += step
172
+ if include_endpoint:
173
+ yield end
174
+
175
+
176
+ def srange(*args, **kwds):
177
+ r"""
178
+ Return a list of numbers
179
+ ``start, start+step, ..., start+k*step``,
180
+ where ``start+k*step < end`` and ``start+(k+1)*step >= end``.
181
+
182
+ This provides one way to iterate over Sage integers as opposed to
183
+ Python int's. It also allows you to specify step sizes for such
184
+ an iteration.
185
+
186
+ INPUT:
187
+
188
+ - ``start`` -- number (default: 0)
189
+
190
+ - ``end`` -- number
191
+
192
+ - ``step`` -- number (default: 1)
193
+
194
+ - ``universe -- parent or type where all the elements should live
195
+ (default: deduce from inputs). This is only used if ``coerce`` is
196
+ true.
197
+
198
+ - ``coerce`` -- convert ``start``, ``end`` and ``step`` to the same
199
+ universe (either the universe given in ``universe`` or the
200
+ automatically detected universe)
201
+
202
+ - ``include_endpoint`` -- whether or not to include the endpoint
203
+ (default: ``False``). This is only relevant if ``end`` is actually of
204
+ the form ``start + k*step`` for some integer `k`.
205
+
206
+ ` ``endpoint_tolerance`` -- used to determine whether or not the
207
+ endpoint is hit for inexact rings (default: ``1e-5``)
208
+
209
+ OUTPUT: list
210
+
211
+ .. NOTE::
212
+
213
+ This function is called ``srange`` to distinguish
214
+ it from the built-in Python ``range`` command. The s
215
+ at the beginning of the name stands for "Sage".
216
+
217
+ .. SEEALSO::
218
+
219
+ :func:`xsrange` -- iterator which is used to implement :func:`srange`.
220
+
221
+ EXAMPLES::
222
+
223
+ sage: v = srange(5); v
224
+ [0, 1, 2, 3, 4]
225
+ sage: type(v[2])
226
+ <class 'sage.rings.integer.Integer'>
227
+ sage: srange(1, 10)
228
+ [1, 2, 3, 4, 5, 6, 7, 8, 9]
229
+ sage: srange(10, 1, -1)
230
+ [10, 9, 8, 7, 6, 5, 4, 3, 2]
231
+ sage: srange(10,1,-1, include_endpoint=True)
232
+ [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
233
+ sage: srange(1, 10, universe=RDF)
234
+ [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
235
+
236
+ sage: srange(1, 10, 1/2)
237
+ [1, 3/2, 2, 5/2, 3, 7/2, 4, 9/2, 5, 11/2, 6, 13/2, 7, 15/2, 8, 17/2, 9, 19/2]
238
+
239
+ sage: # needs sage.rings.real_mpfr
240
+ sage: srange(1, 5, 0.5)
241
+ [1.00000000000000, 1.50000000000000, 2.00000000000000, 2.50000000000000,
242
+ 3.00000000000000, 3.50000000000000, 4.00000000000000, 4.50000000000000]
243
+ sage: srange(0, 1, 0.4)
244
+ [0.000000000000000, 0.400000000000000, 0.800000000000000]
245
+ sage: srange(1.0, 5.0, include_endpoint=True)
246
+ [1.00000000000000, 2.00000000000000, 3.00000000000000, 4.00000000000000,
247
+ 5.00000000000000]
248
+ sage: srange(1.0, 1.1)
249
+ [1.00000000000000]
250
+ sage: srange(1.0, 1.0)
251
+ []
252
+
253
+ sage: V = VectorSpace(QQ, 2) # needs sage.modules
254
+ sage: srange(V([0,0]), V([5,5]), step=V([2,2])) # needs sage.modules
255
+ [(0, 0), (2, 2), (4, 4)]
256
+
257
+ Including the endpoint::
258
+
259
+ sage: srange(0, 10, step=2, include_endpoint=True)
260
+ [0, 2, 4, 6, 8, 10]
261
+ sage: srange(0, 10, step=3, include_endpoint=True)
262
+ [0, 3, 6, 9]
263
+
264
+ Try some inexact rings::
265
+
266
+ sage: srange(0.5, 1.1, 0.1, universe=RDF, include_endpoint=False)
267
+ [0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999, 0.9999999999999999]
268
+ sage: srange(0.5, 1, 0.1, universe=RDF, include_endpoint=False)
269
+ [0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999]
270
+ sage: srange(0.5, 0.9, 0.1, universe=RDF, include_endpoint=False)
271
+ [0.5, 0.6, 0.7, 0.7999999999999999]
272
+ sage: srange(0, 1.1, 0.1, universe=RDF, include_endpoint=True)
273
+ [0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7,
274
+ 0.7999999999999999, 0.8999999999999999, 0.9999999999999999, 1.1]
275
+ sage: srange(0, 0.2, 0.1, universe=RDF, include_endpoint=True)
276
+ [0.0, 0.1, 0.2]
277
+ sage: srange(0, 0.3, 0.1, universe=RDF, include_endpoint=True)
278
+ [0.0, 0.1, 0.2, 0.3]
279
+
280
+ More examples::
281
+
282
+ sage: Q = RationalField()
283
+ sage: srange(1, 10, Q('1/2'))
284
+ [1, 3/2, 2, 5/2, 3, 7/2, 4, 9/2, 5, 11/2, 6, 13/2, 7, 15/2, 8, 17/2, 9, 19/2]
285
+ sage: srange(1, 5, 0.5) # needs sage.rings.real_mpfr
286
+ [1.00000000000000, 1.50000000000000, 2.00000000000000, 2.50000000000000,
287
+ 3.00000000000000, 3.50000000000000, 4.00000000000000, 4.50000000000000]
288
+ sage: srange(0, 1, 0.4) # needs sage.rings.real_mpfr
289
+ [0.000000000000000, 0.400000000000000, 0.800000000000000]
290
+
291
+ Negative steps are also allowed::
292
+
293
+ sage: srange(4, 1, -1)
294
+ [4, 3, 2]
295
+ sage: srange(4, 1, -1/2)
296
+ [4, 7/2, 3, 5/2, 2, 3/2]
297
+
298
+ TESTS:
299
+
300
+ These are doctests from :issue:`6409`::
301
+
302
+ sage: srange(1,QQ(0),include_endpoint=True)
303
+ []
304
+ sage: srange(1,QQ(0),-1,include_endpoint=True)
305
+ [1, 0]
306
+
307
+ Test :issue:`11753`::
308
+
309
+ sage: srange(1,1,0)
310
+ Traceback (most recent call last):
311
+ ...
312
+ ValueError: step argument must not be zero
313
+
314
+ No problems with large lists::
315
+
316
+ sage: srange(10^5) == list(range(10^5))
317
+ True
318
+ """
319
+ return [x for x in xsrange(*args, **kwds)]
320
+
321
+
322
+ def ellipsis_iter(*args, step=None):
323
+ """
324
+ Same as ellipsis_range, but as an iterator (and may end with an
325
+ Ellipsis).
326
+
327
+ See also ellipsis_range.
328
+
329
+ Use (1,2,...) notation.
330
+
331
+ EXAMPLES::
332
+
333
+ sage: A = ellipsis_iter(1,2,Ellipsis)
334
+ sage: [next(A) for _ in range(10)]
335
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
336
+ sage: next(A)
337
+ 11
338
+ sage: A = ellipsis_iter(1,3,5,Ellipsis)
339
+ sage: [next(A) for _ in range(10)]
340
+ [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
341
+ sage: A = ellipsis_iter(1,2,Ellipsis,5,10,Ellipsis)
342
+ sage: [next(A) for _ in range(10)]
343
+ [1, 2, 3, 4, 5, 10, 11, 12, 13, 14]
344
+
345
+ TESTS:
346
+
347
+ These were carefully chosen tests, only to be changed if the
348
+ semantics of ellipsis ranges change. In other words, if they don't
349
+ pass, it's probably a bug in the implementation, not in the
350
+ doctest.
351
+
352
+ ::
353
+
354
+ sage: list(1,..,10)
355
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
356
+ sage: list(1,3,..,10)
357
+ [1, 3, 5, 7, 9]
358
+ sage: list(1,..,10,..,20)
359
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
360
+ sage: list(1,3,..,10,..,20)
361
+ [1, 3, 5, 7, 9, 10, 12, 14, 16, 18, 20]
362
+ sage: list(1,3,..,10,10,..,20)
363
+ [1, 3, 5, 7, 9, 10, 12, 14, 16, 18, 20]
364
+ sage: list(0,2,..,10,10,..,20,20,..,25)
365
+ [0, 2, 4, 6, 8, 10, 10, 12, 14, 16, 18, 20, 20, 22, 24]
366
+ sage: list(10,..,1)
367
+ []
368
+ sage: list(10,11,..,1)
369
+ []
370
+ sage: list(10,9,..,1)
371
+ [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
372
+ sage: list(100,..,10,..,20)
373
+ [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
374
+ sage: list(0,..,10,..,-20)
375
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
376
+ sage: list(100,..,10,..,-20)
377
+ []
378
+ sage: list(100,102,..,10,..,20)
379
+ [10, 12, 14, 16, 18, 20]
380
+ """
381
+ step_magic = 0
382
+ if step is None:
383
+ step = 1
384
+ if Ellipsis in args:
385
+ i = list(args).index(Ellipsis)
386
+ if i > 1:
387
+ step = args[i-1]-args[i-2]
388
+ step_magic = i
389
+
390
+ S = Sequence([a for a in args if a is not Ellipsis] + [step])
391
+ universe = S.universe()
392
+ args = [Ellipsis if a is Ellipsis else universe(a) for a in args]
393
+ step = universe(step)
394
+
395
+ # this is a bit more complicated because we can't pop what's already been yielded
396
+ next_ = None
397
+ skip = False
398
+ last_end = None
399
+ # first we handle step_magic (which may require two pops if the range is empty)
400
+ if step_magic:
401
+ for i in range(step_magic-2):
402
+ yield args[i]
403
+ if len(args) > step_magic+1:
404
+ i = step_magic
405
+ more = xsrange(args[i-2], args[i+1], step, coerce=False, include_endpoint=True)
406
+ for a in more:
407
+ last_end = a
408
+ yield a
409
+ skip = True
410
+ next_ = None
411
+ step_magic += 1
412
+ else:
413
+ yield args[step_magic-2]
414
+
415
+ # now onto the rest
416
+ for i in range(step_magic, len(args)):
417
+ if skip:
418
+ skip = False
419
+ elif args[i] is Ellipsis:
420
+ if i == len(args)-1:
421
+ # continue forever
422
+ cur = args[i-1]
423
+ if last_end != cur:
424
+ yield cur
425
+ while True:
426
+ cur += step
427
+ yield cur
428
+ start, end = args[i-1], args[i+1]
429
+ if i < 2 or args[i-2] is not Ellipsis:
430
+ next_ = None
431
+ more = xsrange(start, end, step, coerce=False, include_endpoint=True)
432
+ try:
433
+ first = next(more)
434
+ if last_end != first:
435
+ yield first
436
+ for a in more:
437
+ last_end = a
438
+ yield a
439
+ except StopIteration:
440
+ last_end = None
441
+ skip = True
442
+ next_ = None
443
+ else:
444
+ if next_ is not None:
445
+ yield next_
446
+ next_ = args[i]
447
+ last_end = None
448
+
449
+
450
+ def ellipsis_range(*args, step=None):
451
+ """
452
+ Return arithmetic sequence determined by the numeric arguments and
453
+ ellipsis. Best illustrated by examples.
454
+
455
+ Use [1,2,..,n] notation.
456
+
457
+ EXAMPLES::
458
+
459
+ sage: ellipsis_range(1,Ellipsis,11,100)
460
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 100]
461
+ sage: ellipsis_range(0,2,Ellipsis,10,Ellipsis,20)
462
+ [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
463
+ sage: ellipsis_range(0,2,Ellipsis,11,Ellipsis,20)
464
+ [0, 2, 4, 6, 8, 10, 11, 13, 15, 17, 19]
465
+ sage: ellipsis_range(0,2,Ellipsis,11,Ellipsis,20, step=3)
466
+ [0, 2, 5, 8, 11, 14, 17, 20]
467
+ sage: ellipsis_range(10,Ellipsis,0)
468
+ []
469
+
470
+ TESTS:
471
+
472
+ These were carefully chosen tests, only to be changed if the
473
+ semantics of ellipsis ranges change. In other words, if they don't
474
+ pass it's probably a bug in the implementation, not in the
475
+ doctest.
476
+
477
+ Note 10 only appears once (though it is in both ranges).
478
+
479
+ ::
480
+
481
+ sage: ellipsis_range(0,Ellipsis,10,Ellipsis,20,step=2)
482
+ [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
483
+
484
+ Sometimes one or more ranges is empty.
485
+
486
+ ::
487
+
488
+ sage: ellipsis_range(100,Ellipsis,10,Ellipsis,20,step=2)
489
+ [10, 12, 14, 16, 18, 20]
490
+ sage: ellipsis_range(0,Ellipsis,10,Ellipsis,-20,step=2)
491
+ [0, 2, 4, 6, 8, 10]
492
+ sage: ellipsis_range(100,Ellipsis,10,Ellipsis,-20,step=2)
493
+ []
494
+
495
+ We always start on the leftmost point of the range.
496
+
497
+ ::
498
+
499
+ sage: ellipsis_range(0,Ellipsis,10,Ellipsis,20,step=3)
500
+ [0, 3, 6, 9, 10, 13, 16, 19]
501
+ sage: ellipsis_range(100,Ellipsis,10,Ellipsis,20,step=3)
502
+ [10, 13, 16, 19]
503
+ sage: ellipsis_range(0,Ellipsis,10,Ellipsis,-20,step=3)
504
+ [0, 3, 6, 9]
505
+ sage: ellipsis_range(100,Ellipsis,10,Ellipsis,-20,step=3)
506
+ []
507
+ sage: ellipsis_range(0,1,Ellipsis,-10)
508
+ []
509
+ sage: ellipsis_range(0,1,Ellipsis,-10,step=1)
510
+ [0]
511
+ sage: ellipsis_range(100,0,1,Ellipsis,-10)
512
+ [100]
513
+
514
+ Note the duplicate 5 in the output.
515
+
516
+ ::
517
+
518
+ sage: ellipsis_range(0,Ellipsis,5,5,Ellipsis,10)
519
+ [0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10]
520
+
521
+ Examples in which the step determines the parent of the elements::
522
+
523
+ sage: [1..3, step=0.5] # needs sage.rings.real_mpfr
524
+ [1.00000000000000, 1.50000000000000, 2.00000000000000, 2.50000000000000, 3.00000000000000]
525
+ sage: v = [1..5, step=1/1]; v
526
+ [1, 2, 3, 4, 5]
527
+ sage: parent(v[2])
528
+ Rational Field
529
+ """
530
+ step_magic = 0
531
+ if step is None:
532
+ step = 1
533
+ if Ellipsis in args:
534
+ i = args.index(Ellipsis)
535
+ if i > 1:
536
+ step = args[i-1]-args[i-2]
537
+ step_magic = i
538
+
539
+ S = Sequence([a for a in args if a is not Ellipsis] + [step])
540
+ universe = S.universe()
541
+ args = [Ellipsis if a is Ellipsis else universe(a) for a in args]
542
+ step = universe(step)
543
+
544
+ skip = False
545
+ last_end = None
546
+ L = []
547
+ for i in range(len(args)):
548
+ if skip:
549
+ skip = False
550
+ elif args[i] is Ellipsis:
551
+ if len(args) == i+1:
552
+ raise IndexError("ellipsis range must have an endpoint, use (n..) for infinite sequence")
553
+ start, end = args[i-1], args[i+1]
554
+ if i < 2 or args[i-2] is not Ellipsis:
555
+ L.pop()
556
+ if i == step_magic:
557
+ L.pop()
558
+ start = args[i-2]
559
+ more = srange(start, end, step, coerce=False, include_endpoint=True)
560
+ if more:
561
+ if last_end == more[0]:
562
+ L.pop()
563
+ last_end = more[-1]
564
+ L += more
565
+ else:
566
+ last_end = None
567
+ skip = True
568
+ else:
569
+ L.append(args[i])
570
+ last_end = None
571
+ return L
@@ -0,0 +1,2 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ from sage.calculus.functional import diff, derivative, expand, simplify, taylor