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,784 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Error functions
4
+
5
+ This module provides symbolic error functions. These functions use the
6
+ `mpmath library` for numerical evaluation and Maxima, Pynac for
7
+ symbolics.
8
+
9
+ The main objects which are exported from this module are:
10
+
11
+ * :meth:`erf <Function_erf>` -- the error function
12
+ * :meth:`erfc <Function_erfc>` -- the complementary error function
13
+ * :meth:`erfi <Function_erfi>` -- the imaginary error function
14
+ * :meth:`erfinv <Function_erfinv>` -- the inverse error function
15
+ * :meth:`fresnel_sin <Function_Fresnel_sin>` -- the Fresnel integral `S(x)`
16
+ * :meth:`fresnel_cos <Function_Fresnel_cos>` -- the Fresnel integral `C(x)`
17
+
18
+ AUTHORS:
19
+
20
+ * Original authors ``erf``/``error_fcn`` (c) 2006-2014:
21
+ Karl-Dieter Crisman, Benjamin Jones, Mike Hansen, William Stein,
22
+ Burcin Erocal, Jeroen Demeyer, W. D. Joyner, R. Andrew Ohana
23
+ * Reorganisation in new file, addition of ``erfi``/``erfinv``/``erfc``
24
+ (c) 2016: Ralf Stephan
25
+ * Fresnel integrals (c) 2017 Marcelo Forets
26
+
27
+ REFERENCES:
28
+
29
+ - [DLMF-Error]_
30
+
31
+ - [WP-Error]_
32
+ """
33
+
34
+ # ****************************************************************************
35
+ # Copyright (C) 2016 Ralf Stephan <gtrwst9 at gmail.com>
36
+ #
37
+ # This program is free software: you can redistribute it and/or modify
38
+ # it under the terms of the GNU General Public License as published by
39
+ # the Free Software Foundation, either version 2 of the License, or
40
+ # (at your option) any later version.
41
+ # https://www.gnu.org/licenses/
42
+ # ****************************************************************************
43
+
44
+ from sage.misc.functional import sqrt
45
+ from sage.misc.lazy_import import lazy_import
46
+ from sage.misc.persist import register_unpickle_override
47
+ from sage.rings.infinity import unsigned_infinity
48
+ from sage.rings.rational import Rational
49
+ from sage.structure.element import Expression, parent as s_parent
50
+ from sage.symbolic.function import BuiltinFunction
51
+
52
+ lazy_import('sage.functions.log', ['exp'])
53
+ lazy_import('sage.functions.trig', ['sin', 'cos'])
54
+
55
+ lazy_import('sage.symbolic.constants', ['I', 'pi'])
56
+
57
+ lazy_import('sage.libs.mpmath.utils', 'call', as_='_mpmath_utils_call')
58
+ lazy_import('sage.libs.mpmath.all', 'erf', as_='_mpmath_erf')
59
+ lazy_import('sage.libs.mpmath.all', 'erfc', as_='_mpmath_erfc')
60
+ lazy_import('sage.libs.mpmath.all', 'erfi', as_='_mpmath_erfi')
61
+ lazy_import('sage.libs.mpmath.all', 'erfinv', as_='_mpmath_erfinv')
62
+ lazy_import('sage.libs.mpmath.all', 'fresnelc', as_='_mpmath_fresnelc')
63
+ lazy_import('sage.libs.mpmath.all', 'fresnels', as_='_mpmath_fresnels')
64
+
65
+
66
+ class Function_erf(BuiltinFunction):
67
+ r"""
68
+ The error function.
69
+
70
+ The error function is defined for real values as
71
+
72
+ .. MATH::
73
+
74
+ \operatorname{erf}(x) = \frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} dt.
75
+
76
+ This function is also defined for complex values, via analytic
77
+ continuation.
78
+
79
+ EXAMPLES:
80
+
81
+ We can evaluate numerically::
82
+
83
+ sage: erf(2) # needs sage.symbolic
84
+ erf(2)
85
+ sage: erf(2).n() # needs sage.symbolic
86
+ 0.995322265018953
87
+ sage: erf(2).n(100) # needs sage.symbolic
88
+ 0.99532226501895273416206925637
89
+ sage: erf(ComplexField(100)(2+3j)) # needs sage.rings.real_mpfr
90
+ -20.829461427614568389103088452 + 8.6873182714701631444280787545*I
91
+
92
+ Basic symbolic properties are handled by Sage and Maxima::
93
+
94
+ sage: x = var("x") # needs sage.symbolic
95
+ sage: diff(erf(x),x) # needs sage.symbolic
96
+ 2*e^(-x^2)/sqrt(pi)
97
+ sage: integrate(erf(x),x) # needs sage.symbolic
98
+ x*erf(x) + e^(-x^2)/sqrt(pi)
99
+
100
+ ALGORITHM:
101
+
102
+ Sage implements numerical evaluation of the error function via the
103
+ ``erf()`` function from mpmath. Symbolics are handled by Sage and Maxima.
104
+
105
+ REFERENCES:
106
+
107
+ - :wikipedia:`Error_function`
108
+ - http://mpmath.googlecode.com/svn/trunk/doc/build/functions/expintegrals.html#error-functions
109
+
110
+ TESTS:
111
+
112
+ Check limits::
113
+
114
+ sage: limit(erf(x), x=0) # needs sage.symbolic
115
+ 0
116
+ sage: limit(erf(x), x=infinity) # needs sage.symbolic
117
+ 1
118
+
119
+ Check that it's odd::
120
+
121
+ sage: erf(1.0) # needs mpmath
122
+ 0.842700792949715
123
+ sage: erf(-1.0) # needs mpmath
124
+ -0.842700792949715
125
+
126
+ Check against other implementations and against the definition::
127
+
128
+ sage: erf(3).n() # needs sage.symbolic
129
+ 0.999977909503001
130
+ sage: maxima.erf(3).n() # needs sage.symbolic
131
+ 0.999977909503001
132
+ sage: 1 - pari(3).erfc() # needs sage.libs.pari
133
+ 0.999977909503001
134
+ sage: RR(3).erf() # needs sage.rings.real_mpfr
135
+ 0.999977909503001
136
+ sage: (integrate(exp(-x**2), (x,0,3))*2/sqrt(pi)).n() # needs sage.symbolic
137
+ 0.999977909503001
138
+
139
+ :issue:`9044`::
140
+
141
+ sage: N(erf(sqrt(2)),200) # needs sage.symbolic
142
+ 0.95449973610364158559943472566693312505644755259664313203267
143
+
144
+ :issue:`11626`::
145
+
146
+ sage: n(erf(2),100) # needs sage.symbolic
147
+ 0.99532226501895273416206925637
148
+ sage: erf(2).n(100) # needs sage.symbolic
149
+ 0.99532226501895273416206925637
150
+
151
+ Test (indirectly) :issue:`11885`::
152
+
153
+ sage: erf(float(0.5))
154
+ 0.5204998778130465
155
+ sage: erf(complex(0.5)) # needs sage.rings.complex_double
156
+ (0.5204998778130465+0j)
157
+
158
+ Ensure conversion from maxima elements works::
159
+
160
+ sage: merf = maxima(erf(x)).sage().operator() # needs sage.symbolic
161
+ sage: merf.parent() == erf.parent() # needs sage.symbolic
162
+ True
163
+
164
+ Make sure we can dump and load it::
165
+
166
+ sage: loads(dumps(erf(2))) # needs sage.symbolic
167
+ erf(2)
168
+
169
+ Special-case 0 for immediate evaluation::
170
+
171
+ sage: erf(0) # needs mpmath
172
+ 0
173
+ sage: solve(erf(x)==0, x) # needs sage.symbolic
174
+ [x == 0]
175
+
176
+ Make sure that we can hold::
177
+
178
+ sage: erf(0, hold=True) # needs sage.symbolic
179
+ erf(0)
180
+ sage: simplify(erf(0, hold=True)) # needs sage.symbolic
181
+ 0
182
+
183
+ Check that high-precision ComplexField inputs work::
184
+
185
+ sage: CC(erf(ComplexField(1000)(2+3j))) # needs sage.rings.real_mpfr
186
+ -20.8294614276146 + 8.68731827147016*I
187
+ """
188
+
189
+ def __init__(self):
190
+ r"""
191
+ See docstring for :meth:`Function_erf`.
192
+
193
+ EXAMPLES::
194
+
195
+ sage: maxima(erf(2)) # needs sage.symbolic
196
+ erf(2)
197
+ sage: erf(2)._sympy_() # needs sympy sage.symbolic
198
+ erf(2)
199
+ """
200
+ BuiltinFunction.__init__(self, "erf", latex_name=r"\operatorname{erf}",
201
+ conversions=dict(maxima='erf',
202
+ sympy='erf',
203
+ fricas='erf',
204
+ giac='erf'))
205
+
206
+ def _eval_(self, x):
207
+ """
208
+ EXAMPLES:
209
+
210
+ Input is not an expression but is exact::
211
+
212
+ sage: # needs sage.symbolic
213
+ sage: erf(0)
214
+ 0
215
+ sage: erf(1)
216
+ erf(1)
217
+ sage: erf(oo)
218
+ 1
219
+ sage: erf(SR(-oo))
220
+ -1
221
+ sage: erf(unsigned_infinity)
222
+ Infinity
223
+
224
+ Input is not an expression and is not exact::
225
+
226
+ sage: erf(0.0) # needs mpmath
227
+ 0.000000000000000
228
+
229
+ Input is an expression but not a trivial zero::
230
+
231
+ sage: erf(x) # needs sage.symbolic
232
+ erf(x)
233
+
234
+ Input is an expression which is trivially zero::
235
+
236
+ sage: erf(SR(0)) # needs sage.symbolic
237
+ 0
238
+ """
239
+ if isinstance(x, Expression):
240
+ if x.is_trivial_zero():
241
+ return x
242
+ elif x.is_infinity():
243
+ if x.is_positive_infinity():
244
+ return 1
245
+ elif x.is_negative_infinity():
246
+ return -1
247
+ else:
248
+ return unsigned_infinity
249
+ elif not x:
250
+ return x
251
+
252
+ def _evalf_(self, x, parent=None, algorithm=None):
253
+ """
254
+ EXAMPLES::
255
+
256
+ sage: erf(2).n() # needs sage.symbolic
257
+ 0.995322265018953
258
+ sage: erf(2).n(200) # needs sage.symbolic
259
+ 0.99532226501895273416206925636725292861089179704006007673835
260
+ sage: erf(pi - 1/2*I).n(100) # needs sage.symbolic
261
+ 1.0000111669099367825726058952 + 1.6332655417638522934072124547e-6*I
262
+
263
+ TESTS:
264
+
265
+ Check that PARI/GP through the GP interface gives the same answer::
266
+
267
+ sage: gp.set_real_precision(59) # random # needs sage.libs.pari
268
+ 38
269
+ sage: print(gp.eval("1 - erfc(1)")); print(erf(1).n(200)) # needs mpmath sage.libs.pari
270
+ 0.84270079294971486934122063508260925929606699796630290845994
271
+ 0.84270079294971486934122063508260925929606699796630290845994
272
+
273
+ Check that for an imaginary input, the output is also imaginary, see
274
+ :issue:`13193`::
275
+
276
+ sage: erf(3.0*I) # needs sage.symbolic
277
+ 1629.99462260157*I
278
+ sage: erf(33.0*I) # needs sage.symbolic
279
+ 1.51286977510409e471*I
280
+
281
+ Check that real ball evaluation is fixed :issue:`28061`::
282
+
283
+ sage: RealBallField(128)(erf(5)) # abs tol 1e-38 # needs sage.symbolic
284
+ [0.99999999999846254020557196514981165651 +/- 7.33e-39]
285
+ """
286
+ R = parent or s_parent(x)
287
+ y = _mpmath_utils_call(_mpmath_erf, x, parent=R)
288
+ return y
289
+
290
+ def _derivative_(self, x, diff_param=None):
291
+ """
292
+ Derivative of erf function.
293
+
294
+ EXAMPLES::
295
+
296
+ sage: erf(x).diff(x) # needs sage.symbolic
297
+ 2*e^(-x^2)/sqrt(pi)
298
+
299
+ TESTS:
300
+
301
+ Check if :issue:`8568` is fixed::
302
+
303
+ sage: var('c,x') # needs sage.symbolic
304
+ (c, x)
305
+ sage: derivative(erf(c*x),x) # needs sage.symbolic
306
+ 2*c*e^(-c^2*x^2)/sqrt(pi)
307
+ sage: erf(c*x).diff(x)._maxima_init_() # needs sage.symbolic
308
+ '((%pi)^(-1/2))*(_SAGE_VAR_c)*(exp(((_SAGE_VAR_c)^(2))*((_SAGE_VAR_x)^(2))*(-1)))*(2)'
309
+ """
310
+ return 2*exp(-x**2)/sqrt(pi)
311
+
312
+
313
+ erf = Function_erf()
314
+
315
+
316
+ class Function_erfi(BuiltinFunction):
317
+ r"""
318
+ The imaginary error function.
319
+
320
+ The imaginary error function is defined by
321
+
322
+ .. MATH::
323
+
324
+ \operatorname{erfi}(x) = -i \operatorname{erf}(ix).
325
+ """
326
+ def __init__(self):
327
+ r"""
328
+ Initialize ``self``.
329
+
330
+ EXAMPLES::
331
+
332
+ sage: maxima(erfi(2)) # needs sage.symbolic
333
+ erfi(2)
334
+ sage: erfi(2)._sympy_() # needs sympy sage.symbolic
335
+ erfi(2)
336
+ """
337
+ BuiltinFunction.__init__(self, "erfi",
338
+ latex_name=r"\operatorname{erfi}",
339
+ conversions=dict(maxima='erfi',
340
+ sympy='erfi',
341
+ fricas='erfi'))
342
+
343
+ def _eval_(self, x):
344
+ """
345
+ EXAMPLES::
346
+
347
+ sage: # needs sage.symbolic
348
+ sage: erfi(0)
349
+ 0
350
+ sage: erfi(SR(0))
351
+ 0
352
+ sage: erfi(oo)
353
+ Infinity
354
+ sage: erfi(SR(-oo))
355
+ Infinity
356
+ """
357
+ if isinstance(x, Expression):
358
+ if x.is_trivial_zero():
359
+ return x
360
+ elif x.is_infinity():
361
+ return unsigned_infinity
362
+ elif not x:
363
+ return x
364
+
365
+ def _evalf_(self, x, parent=None, algorithm=None):
366
+ """
367
+ EXAMPLES::
368
+
369
+ sage: erfi(2.) # needs mpmath
370
+ 18.5648024145756
371
+ sage: erfi(2).n(100) # needs sage.symbolic
372
+ 18.564802414575552598704291913
373
+ sage: erfi(-2*I).n(100) # needs sage.symbolic
374
+ -0.99532226501895273416206925637*I
375
+ """
376
+ R = parent or s_parent(x)
377
+ return _mpmath_utils_call(_mpmath_erfi, x, parent=R)
378
+
379
+ def _derivative_(self, x, diff_param=None):
380
+ """
381
+ Derivative of erfi function.
382
+
383
+ EXAMPLES::
384
+
385
+ sage: erfi(x).diff(x) # needs sage.symbolic
386
+ 2*e^(x^2)/sqrt(pi)
387
+ """
388
+ return 2*exp(x**2)/sqrt(pi)
389
+
390
+
391
+ erfi = Function_erfi()
392
+
393
+
394
+ class Function_erfc(BuiltinFunction):
395
+ r"""
396
+ The complementary error function.
397
+
398
+ The complementary error function is defined by
399
+
400
+ .. MATH::
401
+
402
+ \frac{2}{\sqrt{\pi}} \int_t^\infty e^{-x^2} dx.
403
+
404
+ EXAMPLES::
405
+
406
+ sage: erfc(6) # needs sage.symbolic
407
+ erfc(6)
408
+ sage: erfc(6).n() # needs sage.symbolic
409
+ 2.15197367124989e-17
410
+ sage: erfc(RealField(100)(1/2)) # needs sage.rings.real_mpfr
411
+ 0.47950012218695346231725334611
412
+
413
+ sage: 1 - erfc(0.5) # needs mpmath
414
+ 0.520499877813047
415
+ sage: erf(0.5) # needs mpmath
416
+ 0.520499877813047
417
+
418
+ TESTS:
419
+
420
+ Check that :issue:`25991` is fixed::
421
+
422
+ sage: erfc(x)._fricas_() # optional - fricas, needs sage.symbolic
423
+ - erf(x) + 1
424
+ """
425
+ def __init__(self):
426
+ r"""
427
+ EXAMPLES::
428
+
429
+ sage: maxima(erfc(2)) # needs sage.symbolic
430
+ erfc(2)
431
+ sage: erfc(2)._sympy_() # needs sympy sage.symbolic
432
+ erfc(2)
433
+ """
434
+ BuiltinFunction.__init__(self, "erfc",
435
+ latex_name=r"\operatorname{erfc}",
436
+ conversions=dict(maxima='erfc',
437
+ sympy='erfc',
438
+ fricas='(x+->1-erf(x))',
439
+ giac='erfc'))
440
+
441
+ def _eval_(self, x):
442
+ """
443
+ EXAMPLES::
444
+
445
+ sage: # needs sage.symbolic
446
+ sage: erfc(0)
447
+ 1
448
+ sage: erfc(SR(0))
449
+ 1
450
+ sage: erfc(oo)
451
+ 0
452
+ sage: erfc(SR(-oo))
453
+ 2
454
+ """
455
+ if isinstance(x, Expression):
456
+ if x.is_trivial_zero():
457
+ return 1
458
+ elif x.is_infinity():
459
+ if x.is_positive_infinity():
460
+ return 0
461
+ elif x.is_negative_infinity():
462
+ return 2
463
+ else:
464
+ return unsigned_infinity
465
+ elif not x:
466
+ return 1
467
+
468
+ def _evalf_(self, x, parent=None, algorithm=None):
469
+ """
470
+ EXAMPLES::
471
+
472
+ sage: erfc(4).n() # needs sage.symbolic
473
+ 1.54172579002800e-8
474
+ sage: erfc(4).n(100) # needs sage.symbolic
475
+ 1.5417257900280018852159673487e-8
476
+ sage: erfc(4*I).n(100) # needs sage.symbolic
477
+ 1.0000000000000000000000000000 - 1.2969597307176392315279409506e6*I
478
+ """
479
+ R = parent or s_parent(x)
480
+ return _mpmath_utils_call(_mpmath_erfc, x, parent=R)
481
+
482
+ def _derivative_(self, x, diff_param=None):
483
+ """
484
+ Derivative of erfc function.
485
+
486
+ EXAMPLES::
487
+
488
+ sage: erfc(x).diff(x) # needs sage.symbolic
489
+ -2*e^(-x^2)/sqrt(pi)
490
+ """
491
+ return -2*exp(-x**2)/sqrt(pi)
492
+
493
+
494
+ erfc = Function_erfc()
495
+
496
+
497
+ class Function_erfinv(BuiltinFunction):
498
+ r"""
499
+ The inverse error function.
500
+
501
+ The inverse error function is defined by:
502
+
503
+ .. MATH::
504
+
505
+ \operatorname{erfinv}(x) = \operatorname{erf}^{-1}(x).
506
+ """
507
+ def __init__(self):
508
+ r"""
509
+ Initialize ``self``.
510
+
511
+ EXAMPLES::
512
+
513
+ sage: erfinv(2)._sympy_() # needs sympy sage.symbolic
514
+ erfinv(2)
515
+ sage: maxima(erfinv(2)) # needs sage.symbolic
516
+ inverse_erf(2)
517
+
518
+ TESTS:
519
+
520
+ Check that :issue:`11349` is fixed::
521
+
522
+ sage: # needs sage.symbolic
523
+ sage: _ = var('z,t')
524
+ sage: PDF = exp(-x^2 /2)/sqrt(2*pi)
525
+ sage: integralExpr = integrate(PDF,x,z,oo).subs(z==log(t))
526
+ sage: y = solve(integralExpr==z,t)[0].rhs().subs(z==1/4)
527
+ sage: y
528
+ e^(sqrt(2)*erfinv(1/2))
529
+ sage: y.n()
530
+ 1.96303108415826
531
+ """
532
+ BuiltinFunction.__init__(self, "erfinv",
533
+ latex_name=r"\operatorname{erfinv}",
534
+ conversions=dict(sympy='erfinv',
535
+ maxima='inverse_erf'))
536
+
537
+ def _eval_(self, x):
538
+ """
539
+ EXAMPLES::
540
+
541
+ sage: erfinv(0) # needs mpmath
542
+ 0
543
+ sage: erfinv(SR(0)) # needs sage.symbolic
544
+ 0
545
+ sage: erfinv(1) # needs sage.symbolic
546
+ Infinity
547
+ """
548
+ if isinstance(x, Expression):
549
+ if x.is_trivial_zero():
550
+ return x
551
+ elif (x-1).is_trivial_zero():
552
+ return unsigned_infinity
553
+ elif not x:
554
+ return x
555
+ elif x == 1:
556
+ return unsigned_infinity
557
+
558
+ def _evalf_(self, x, parent=None, algorithm=None):
559
+ """
560
+ EXAMPLES::
561
+
562
+ sage: erfinv(0.2) # needs mpmath
563
+ 0.179143454621292
564
+ sage: erfinv(1/5).n(100) # needs sage.symbolic
565
+ 0.17914345462129167649274901663
566
+ """
567
+ R = parent or s_parent(x)
568
+ return _mpmath_utils_call(_mpmath_erfinv, x, parent=R)
569
+
570
+ def _derivative_(self, x, diff_param=None):
571
+ """
572
+ Derivative of inverse erf function.
573
+
574
+ EXAMPLES::
575
+
576
+ sage: erfinv(x).diff(x) # needs sage.symbolic
577
+ 1/2*sqrt(pi)*e^(erfinv(x)^2)
578
+ """
579
+ return sqrt(pi)*exp(erfinv(x)**2)/2
580
+
581
+
582
+ erfinv = Function_erfinv()
583
+
584
+
585
+ register_unpickle_override('sage.functions.other', 'Function_erf', Function_erf)
586
+
587
+
588
+ ############################
589
+ # Fresnel integrals #
590
+ ############################
591
+ class Function_Fresnel_sin(BuiltinFunction):
592
+ def __init__(self):
593
+ r"""
594
+ The sine Fresnel integral.
595
+
596
+ It is defined by the integral
597
+
598
+ .. MATH ::
599
+
600
+ \operatorname{S}(x) = \int_0^x \sin\left(\frac{\pi t^2}{2}\right)\, dt
601
+
602
+ for real `x`. Using power series expansions, it can be extended to the
603
+ domain of complex numbers. See the :wikipedia:`Fresnel_integral`.
604
+
605
+ INPUT:
606
+
607
+ - ``x`` -- the argument of the function
608
+
609
+ EXAMPLES::
610
+
611
+ sage: # needs sage.symbolic
612
+ sage: fresnel_sin(0)
613
+ 0
614
+ sage: fresnel_sin(x).subs(x==0)
615
+ 0
616
+ sage: x = var('x')
617
+ sage: fresnel_sin(1).n(100)
618
+ 0.43825914739035476607675669662
619
+ sage: fresnel_sin(x)._sympy_() # needs sympy
620
+ fresnels(x)
621
+ """
622
+ BuiltinFunction.__init__(self, "fresnel_sin", nargs=1,
623
+ latex_name=r"\operatorname{S}",
624
+ conversions=dict(maxima='fresnel_s',
625
+ sympy='fresnels',
626
+ mathematica='FresnelS',
627
+ maple='FresnelS',
628
+ fricas='fresnelS'))
629
+
630
+ def _eval_(self, x):
631
+ r"""
632
+ EXAMPLES::
633
+
634
+ sage: fresnel_sin(pi) # needs sage.symbolic
635
+ fresnel_sin(pi)
636
+ sage: fresnel_sin(oo) # needs mpmath
637
+ 1/2
638
+ sage: fresnel_sin(-oo) # needs mpmath
639
+ -1/2
640
+ sage: fresnel_sin(I*oo) # needs sage.symbolic
641
+ -1/2*I
642
+ sage: fresnel_sin(-I*oo) # needs sage.symbolic
643
+ 1/2*I
644
+ """
645
+ if isinstance(x, Expression):
646
+ if x.is_negative():
647
+ return -fresnel_sin(-x)
648
+ if x.is_trivial_zero():
649
+ return x
650
+ if x.is_infinity():
651
+ if x.is_positive_infinity():
652
+ return Rational((1, 2))
653
+ elif x.imag_part().is_positive_infinity():
654
+ return -I*Rational((1, 2))
655
+ elif x.imag_part().is_negative_infinity():
656
+ return I*Rational((1, 2))
657
+ elif x < 0:
658
+ return -fresnel_sin(-x)
659
+ elif not x:
660
+ return x
661
+
662
+ def _evalf_(self, x, parent=None, algorithm=None):
663
+ r"""
664
+ EXAMPLES::
665
+
666
+ sage: fresnel_sin(pi) # needs sage.symbolic
667
+ fresnel_sin(pi)
668
+ sage: fresnel_sin(pi).n(100) # needs sage.symbolic
669
+ 0.59824907809026766482843860921
670
+ sage: fresnel_sin(1.0+2*I) # needs sage.symbolic
671
+ 36.7254648839914 + 15.5877511044046*I
672
+ """
673
+ return _mpmath_utils_call(_mpmath_fresnels, x, parent=parent)
674
+
675
+ def _derivative_(self, x, diff_param=None):
676
+ """
677
+ EXAMPLES::
678
+
679
+ sage: x = var('x') # needs sage.symbolic
680
+ sage: fresnel_sin(x).diff(x) # needs sage.symbolic
681
+ sin(1/2*pi*x^2)
682
+ """
683
+ return sin(pi*x**2/2)
684
+
685
+
686
+ fresnel_sin = Function_Fresnel_sin()
687
+
688
+
689
+ class Function_Fresnel_cos(BuiltinFunction):
690
+ def __init__(self):
691
+ r"""
692
+ The cosine Fresnel integral.
693
+
694
+ It is defined by the integral
695
+
696
+ .. MATH ::
697
+
698
+ \operatorname{C}(x) = \int_0^x \cos\left(\frac{\pi t^2}{2}\right)\, dt
699
+
700
+ for real `x`. Using power series expansions, it can be extended to the
701
+ domain of complex numbers. See the :wikipedia:`Fresnel_integral`.
702
+
703
+ INPUT:
704
+
705
+ - ``x`` -- the argument of the function
706
+
707
+ EXAMPLES::
708
+
709
+ sage: # needs sage.symbolic
710
+ sage: fresnel_cos(0)
711
+ 0
712
+ sage: fresnel_cos(x).subs(x==0)
713
+ 0
714
+ sage: x = var('x')
715
+ sage: fresnel_cos(1).n(100)
716
+ 0.77989340037682282947420641365
717
+ sage: fresnel_cos(x)._sympy_() # needs sympy
718
+ fresnelc(x)
719
+ """
720
+ BuiltinFunction.__init__(self, "fresnel_cos", nargs=1,
721
+ latex_name=r"\operatorname{C}",
722
+ conversions=dict(maxima='fresnel_c',
723
+ sympy='fresnelc',
724
+ mathematica='FresnelC',
725
+ maple='FresnelC',
726
+ fricas='fresnelC'))
727
+
728
+ def _eval_(self, x):
729
+ r"""
730
+ EXAMPLES::
731
+
732
+ sage: fresnel_cos(pi) # needs sage.symbolic
733
+ fresnel_cos(pi)
734
+ sage: fresnel_cos(oo) # needs mpmath
735
+ 1/2
736
+ sage: fresnel_cos(-oo) # needs mpmath
737
+ -1/2
738
+ sage: fresnel_cos(I*oo) # needs sage.symbolic
739
+ 1/2*I
740
+ sage: fresnel_cos(-I*oo) # needs sage.symbolic
741
+ -1/2*I
742
+ """
743
+ if isinstance(x, Expression):
744
+ if x.is_negative():
745
+ return -fresnel_cos(-x)
746
+ if x.is_trivial_zero():
747
+ return x
748
+ if x.is_infinity():
749
+ if x.is_positive_infinity():
750
+ return Rational((1, 2))
751
+ elif x.imag_part().is_positive_infinity():
752
+ return I*Rational((1, 2))
753
+ elif x.imag_part().is_negative_infinity():
754
+ return -I*Rational((1, 2))
755
+ elif x < 0:
756
+ return -fresnel_cos(-x)
757
+ elif not x:
758
+ return x
759
+
760
+ def _evalf_(self, x, parent=None, algorithm=None):
761
+ r"""
762
+ EXAMPLES::
763
+
764
+ sage: fresnel_cos(pi) # needs sage.symbolic
765
+ fresnel_cos(pi)
766
+ sage: fresnel_cos(pi).n(100) # needs sage.symbolic
767
+ 0.52369854372622864215767570284
768
+ sage: fresnel_cos(1.0+2*I) # needs sage.symbolic
769
+ 16.0878713741255 - 36.2256879928817*I
770
+ """
771
+ return _mpmath_utils_call(_mpmath_fresnelc, x, parent=parent)
772
+
773
+ def _derivative_(self, x, diff_param=None):
774
+ """
775
+ EXAMPLES::
776
+
777
+ sage: x = var('x') # needs sage.symbolic
778
+ sage: fresnel_cos(x).diff(x) # needs sage.symbolic
779
+ cos(1/2*pi*x^2)
780
+ """
781
+ return cos(pi*x**2/2)
782
+
783
+
784
+ fresnel_cos = Function_Fresnel_cos()