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,690 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ """
3
+ Number-theoretic functions
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2005 William Stein <wstein@gmail.com>
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ #
10
+ # This code is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # General Public License for more details.
14
+ #
15
+ # The full text of the GPL is available at:
16
+ #
17
+ # https://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+ import math
20
+
21
+ from sage.misc.lazy_import import lazy_import
22
+ from sage.rings.integer_ring import ZZ
23
+ from sage.symbolic.function import GinacFunction, BuiltinFunction
24
+
25
+ lazy_import('sage.functions.gamma', 'psi')
26
+ lazy_import('sage.functions.other', 'factorial')
27
+
28
+ lazy_import('sage.combinat.combinat', 'bernoulli_polynomial')
29
+ lazy_import('sage.rings.cc', 'CC')
30
+ lazy_import('sage.rings.complex_mpfr', ['ComplexField', 'ComplexNumber'])
31
+ lazy_import('sage.rings.polynomial.polynomial_real_mpfr_dense', 'PolynomialRealDense')
32
+ lazy_import('sage.rings.real_double', 'RDF')
33
+ lazy_import('sage.rings.real_mpfr', ['RR', 'RealField', 'RealNumber'])
34
+
35
+ lazy_import('sage.libs.mpmath.utils', 'call', as_='_mpmath_utils_call')
36
+ lazy_import('mpmath', 'zeta', as_='_mpmath_zeta')
37
+
38
+
39
+ class Function_zeta(GinacFunction):
40
+ def __init__(self):
41
+ r"""
42
+ Riemann zeta function at s with s a real or complex number.
43
+
44
+ INPUT:
45
+
46
+ - ``s`` -- real or complex number
47
+
48
+ If s is a real number, the computation is done using the MPFR
49
+ library. When the input is not real, the computation is done using
50
+ the PARI C library.
51
+
52
+ EXAMPLES::
53
+
54
+ sage: RR = RealField(200) # needs sage.rings.real_mpfr
55
+ sage: zeta(RR(2)) # needs sage.rings.real_mpfr
56
+ 1.6449340668482264364724151666460251892189499012067984377356
57
+
58
+ sage: # needs sage.symbolic
59
+ sage: zeta(x)
60
+ zeta(x)
61
+ sage: zeta(2)
62
+ 1/6*pi^2
63
+ sage: zeta(2.)
64
+ 1.64493406684823
65
+ sage: zeta(I)
66
+ zeta(I)
67
+ sage: zeta(I).n()
68
+ 0.00330022368532410 - 0.418155449141322*I
69
+ sage: zeta(sqrt(2))
70
+ zeta(sqrt(2))
71
+ sage: zeta(sqrt(2)).n() # rel tol 1e-10
72
+ 3.02073767948603
73
+
74
+ It is possible to use the ``hold`` argument to prevent
75
+ automatic evaluation::
76
+
77
+ sage: zeta(2, hold=True) # needs sage.symbolic
78
+ zeta(2)
79
+
80
+ To then evaluate again, we currently must use Maxima via
81
+ :meth:`sage.symbolic.expression.Expression.simplify`::
82
+
83
+ sage: a = zeta(2, hold=True); a.simplify() # needs sage.symbolic
84
+ 1/6*pi^2
85
+
86
+ The Laurent expansion of `\zeta(s)` at `s=1` is
87
+ implemented by means of the
88
+ :wikipedia:`Stieltjes constants <Stieltjes_constants>`::
89
+
90
+ sage: s = SR('s') # needs sage.symbolic
91
+ sage: zeta(s).series(s==1, 2) # needs sage.symbolic
92
+ 1*(s - 1)^(-1) + euler_gamma + (-stieltjes(1))*(s - 1) + Order((s - 1)^2)
93
+
94
+ Generally, the Stieltjes constants occur in the Laurent
95
+ expansion of `\zeta`-type singularities::
96
+
97
+ sage: zeta(2*s/(s+1)).series(s==1, 2) # needs sage.symbolic
98
+ 2*(s - 1)^(-1) + (euler_gamma + 1) + (-1/2*stieltjes(1))*(s - 1) + Order((s - 1)^2)
99
+
100
+
101
+ TESTS::
102
+
103
+ sage: # needs sage.symbolic
104
+ sage: latex(zeta(x))
105
+ \zeta(x)
106
+ sage: a = loads(dumps(zeta(x)))
107
+ sage: a.operator() == zeta
108
+ True
109
+ sage: zeta(x)._sympy_() # needs sympy
110
+ zeta(x)
111
+
112
+ sage: zeta(1) # needs sage.symbolic
113
+ Infinity
114
+ sage: zeta(x).subs(x=1) # needs sage.symbolic
115
+ Infinity
116
+
117
+ Check that :issue:`19799` is resolved::
118
+
119
+ sage: zeta(pi) # needs sage.symbolic
120
+ zeta(pi)
121
+ sage: zeta(pi).n() # rel tol 1e-10 # needs sage.symbolic
122
+ 1.17624173838258
123
+
124
+ Check that :issue:`20082` is fixed::
125
+
126
+ sage: zeta(x).series(x==pi, 2) # needs sage.symbolic
127
+ (zeta(pi)) + (zetaderiv(1, pi))*(-pi + x) + Order((pi - x)^2)
128
+ sage: (zeta(x) * 1/(1 - exp(-x))).residue(x==2*pi*I) # needs sage.symbolic
129
+ zeta(2*I*pi)
130
+
131
+ Check that :issue:`20102` is fixed::
132
+
133
+ sage: (zeta(x)^2).series(x==1, 1) # needs sage.symbolic
134
+ 1*(x - 1)^(-2) + (2*euler_gamma)*(x - 1)^(-1)
135
+ + (euler_gamma^2 - 2*stieltjes(1)) + Order(x - 1)
136
+ sage: (zeta(x)^4).residue(x==1) # needs sage.symbolic
137
+ 4/3*euler_gamma*(3*euler_gamma^2 - 2*stieltjes(1))
138
+ - 28/3*euler_gamma*stieltjes(1) + 2*stieltjes(2)
139
+
140
+ Check that the right infinities are returned (:issue:`19439`)::
141
+
142
+ sage: zeta(1.0) # needs sage.symbolic
143
+ +infinity
144
+ sage: zeta(SR(1.0)) # needs sage.symbolic
145
+ Infinity
146
+
147
+ Fixed conversion::
148
+
149
+ sage: zeta(3)._maple_init_() # needs sage.symbolic
150
+ 'Zeta(3)'
151
+ sage: zeta(3)._maple_().sage() # optional - maple # needs sage.symbolic
152
+ zeta(3)
153
+ """
154
+ GinacFunction.__init__(self, 'zeta',
155
+ conversions={'giac': 'Zeta',
156
+ 'maple': 'Zeta',
157
+ 'sympy': 'zeta',
158
+ 'mathematica': 'Zeta'})
159
+
160
+
161
+ zeta = Function_zeta()
162
+
163
+
164
+ class Function_stieltjes(GinacFunction):
165
+ def __init__(self):
166
+ r"""
167
+ Stieltjes constant of index ``n``.
168
+
169
+ ``stieltjes(0)`` is identical to the Euler-Mascheroni constant
170
+ (:class:`sage.symbolic.constants.EulerGamma`). The Stieltjes
171
+ constants are used in the series expansions of `\zeta(s)`.
172
+
173
+ INPUT:
174
+
175
+ - ``n`` -- nonnegative integer
176
+
177
+ EXAMPLES::
178
+
179
+ sage: # needs sage.symbolic
180
+ sage: _ = var('n')
181
+ sage: stieltjes(n)
182
+ stieltjes(n)
183
+ sage: stieltjes(0)
184
+ euler_gamma
185
+ sage: stieltjes(2)
186
+ stieltjes(2)
187
+ sage: stieltjes(int(2))
188
+ stieltjes(2)
189
+ sage: stieltjes(2).n(100)
190
+ -0.0096903631928723184845303860352
191
+ sage: RR = RealField(200) # needs sage.rings.real_mpfr
192
+ sage: stieltjes(RR(2)) # needs sage.rings.real_mpfr
193
+ -0.0096903631928723184845303860352125293590658061013407498807014
194
+
195
+ It is possible to use the ``hold`` argument to prevent
196
+ automatic evaluation::
197
+
198
+ sage: stieltjes(0, hold=True) # needs sage.symbolic
199
+ stieltjes(0)
200
+
201
+ sage: # needs sage.symbolic
202
+ sage: latex(stieltjes(n))
203
+ \gamma_{n}
204
+ sage: a = loads(dumps(stieltjes(n)))
205
+ sage: a.operator() == stieltjes
206
+ True
207
+ sage: stieltjes(x)._sympy_() # needs sympy
208
+ stieltjes(x)
209
+
210
+ sage: stieltjes(x).subs(x==0) # needs sage.symbolic
211
+ euler_gamma
212
+ """
213
+ GinacFunction.__init__(self, "stieltjes", nargs=1,
214
+ conversions=dict(mathematica='StieltjesGamma',
215
+ sympy='stieltjes'),
216
+ latex_name=r'\gamma')
217
+
218
+
219
+ stieltjes = Function_stieltjes()
220
+
221
+
222
+ class Function_HurwitzZeta(BuiltinFunction):
223
+ def __init__(self):
224
+ r"""
225
+ TESTS::
226
+
227
+ sage: latex(hurwitz_zeta(x, 2)) # needs sage.symbolic
228
+ \zeta\left(x, 2\right)
229
+ sage: hurwitz_zeta(x, 2)._sympy_() # needs sympy sage.symbolic
230
+ zeta(x, 2)
231
+ """
232
+ BuiltinFunction.__init__(self, 'hurwitz_zeta', nargs=2,
233
+ conversions=dict(mathematica='HurwitzZeta',
234
+ sympy='zeta'),
235
+ latex_name=r'\zeta')
236
+
237
+ def _eval_(self, s, x):
238
+ r"""
239
+ TESTS::
240
+
241
+ sage: # needs sage.symbolic
242
+ sage: hurwitz_zeta(x, 1)
243
+ zeta(x)
244
+ sage: hurwitz_zeta(4, 3)
245
+ 1/90*pi^4 - 17/16
246
+ sage: hurwitz_zeta(-4, x)
247
+ -1/5*x^5 + 1/2*x^4 - 1/3*x^3 + 1/30*x
248
+ sage: hurwitz_zeta(0, x)
249
+ -x + 1/2
250
+
251
+ sage: hurwitz_zeta(3, 0.5) # needs mpmath
252
+ 8.41439832211716
253
+ """
254
+ if x == 1:
255
+ return zeta(s)
256
+ if s in ZZ and s > 1:
257
+ return ((-1) ** s) * psi(s - 1, x) / factorial(s - 1)
258
+ elif s in ZZ and s <= 0:
259
+ return -bernoulli_polynomial(x, -s + 1) / (-s + 1)
260
+ else:
261
+ return
262
+
263
+ def _evalf_(self, s, x, parent=None, algorithm=None):
264
+ r"""
265
+ TESTS::
266
+
267
+ sage: hurwitz_zeta(11/10, 1/2).n() # needs mpmath sage.symbolic
268
+ 12.1038134956837
269
+ sage: hurwitz_zeta(11/10, 1/2).n(100) # needs mpmath sage.symbolic
270
+ 12.103813495683755105709077413
271
+ sage: hurwitz_zeta(11/10, 1 + 1j).n() # needs mpmath sage.rings.real_mpfr
272
+ 9.85014164287853 - 1.06139499403981*I
273
+ """
274
+ return _mpmath_utils_call(_mpmath_zeta, s, x, parent=parent)
275
+
276
+ def _derivative_(self, s, x, diff_param):
277
+ r"""
278
+ TESTS::
279
+
280
+ sage: y = var('y') # needs sage.symbolic
281
+ sage: diff(hurwitz_zeta(x, y), y) # needs sage.symbolic
282
+ -x*hurwitz_zeta(x + 1, y)
283
+ """
284
+ if diff_param == 1:
285
+ return -s * hurwitz_zeta(s + 1, x)
286
+ else:
287
+ raise NotImplementedError('derivative with respect to first '
288
+ 'argument')
289
+
290
+
291
+ hurwitz_zeta_func = Function_HurwitzZeta()
292
+
293
+
294
+ def hurwitz_zeta(s, x, **kwargs):
295
+ r"""
296
+ The Hurwitz zeta function `\zeta(s, x)`, where `s` and `x` are complex.
297
+
298
+ The Hurwitz zeta function is one of the many zeta functions. It
299
+ is defined as
300
+
301
+ .. MATH::
302
+
303
+ \zeta(s, x) = \sum_{k=0}^{\infty} (k + x)^{-s}.
304
+
305
+
306
+ When `x = 1`, this coincides with Riemann's zeta function.
307
+ The Dirichlet `L`-functions may be expressed as linear combinations
308
+ of Hurwitz zeta functions.
309
+
310
+ EXAMPLES:
311
+
312
+ Symbolic evaluations::
313
+
314
+ sage: # needs sage.symbolic
315
+ sage: hurwitz_zeta(x, 1)
316
+ zeta(x)
317
+ sage: hurwitz_zeta(4, 3)
318
+ 1/90*pi^4 - 17/16
319
+ sage: hurwitz_zeta(-4, x)
320
+ -1/5*x^5 + 1/2*x^4 - 1/3*x^3 + 1/30*x
321
+ sage: hurwitz_zeta(7, -1/2)
322
+ 127*zeta(7) - 128
323
+ sage: hurwitz_zeta(-3, 1)
324
+ 1/120
325
+
326
+ Numerical evaluations::
327
+
328
+ sage: hurwitz_zeta(3, 1/2).n() # needs mpmath
329
+ 8.41439832211716
330
+ sage: hurwitz_zeta(11/10, 1/2).n() # needs sage.symbolic
331
+ 12.1038134956837
332
+ sage: hurwitz_zeta(3, x).series(x, 60).subs(x=0.5).n() # needs sage.symbolic
333
+ 8.41439832211716
334
+ sage: hurwitz_zeta(3, 0.5) # needs mpmath
335
+ 8.41439832211716
336
+
337
+ REFERENCES:
338
+
339
+ - :wikipedia:`Hurwitz_zeta_function`
340
+ """
341
+ return hurwitz_zeta_func(s, x, **kwargs)
342
+
343
+
344
+ class Function_zetaderiv(GinacFunction):
345
+ def __init__(self):
346
+ r"""
347
+ Derivatives of the Riemann zeta function.
348
+
349
+ EXAMPLES::
350
+
351
+ sage: # needs sage.symbolic
352
+ sage: zetaderiv(1, x)
353
+ zetaderiv(1, x)
354
+ sage: zetaderiv(1, x).diff(x)
355
+ zetaderiv(2, x)
356
+ sage: var('n')
357
+ n
358
+ sage: zetaderiv(n, x)
359
+ zetaderiv(n, x)
360
+ sage: zetaderiv(1, 4).n()
361
+ -0.0689112658961254
362
+ sage: import mpmath; mpmath.diff(lambda x: mpmath.zeta(x), 4) # needs mpmath
363
+ mpf('-0.068911265896125382')
364
+
365
+ TESTS::
366
+
367
+ sage: latex(zetaderiv(2, x)) # needs sage.symbolic
368
+ \zeta^\prime\left(2, x\right)
369
+ sage: a = loads(dumps(zetaderiv(2, x))) # needs sage.symbolic
370
+ sage: a.operator() == zetaderiv # needs sage.symbolic
371
+ True
372
+
373
+ sage: b = RBF(3/2, 1e-10) # needs sage.libs.flint
374
+ sage: zetaderiv(1, b, hold=True) # needs sage.libs.flint sage.symbolic
375
+ zetaderiv(1, [1.500000000 +/- 1.01e-10])
376
+ sage: zetaderiv(b, 1) # needs sage.libs.flint sage.symbolic
377
+ zetaderiv([1.500000000 +/- 1.01e-10], 1)
378
+ """
379
+ GinacFunction.__init__(self, "zetaderiv", nargs=2,
380
+ conversions=dict(maple='Zeta'))
381
+
382
+ def _evalf_(self, n, x, parent=None, algorithm=None):
383
+ r"""
384
+ TESTS::
385
+
386
+ sage: zetaderiv(0, 3, hold=True).n() == zeta(3).n() # needs sage.symbolic
387
+ True
388
+ sage: zetaderiv(2, 3 + I).n() # needs sage.symbolic
389
+ 0.0213814086193841 - 0.174938812330834*I
390
+ """
391
+ return _mpmath_utils_call(_mpmath_zeta, x, 1, n, parent=parent)
392
+
393
+ def _method_arguments(self, k, x):
394
+ r"""
395
+ TESTS::
396
+
397
+ sage: zetaderiv(1, RBF(3/2, 0.0001)) # needs sage.libs.flint
398
+ [-3.93 +/- ...e-3]
399
+ """
400
+ return [x, k]
401
+
402
+
403
+ zetaderiv = Function_zetaderiv()
404
+
405
+
406
+ def zeta_symmetric(s):
407
+ r"""
408
+ Completed function `\xi(s)` that satisfies
409
+ `\xi(s) = \xi(1-s)` and has zeros at the same points as the
410
+ Riemann zeta function.
411
+
412
+ INPUT:
413
+
414
+ - ``s`` -- real or complex number
415
+
416
+ If s is a real number the computation is done using the MPFR
417
+ library. When the input is not real, the computation is done using
418
+ the PARI C library.
419
+
420
+ More precisely,
421
+
422
+ .. MATH::
423
+
424
+ xi(s) = \gamma(s/2 + 1) * (s-1) * \pi^{-s/2} * \zeta(s).
425
+
426
+ EXAMPLES::
427
+
428
+ sage: # needs sage.rings.real_mpfr
429
+ sage: RR = RealField(200)
430
+ sage: zeta_symmetric(RR(0.7))
431
+ 0.49758041465112690357779107525638385212657443284080589766062
432
+
433
+ sage: # needs sage.libs.pari sage.rings.real_mpfr
434
+ sage: zeta_symmetric(0.7)
435
+ 0.497580414651127
436
+ sage: zeta_symmetric(1 - 0.7)
437
+ 0.497580414651127
438
+ sage: C.<i> = ComplexField()
439
+ sage: zeta_symmetric(0.5 + i*14.0)
440
+ 0.000201294444235258 + 1.49077798716757e-19*I
441
+ sage: zeta_symmetric(0.5 + i*14.1)
442
+ 0.0000489893483255687 + 4.40457132572236e-20*I
443
+ sage: zeta_symmetric(0.5 + i*14.2)
444
+ -0.0000868931282620101 + 7.11507675693612e-20*I
445
+
446
+ REFERENCE:
447
+
448
+ - I copied the definition of xi from
449
+ http://web.viu.ca/pughg/RiemannZeta/RiemannZetaLong.html
450
+ """
451
+ if not isinstance(s, (ComplexNumber, RealNumber)):
452
+ s = ComplexField()(s)
453
+
454
+ R = s.parent()
455
+ if s == 1: # deal with poles, hopefully
456
+ return R(0.5)
457
+
458
+ return (s/2 + 1).gamma() * (s-1) * (R.pi()**(-s/2)) * s.zeta()
459
+
460
+
461
+ class DickmanRho(BuiltinFunction):
462
+ r"""
463
+ Dickman's function is the continuous function satisfying the
464
+ differential equation
465
+
466
+ .. MATH::
467
+
468
+ x \rho'(x) + \rho(x-1) = 0
469
+
470
+ with initial conditions `\rho(x)=1` for
471
+ `0 \le x \le 1`. It is useful in estimating the frequency
472
+ of smooth numbers as asymptotically
473
+
474
+ .. MATH::
475
+
476
+ \Psi(a, a^{1/s}) \sim a \rho(s)
477
+
478
+ where `\Psi(a,b)` is the number of `b`-smooth
479
+ numbers less than `a`.
480
+
481
+ ALGORITHM:
482
+
483
+ Dickmans's function is analytic on the interval
484
+ `[n,n+1]` for each integer `n`. To evaluate at
485
+ `n+t, 0 \le t < 1`, a power series is recursively computed
486
+ about `n+1/2` using the differential equation stated above.
487
+ As high precision arithmetic may be needed for intermediate results
488
+ the computed series are cached for later use.
489
+
490
+ Simple explicit formulas are used for the intervals [0,1] and
491
+ [1,2].
492
+
493
+ EXAMPLES::
494
+
495
+ sage: # needs sage.symbolic
496
+ sage: dickman_rho(2)
497
+ 0.306852819440055
498
+ sage: dickman_rho(10)
499
+ 2.77017183772596e-11
500
+ sage: dickman_rho(10.00000000000000000000000000000000000000)
501
+ 2.77017183772595898875812120063434232634e-11
502
+ sage: plot(log(dickman_rho(x)), (x, 0, 15)) # needs sage.plot
503
+ Graphics object consisting of 1 graphics primitive
504
+
505
+ AUTHORS:
506
+
507
+ - Robert Bradshaw (2008-09)
508
+
509
+ REFERENCES:
510
+
511
+ - G. Marsaglia, A. Zaman, J. Marsaglia. "Numerical
512
+ Solutions to some Classical Differential-Difference Equations."
513
+ Mathematics of Computation, Vol. 53, No. 187 (1989).
514
+ """
515
+ def __init__(self):
516
+ """
517
+ Construct an object to represent Dickman's rho function.
518
+
519
+ TESTS::
520
+
521
+ sage: dickman_rho(x) # needs sage.symbolic
522
+ dickman_rho(x)
523
+ sage: dickman_rho(3) # needs sage.symbolic
524
+ 0.0486083882911316
525
+ sage: dickman_rho(pi) # needs sage.symbolic
526
+ 0.0359690758968463
527
+ """
528
+ self._cur_prec = 0
529
+ BuiltinFunction.__init__(self, "dickman_rho", 1)
530
+
531
+ def _eval_(self, x):
532
+ """
533
+ EXAMPLES::
534
+
535
+ sage: [dickman_rho(n) for n in [1..10]] # needs sage.symbolic
536
+ [1.00000000000000, 0.306852819440055, 0.0486083882911316,
537
+ 0.00491092564776083, 0.000354724700456040, 0.0000196496963539553,
538
+ 8.74566995329392e-7, 3.23206930422610e-8, 1.01624828273784e-9,
539
+ 2.77017183772596e-11]
540
+ sage: dickman_rho(0) # needs sage.symbolic
541
+ 1.00000000000000
542
+ """
543
+ if not isinstance(x, RealNumber):
544
+ try:
545
+ x = RR(x)
546
+ except (TypeError, ValueError):
547
+ return None
548
+ if x < 0:
549
+ return x.parent()(0)
550
+ elif x <= 1:
551
+ return x.parent()(1)
552
+ elif x <= 2:
553
+ return 1 - x.log()
554
+ n = x.floor()
555
+ if self._cur_prec < x.parent().prec() or n not in self._f:
556
+
557
+ from sage.misc.misc import increase_recursion_limit
558
+
559
+ self._cur_prec = rel_prec = x.parent().prec()
560
+ # Go a bit beyond so we're not constantly re-computing.
561
+ max = x.parent()(1.1)*x + 10
562
+ abs_prec = (-self.approximate(max).log2() + rel_prec + 2*max.log2()).ceil()
563
+ self._f = {}
564
+ with increase_recursion_limit(int(max)):
565
+ self._compute_power_series(max.floor(), abs_prec, cache_ring=x.parent())
566
+ return self._f[n](2*(x-n-x.parent()(0.5)))
567
+
568
+ def power_series(self, n, abs_prec):
569
+ """
570
+ This function returns the power series about `n+1/2` used
571
+ to evaluate Dickman's function. It is scaled such that the interval
572
+ `[n,n+1]` corresponds to `x` in `[-1,1]`.
573
+
574
+ INPUT:
575
+
576
+ - ``n`` -- the lower endpoint of the interval for which
577
+ this power series holds
578
+
579
+ - ``abs_prec`` -- the absolute precision of the
580
+ resulting power series
581
+
582
+ EXAMPLES::
583
+
584
+ sage: # needs sage.rings.real_mpfr
585
+ sage: f = dickman_rho.power_series(2, 20); f
586
+ -9.9376e-8*x^11 + 3.7722e-7*x^10 - 1.4684e-6*x^9 + 5.8783e-6*x^8
587
+ - 0.000024259*x^7 + 0.00010341*x^6 - 0.00045583*x^5 + 0.0020773*x^4
588
+ - 0.0097336*x^3 + 0.045224*x^2 - 0.11891*x + 0.13032
589
+ sage: f(-1), f(0), f(1)
590
+ (0.30685, 0.13032, 0.048608)
591
+ sage: dickman_rho(2), dickman_rho(2.5), dickman_rho(3)
592
+ (0.306852819440055, 0.130319561832251, 0.0486083882911316)
593
+ """
594
+ return self._compute_power_series(n, abs_prec, cache_ring=None)
595
+
596
+ def _compute_power_series(self, n, abs_prec, cache_ring=None):
597
+ """
598
+ Compute the power series giving Dickman's function on `[n, n+1]`, by
599
+ recursion in `n`. For internal use; ``self.power_series()`` is a wrapper
600
+ around this intended for the user.
601
+
602
+ INPUT:
603
+
604
+ - ``n`` -- the lower endpoint of the interval for which
605
+ this power series holds
606
+
607
+ - ``abs_prec`` -- the absolute precision of the
608
+ resulting power series
609
+
610
+ - ``cache_ring`` -- for internal use, caches the power
611
+ series at this precision
612
+
613
+ EXAMPLES::
614
+
615
+ sage: # needs sage.rings.real_mpfr
616
+ sage: f = dickman_rho.power_series(2, 20); f
617
+ -9.9376e-8*x^11 + 3.7722e-7*x^10 - 1.4684e-6*x^9 + 5.8783e-6*x^8
618
+ - 0.000024259*x^7 + 0.00010341*x^6 - 0.00045583*x^5 + 0.0020773*x^4
619
+ - 0.0097336*x^3 + 0.045224*x^2 - 0.11891*x + 0.13032
620
+ """
621
+ if n <= 1:
622
+ if n <= -1:
623
+ return PolynomialRealDense(RealField(abs_prec)['x'])
624
+ if n == 0:
625
+ return PolynomialRealDense(RealField(abs_prec)['x'], [1])
626
+ elif n == 1:
627
+ nterms = (RDF(abs_prec) * RDF(2).log()/RDF(3).log()).ceil()
628
+ R = RealField(abs_prec)
629
+ neg_three = ZZ(-3)
630
+ coeffs = [1 - R(1.5).log()] + [neg_three**-k/k for k in range(1, nterms)]
631
+ f = PolynomialRealDense(R['x'], coeffs)
632
+ if cache_ring is not None:
633
+ self._f[n] = f.truncate_abs(f[0] >> (cache_ring.prec()+1)).change_ring(cache_ring)
634
+ return f
635
+ else:
636
+ f = self._compute_power_series(n-1, abs_prec, cache_ring)
637
+ # integrand = f / (2n+1 + x)
638
+ # We calculate this way because the most significant term is the constant term,
639
+ # and so we want to push the error accumulation and remainder out to the least
640
+ # significant terms.
641
+ integrand = f.reverse().quo_rem(PolynomialRealDense(f.parent(), [1, 2*n+1]))[0].reverse()
642
+ integrand = integrand.truncate_abs(RR(2)**-abs_prec)
643
+ iintegrand = integrand.integral()
644
+ ff = PolynomialRealDense(f.parent(), [f(1) + iintegrand(-1)]) - iintegrand
645
+ i = 0
646
+ while abs(f[i]) < abs(f[i+1]):
647
+ i += 1
648
+ rel_prec = int(abs_prec + abs(RR(f[i])).log2())
649
+ if cache_ring is not None:
650
+ self._f[n] = ff.truncate_abs(ff[0] >> (cache_ring.prec()+1)).change_ring(cache_ring)
651
+ return ff.change_ring(RealField(rel_prec))
652
+
653
+ def approximate(self, x, parent=None):
654
+ r"""
655
+ Approximate using de Bruijn's formula.
656
+
657
+ .. MATH::
658
+
659
+ \rho(x) \sim \frac{exp(-x \xi + Ei(\xi))}{\sqrt{2\pi x}\xi}
660
+
661
+ which is asymptotically equal to Dickman's function, and is much
662
+ faster to compute.
663
+
664
+ REFERENCES:
665
+
666
+ - N. De Bruijn, "The Asymptotic behavior of a function
667
+ occurring in the theory of primes." J. Indian Math Soc. v 15.
668
+ (1951)
669
+
670
+ EXAMPLES::
671
+
672
+ sage: dickman_rho.approximate(10) # needs sage.rings.real_mpfr
673
+ 2.41739196365564e-11
674
+ sage: dickman_rho(10) # needs sage.symbolic
675
+ 2.77017183772596e-11
676
+ sage: dickman_rho.approximate(1000) # needs sage.rings.real_mpfr
677
+ 4.32938809066403e-3464
678
+ """
679
+ log, exp, sqrt, pi = math.log, math.exp, math.sqrt, math.pi
680
+ x = float(x)
681
+ xi = log(x)
682
+ y = (exp(xi)-1.0)/xi - x
683
+ while abs(y) > 1e-12:
684
+ dydxi = (exp(xi)*(xi-1.0) + 1.0)/(xi*xi)
685
+ xi -= y/dydxi
686
+ y = (exp(xi)-1.0)/xi - x
687
+ return (-x*xi + RR(xi).eint()).exp() / (sqrt(2*pi*x)*xi)
688
+
689
+
690
+ dickman_rho = DickmanRho()