passagemath-modules 10.6.31rc3__cp314-cp314-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.

Potentially problematic release.


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

Files changed (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-musl.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-musl.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-aarch64-linux-musl.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-aarch64-linux-musl.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-musl.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-aarch64-linux-musl.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-musl.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-aarch64-linux-musl.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-aarch64-linux-musl.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-musl.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-aarch64-linux-musl.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-aarch64-linux-musl.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-musl.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-musl.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-musl.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-musl.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-musl.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-musl.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-musl.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-musl.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-aarch64-linux-musl.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-aarch64-linux-musl.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-aarch64-linux-musl.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-aarch64-linux-musl.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-aarch64-linux-musl.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-aarch64-linux-musl.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-musl.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-aarch64-linux-musl.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-aarch64-linux-musl.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-aarch64-linux-musl.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-aarch64-linux-musl.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-aarch64-linux-musl.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-aarch64-linux-musl.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-aarch64-linux-musl.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-aarch64-linux-musl.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-musl.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-aarch64-linux-musl.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-musl.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-musl.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-musl.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-musl.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-aarch64-linux-musl.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-musl.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-musl.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-musl.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-aarch64-linux-musl.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-aarch64-linux-musl.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-musl.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-musl.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-musl.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-musl.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-musl.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-musl.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-aarch64-linux-musl.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-aarch64-linux-musl.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-musl.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-musl.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-aarch64-linux-musl.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-aarch64-linux-musl.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-aarch64-linux-musl.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-aarch64-linux-musl.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-aarch64-linux-musl.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
sage/calculus/ode.pyx ADDED
@@ -0,0 +1,610 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Solving ODE numerically by GSL
4
+
5
+ AUTHORS:
6
+
7
+ - Joshua Kantor (2004-2006)
8
+
9
+ - Robert Marik (2010 - fixed docstrings)
10
+ """
11
+
12
+ # ****************************************************************************
13
+ # Copyright (C) 2004,2005,2006 Joshua Kantor <kantor.jm@gmail.com>
14
+ #
15
+ # This program is free software: you can redistribute it and/or modify
16
+ # it under the terms of the GNU General Public License as published by
17
+ # the Free Software Foundation, either version 2 of the License, or
18
+ # (at your option) any later version.
19
+ # https://www.gnu.org/licenses/
20
+ # ****************************************************************************
21
+
22
+ from cysignals.memory cimport sig_malloc, sig_free
23
+ from cysignals.signals cimport sig_on, sig_off
24
+
25
+ from sage.misc.sageinspect import sage_getargspec
26
+ from sage.libs.gsl.types cimport *
27
+ from sage.libs.gsl.odeiv cimport *
28
+ import sage.calculus.interpolation
29
+
30
+
31
+ cdef class PyFunctionWrapper:
32
+ cdef object the_function
33
+ cdef object the_jacobian
34
+ cdef object the_parameters
35
+ cdef int y_n
36
+
37
+ cdef set_yn(self, x):
38
+ self.y_n = x
39
+
40
+ cdef class ode_system:
41
+ cdef int c_j(self, double t, double *y, double *dfdy, double *dfdt) noexcept:
42
+ return 0
43
+
44
+ cdef int c_f(self, double t, double* y, double* dydt) noexcept:
45
+ return 0
46
+
47
+ cdef int c_jac_compiled(double t, const double *y, double *dfdy, double *dfdt, void *params) noexcept:
48
+ cdef int status
49
+ cdef ode_system wrapper
50
+ wrapper = <ode_system> params
51
+ status = wrapper.c_j(t, y, dfdy, dfdt) # Could add parameters
52
+ return status
53
+
54
+ cdef int c_f_compiled(double t, const double *y, double *dydt, void *params) noexcept:
55
+ cdef int status
56
+ cdef ode_system wrapper
57
+ wrapper = <ode_system> params
58
+ status = wrapper.c_f(t, y, dydt) # Could add parameters
59
+ return status
60
+
61
+ cdef int c_jac(double t, const double *y, double *dfdy, double *dfdt, void *params) noexcept:
62
+ cdef int i
63
+ cdef int j
64
+ cdef int y_n
65
+ cdef PyFunctionWrapper wrapper
66
+ wrapper = <PyFunctionWrapper > params
67
+ y_n = wrapper.y_n
68
+ y_list = [y[i] for i in range(y_n)]
69
+ try:
70
+ if len(wrapper.the_parameters) == 0:
71
+ jac_list = wrapper.the_jacobian(t, y_list)
72
+ else:
73
+ jac_list = wrapper.the_jacobian(t, y_list, wrapper.the_parameters)
74
+ for i in range(y_n):
75
+ for j in range(y_n):
76
+ dfdy[i * y_n + j] = jac_list[i][j]
77
+
78
+ for i in range(y_n):
79
+ dfdt[i] = jac_list[y_n][i]
80
+
81
+ return GSL_SUCCESS
82
+ except Exception:
83
+ return -1
84
+
85
+ cdef int c_f(double t, const double *y, double *dydt, void *params) noexcept:
86
+ cdef int i
87
+ cdef int y_n
88
+
89
+ cdef PyFunctionWrapper wrapper
90
+ wrapper = <PyFunctionWrapper> params
91
+ y_n = wrapper.y_n
92
+ y_list = []
93
+ for i in range(y_n):
94
+ y_list.append(y[i])
95
+ try:
96
+ if len(wrapper.the_parameters) != 0:
97
+ dydt_list = wrapper.the_function(t, y_list, wrapper.the_parameters)
98
+ else:
99
+ dydt_list = wrapper.the_function(t, y_list)
100
+ for i in range(y_n):
101
+ dydt[i] = dydt_list[i]
102
+ return GSL_SUCCESS
103
+ except Exception:
104
+ return -1
105
+
106
+
107
+ class ode_solver():
108
+ r"""
109
+ :meth:`ode_solver` is a class that wraps the GSL library's ode solver routines.
110
+
111
+ To use it, instantiate the class::
112
+
113
+ sage: T = ode_solver()
114
+
115
+ To solve a system of the form `dy_i/dt=f_i(t,y)`, you must
116
+ supply a vector or tuple/list valued function ``f`` representing
117
+ `f_i`. The functions `f` and the jacobian should have the
118
+ form ``foo(t,y)`` or ``foo(t,y,params)``. ``params`` which is
119
+ optional allows for your function to depend on one or a tuple of
120
+ parameters. Note if you use it, ``params`` must be a tuple even
121
+ if it only has one component. For example if you wanted to solve
122
+ `y''+y=0`, you would need to write it as a first order system::
123
+
124
+ y_0' = y_1
125
+ y_1' = -y_0
126
+
127
+ In code::
128
+
129
+ sage: f = lambda t, y: [y[1], -y[0]]
130
+ sage: T.function = f
131
+
132
+ For some algorithms, the jacobian must be supplied as well, the
133
+ form of this should be a function returning a list of lists of the
134
+ form ``[ [df_1/dy_1,...,df_1/dy_n], ...,
135
+ [df_n/dy_1,...,df_n,dy_n], [df_1/dt,...,df_n/dt] ]``.
136
+
137
+ There are examples below, if your jacobian was the function
138
+ ``my_jacobian`` you would do::
139
+
140
+ sage: T.jacobian = my_jacobian # not tested, since it doesn't make sense to test this
141
+
142
+ There are a variety of algorithms available for different types of systems. Possible algorithms are
143
+
144
+ - ``'rkf45'`` -- Runge-Kutta-Fehlberg (4,5)
145
+
146
+ - ``'rk2'`` -- embedded Runge-Kutta (2,3)
147
+
148
+ - ``'rk4'`` -- `4`-th order classical Runge-Kutta
149
+
150
+ - ``'rk8pd'`` -- Runge-Kutta Prince-Dormand (8,9)
151
+
152
+ - ``'rk2imp'`` -- implicit 2nd order Runge-Kutta at gaussian points
153
+
154
+ - ``'rk4imp'`` -- implicit `4`-th order Runge-Kutta at gaussian points
155
+
156
+ - ``'bsimp'`` -- implicit Burlisch-Stoer (requires jacobian)
157
+
158
+ - ``'gear1'`` -- M=1 implicit gear
159
+
160
+ - ``'gear2'`` -- M=2 implicit gear
161
+
162
+ The default algorithm is ``'rkf45'``. If you instead wanted to use
163
+ ``'bsimp'`` you would do::
164
+
165
+ sage: T.algorithm = "bsimp"
166
+
167
+ The user should supply initial conditions in ``y_0``. For example if
168
+ your initial conditions are `y_0=1, y_1=1`, do::
169
+
170
+ sage: T.y_0 = [1,1]
171
+
172
+ The actual solver is invoked by the method :meth:`ode_solve`. It
173
+ has arguments ``t_span``, ``y_0``, ``num_points``, ``params``.
174
+ ``y_0`` must be supplied either as an argument or above by
175
+ assignment. Params which are optional and only necessary if your
176
+ system uses ``params`` can be supplied to ``ode_solve`` or by
177
+ assignment.
178
+
179
+ ``t_span`` is the time interval on which to solve the ode. There
180
+ are two ways to specify ``t_span``:
181
+
182
+ * If ``num_points`` is not specified, then the sequence ``t_span``
183
+ is used as the time points for the solution. Note that the
184
+ first element ``t_span[0]`` is the initial time, where the
185
+ initial condition ``y_0`` is the specified solution, and
186
+ subsequent elements are the ones where the solution is computed.
187
+
188
+ * If ``num_points`` is specified and ``t_span`` is a sequence with
189
+ just 2 elements, then these are the starting and ending times,
190
+ and the solution will be computed at ``num_points`` equally
191
+ spaced points between ``t_span[0]`` and ``t_span[1]``. The
192
+ initial condition is also included in the output so that
193
+ ``num_points + 1`` total points are returned. E.g. if ``t_span
194
+ = [0.0, 1.0]`` and ``num_points = 10``, then solution is
195
+ returned at the 11 time points ``[0.0, 0.1, 0.2, 0.3, 0.4, 0.5,
196
+ 0.6, 0.7, 0.8, 0.9, 1.0]``.
197
+
198
+ (Note that if ``num_points`` is specified and ``t_span`` is not
199
+ length 2 then ``t_span`` are used as the time points and
200
+ ``num_points`` is ignored.)
201
+
202
+ Error is estimated via the expression ``D_i =
203
+ error_abs*s_i+error_rel*(a|y_i|+a_dydt*h*|y_i'|)``. The user can
204
+ specify
205
+
206
+ - ``error_abs`` (1e-10 by default),
207
+ - ``error_rel`` (1e-10 by default),
208
+ - ``a`` (1 by default),
209
+ - ``a_dydt`` (0 by default) and
210
+ - ``s_i`` (as ``scaling_abs`` which should be a tuple and is 1 in all
211
+ components by default).
212
+
213
+ If you specify one of ``a`` or ``a_dydt``
214
+ you must specify the other. You may specify ``a`` and ``a_dydt``
215
+ without ``scaling_abs`` (which will be taken =1 be default).
216
+ ``h`` is the initial step size, which is 1e-2 by default.
217
+
218
+ ``ode_solve`` solves the solution as a list of tuples of the form,
219
+ ``[ (t_0,[y_1,...,y_n]),(t_1,[y_1,...,y_n]),...,(t_n,[y_1,...,y_n])]``.
220
+
221
+ This data is stored in the variable solutions::
222
+
223
+ sage: T.solution # not tested
224
+
225
+ EXAMPLES:
226
+
227
+ Consider solving the Van der Pol oscillator `x''(t) +
228
+ ux'(t)(x(t)^2-1)+x(t)=0` between `t=0` and `t= 100`. As a first
229
+ order system it is `x'=y`, `y'=-x+uy(1-x^2)`. Let us take `u=10`
230
+ and use initial conditions `(x,y)=(1,0)` and use the Runge-Kutta
231
+ Prince-Dormand algorithm. ::
232
+
233
+ sage: def f_1(t, y, params):
234
+ ....: return [y[1], -y[0] - params[0]*y[1]*(y[0]**2-1.0)]
235
+
236
+ sage: def j_1(t, y, params):
237
+ ....: return [[0.0, 1.0],
238
+ ....: [-2.0*params[0]*y[0]*y[1] - 1.0, -params[0]*(y[0]*y[0]-1.0)],
239
+ ....: [0.0, 0.0]]
240
+
241
+ sage: T = ode_solver()
242
+ sage: T.algorithm = "rk8pd"
243
+ sage: T.function = f_1
244
+ sage: T.jacobian = j_1
245
+ sage: T.ode_solve(y_0=[1,0], t_span=[0,100], params=[10.0], num_points=1000)
246
+ sage: import tempfile
247
+ sage: with tempfile.NamedTemporaryFile(suffix='.png') as f: # needs sage.plot
248
+ ....: T.plot_solution(filename=f.name)
249
+
250
+ The solver line is equivalent to::
251
+
252
+ sage: T.ode_solve(y_0=[1,0], t_span=[x/10.0 for x in range(1000)], params=[10.0])
253
+
254
+ Let's try a system::
255
+
256
+ y_0'=y_1*y_2
257
+ y_1'=-y_0*y_2
258
+ y_2'=-.51*y_0*y_1
259
+
260
+ We will not use the jacobian this time and will change the
261
+ error tolerances. ::
262
+
263
+ sage: g_1 = lambda t,y: [y[1]*y[2], -y[0]*y[2], -0.51*y[0]*y[1]]
264
+ sage: T.function = g_1
265
+ sage: T.y_0 = [0,1,1]
266
+ sage: T.scale_abs = [1e-4, 1e-4, 1e-5]
267
+ sage: T.error_rel = 1e-4
268
+ sage: T.ode_solve(t_span=[0,12], num_points=100)
269
+
270
+ By default ``T.plot_solution()`` plots the `y_0`; to plot general `y_i`, use::
271
+
272
+ sage: with tempfile.NamedTemporaryFile(suffix='.png') as f: # needs sage.plot
273
+ ....: T.plot_solution(i=0, filename=f.name)
274
+ ....: T.plot_solution(i=1, filename=f.name)
275
+ ....: T.plot_solution(i=2, filename=f.name)
276
+
277
+ The method interpolate_solution will return a spline interpolation
278
+ through the points found by the solver. By default, `y_0` is
279
+ interpolated. You can interpolate `y_i` through the keyword
280
+ argument ``i``. ::
281
+
282
+ sage: f = T.interpolate_solution()
283
+ sage: plot(f,0,12).show() # needs sage.plot
284
+ sage: f = T.interpolate_solution(i=1)
285
+ sage: plot(f,0,12).show() # needs sage.plot
286
+ sage: f = T.interpolate_solution(i=2)
287
+ sage: plot(f,0,12).show() # needs sage.plot
288
+ sage: f = T.interpolate_solution()
289
+ sage: from math import pi
290
+ sage: f(pi)
291
+ 0.5379...
292
+
293
+ The solver attributes may also be set up using arguments to
294
+ ode_solver. The previous example can be rewritten as::
295
+
296
+ sage: T = ode_solver(g_1, y_0=[0,1,1], scale_abs=[1e-4,1e-4,1e-5],
297
+ ....: error_rel=1e-4, algorithm='rk8pd')
298
+ sage: T.ode_solve(t_span=[0,12], num_points=100)
299
+ sage: f = T.interpolate_solution()
300
+ sage: f(pi)
301
+ 0.5379...
302
+
303
+ Unfortunately because Python functions are used, this solver
304
+ is slow on systems that require many function evaluations. It
305
+ is possible to pass a compiled function by deriving from the
306
+ class :class:`ode_system` and overloading ``c_f`` and ``c_j`` with C
307
+ functions that specify the system. The following will work in the
308
+ notebook:
309
+
310
+ .. code-block:: cython
311
+
312
+ %cython
313
+ cimport sage.calculus.ode
314
+ import sage.calculus.ode
315
+ from sage.libs.gsl.all cimport *
316
+
317
+ cdef class van_der_pol(sage.calculus.ode.ode_system):
318
+ cdef int c_f(self, double t, double *y, double *dydt):
319
+ dydt[0]=y[1]
320
+ dydt[1]=-y[0]-1000*y[1]*(y[0]*y[0]-1)
321
+ return GSL_SUCCESS
322
+ cdef int c_j(self, double t, double *y, double *dfdy, double *dfdt):
323
+ dfdy[0]=0
324
+ dfdy[1]=1.0
325
+ dfdy[2]=-2.0*1000*y[0]*y[1]-1.0
326
+ dfdy[3]=-1000*(y[0]*y[0]-1.0)
327
+ dfdt[0]=0
328
+ dfdt[1]=0
329
+ return GSL_SUCCESS
330
+
331
+ After executing the above block of code you can do the
332
+ following (WARNING: the following is *not* automatically
333
+ doctested)::
334
+
335
+ sage: # not tested
336
+ sage: T = ode_solver()
337
+ sage: T.algorithm = "bsimp"
338
+ sage: vander = van_der_pol()
339
+ sage: T.function = vander
340
+ sage: T.ode_solve(y_0=[1, 0], t_span=[0, 2000],
341
+ ....: num_points=1000)
342
+ sage: from tempfile import NamedTemporaryFile
343
+ sage: with NamedTemporaryFile(suffix='.png') as f:
344
+ ....: T.plot_solution(i=0, filename=f.name)
345
+ """
346
+ def __init__(self, function=None, jacobian=None, h=1e-2, error_abs=1e-10,
347
+ error_rel=1e-10, a=False, a_dydt=False, scale_abs=False,
348
+ algorithm='rkf45', y_0=None, t_span=None, params=None):
349
+ self.function = function
350
+ self.jacobian = jacobian
351
+ self.h = h
352
+ self.error_abs = error_abs
353
+ self.error_rel = error_rel
354
+ self.a = a
355
+ self.a_dydt = a_dydt
356
+ self.scale_abs = scale_abs
357
+ self.algorithm = algorithm
358
+ self.y_0 = y_0
359
+ self.t_span = t_span
360
+ self.params = [] if params is None else params
361
+ self.solution = []
362
+
363
+ def __setattr__(self, name, value):
364
+ if hasattr(self, 'solution'):
365
+ object.__setattr__(self, 'solution', [])
366
+ object.__setattr__(self, name, value)
367
+
368
+ def interpolate_solution(self, i=0):
369
+ pts = [(t, y[i]) for t, y in self.solution]
370
+ return sage.calculus.interpolation.spline(pts)
371
+
372
+ def plot_solution(self, i=0, filename=None, interpolate=False, **kwds):
373
+ r"""
374
+ Plot a one dimensional projection of the solution.
375
+
376
+ INPUT:
377
+
378
+ - ``i`` -- nonnegative integer; composant of the projection
379
+
380
+ - ``filename`` -- string or ``None``; whether to plot the picture or
381
+ save it in a file
382
+
383
+ - ``interpolate`` -- whether to interpolate between the points of the
384
+ discretized solution
385
+
386
+ - additional keywords are passed to the graphics primitive
387
+
388
+ EXAMPLES::
389
+
390
+ sage: T = ode_solver()
391
+ sage: T.function = lambda t,y: [cos(y[0]) * sin(t)]
392
+ sage: T.jacobian = lambda t,y: [[-sin(y[0]) * sin(t)]]
393
+ sage: T.ode_solve(y_0=[1],t_span=[0,20],num_points=1000)
394
+ sage: T.plot_solution() # needs sage.plot
395
+
396
+ And with some options::
397
+
398
+ sage: T.plot_solution(color='red', axes_labels=["t", "x(t)"]) # needs sage.plot
399
+ """
400
+ if interpolate:
401
+ from sage.plot.line import line2d
402
+ pts = self.interpolate_solution(i)
403
+ G = line2d(pts, **kwds)
404
+ else:
405
+ pts = [(t, y[i]) for t, y in self.solution]
406
+ from sage.plot.point import point2d
407
+ G = point2d([(t, y[i]) for t, y in self.solution], **kwds)
408
+ if filename is None:
409
+ G.show()
410
+ else:
411
+ G.save(filename=filename)
412
+
413
+ def ode_solve(self, t_span=False, y_0=False, num_points=False, params=None):
414
+ cdef double h # step size
415
+ h = self.h
416
+ cdef int i
417
+ cdef int j
418
+ cdef int type
419
+ cdef int dim
420
+ cdef PyFunctionWrapper wrapper # struct to pass information into GSL C function
421
+ self.params = [] if params is None else params
422
+
423
+ if t_span:
424
+ self.t_span = t_span
425
+ if y_0:
426
+ self.y_0 = y_0
427
+
428
+ dim = len(self.y_0)
429
+ type = isinstance(self.function, ode_system)
430
+ if type == 0:
431
+ wrapper = PyFunctionWrapper()
432
+ if self.function is not None:
433
+ wrapper.the_function = self.function
434
+ else:
435
+ raise ValueError("ODE system not yet defined")
436
+ if self.jacobian is None:
437
+ wrapper.the_jacobian = None
438
+ else:
439
+ wrapper.the_jacobian = self.jacobian
440
+ if self.params == [] and len(sage_getargspec(wrapper.the_function)[0]) == 2:
441
+ wrapper.the_parameters = []
442
+ elif self.params == [] and len(sage_getargspec(wrapper.the_function)[0]) > 2:
443
+ raise ValueError("ODE system has a parameter but no parameters specified")
444
+ elif self.params != []:
445
+ wrapper.the_parameters = self.params
446
+ wrapper.y_n = dim
447
+
448
+ cdef double t
449
+ cdef double t_end
450
+ cdef double *y
451
+ cdef double * scale_abs_array
452
+ scale_abs_array=NULL
453
+
454
+ y = <double*> sig_malloc(sizeof(double) * dim)
455
+ if y == NULL:
456
+ raise MemoryError("error allocating memory")
457
+ result = []
458
+ v = [0] * dim
459
+ cdef gsl_odeiv_step_type * T
460
+
461
+ for i in range(dim): # copy initial conditions into C array
462
+ y[i] = self.y_0[i]
463
+
464
+ if self.algorithm == "rkf45":
465
+ T = gsl_odeiv_step_rkf45
466
+ elif self.algorithm == "rk2":
467
+ T = gsl_odeiv_step_rk2
468
+ elif self.algorithm == "rk4":
469
+ T = gsl_odeiv_step_rk4
470
+ elif self.algorithm == "rkck":
471
+ T = gsl_odeiv_step_rkck
472
+ elif self.algorithm == "rk8pd":
473
+ T = gsl_odeiv_step_rk8pd
474
+ elif self.algorithm == "rk2imp":
475
+ T = gsl_odeiv_step_rk2imp
476
+ elif self.algorithm == "rk4imp":
477
+ T = gsl_odeiv_step_rk4imp
478
+ elif self.algorithm == "bsimp":
479
+ T = gsl_odeiv_step_bsimp
480
+ if not type and self.jacobian is None:
481
+ raise TypeError("The jacobian must be provided for the implicit Burlisch-Stoer method")
482
+ elif self.algorithm == "gear1":
483
+ T = gsl_odeiv_step_gear1
484
+ elif self.algorithm == "gear2":
485
+ T = gsl_odeiv_step_gear2
486
+ else:
487
+ raise TypeError("algorithm not valid")
488
+
489
+ cdef gsl_odeiv_step * s
490
+ s = gsl_odeiv_step_alloc(T, dim)
491
+ if s == NULL:
492
+ sig_free(y)
493
+ raise MemoryError("error setting up solver")
494
+
495
+ cdef gsl_odeiv_control * c
496
+
497
+ if not self.a and not self.a_dydt:
498
+ c = gsl_odeiv_control_y_new(self.error_abs, self.error_rel)
499
+ elif self.a and self.a_dydt:
500
+ if not self.scale_abs:
501
+ c = gsl_odeiv_control_standard_new(self.error_abs, self.error_rel, self.a, self.a_dydt)
502
+ elif hasattr(self.scale_abs, '__len__'):
503
+ if len(self.scale_abs) == dim:
504
+ scale_abs_array = <double *> sig_malloc(dim * sizeof(double))
505
+ for i in range(dim):
506
+ scale_abs_array[i] = self.scale_abs[i]
507
+ c = gsl_odeiv_control_scaled_new(self.error_abs, self.error_rel, self.a, self.a_dydt, scale_abs_array, dim)
508
+
509
+ if c == NULL:
510
+ gsl_odeiv_control_free(c)
511
+ gsl_odeiv_step_free(s)
512
+ sig_free(y)
513
+ sig_free(scale_abs_array)
514
+ raise MemoryError("error setting up solver")
515
+
516
+ cdef gsl_odeiv_evolve * e
517
+ e = gsl_odeiv_evolve_alloc(dim)
518
+
519
+ if e == NULL:
520
+ gsl_odeiv_control_free(c)
521
+ gsl_odeiv_step_free(s)
522
+ sig_free(y)
523
+ sig_free(scale_abs_array)
524
+ raise MemoryError("error setting up solver")
525
+
526
+ cdef gsl_odeiv_system sys
527
+ if type: # The user has passed a class with a compiled function, use that for the system
528
+ sys.function = c_f_compiled
529
+ sys.jacobian = c_jac_compiled
530
+ # (<ode_system>self.function).the_parameters = self.params
531
+ sys.params = <void *> self.function
532
+ else: # The user passed a python function.
533
+ sys.function = c_f
534
+ sys.jacobian = c_jac
535
+ sys.params = <void *> wrapper
536
+ sys.dimension = dim
537
+
538
+ cdef int status
539
+ import copy
540
+ cdef int n
541
+
542
+ if len(self.t_span) == 2 and num_points:
543
+ try:
544
+ n = num_points
545
+ except TypeError:
546
+ gsl_odeiv_evolve_free(e)
547
+ gsl_odeiv_control_free(c)
548
+ gsl_odeiv_step_free(s)
549
+ sig_free(y)
550
+ sig_free(scale_abs_array)
551
+ raise TypeError("numpoints must be integer")
552
+ result.append((self.t_span[0], self.y_0))
553
+ delta = (self.t_span[1] - self.t_span[0]) / (1.0 * num_points)
554
+ t = self.t_span[0]
555
+ t_end = self.t_span[0] + delta
556
+ for i in range(1, n + 1):
557
+ while t < t_end:
558
+ try:
559
+ sig_on()
560
+ status = gsl_odeiv_evolve_apply(e, c, s, &sys, &t, t_end, &h, y)
561
+ sig_off()
562
+ if status != GSL_SUCCESS:
563
+ raise RuntimeError
564
+ except RuntimeError:
565
+ gsl_odeiv_evolve_free(e)
566
+ gsl_odeiv_control_free(c)
567
+ gsl_odeiv_step_free(s)
568
+ sig_free(y)
569
+ sig_free(scale_abs_array)
570
+ raise ValueError("error solving")
571
+
572
+ for j in range(dim):
573
+ v[j] = <double> y[j]
574
+ result.append((t, copy.copy(v)))
575
+ t = t_end
576
+ t_end = t + delta
577
+
578
+ else:
579
+ n = len(self.t_span)
580
+ result.append((self.t_span[0], self.y_0))
581
+ t = self.t_span[0]
582
+ for i in range(1, n):
583
+ t_end = self.t_span[i]
584
+ while t < t_end:
585
+ try:
586
+ sig_on()
587
+ status = gsl_odeiv_evolve_apply(e, c, s, &sys, &t, t_end, &h, y)
588
+ sig_off()
589
+ if status != GSL_SUCCESS:
590
+ raise RuntimeError
591
+ except RuntimeError:
592
+ gsl_odeiv_evolve_free(e)
593
+ gsl_odeiv_control_free(c)
594
+ gsl_odeiv_step_free(s)
595
+ sig_free(y)
596
+ sig_free(scale_abs_array)
597
+ raise ValueError("error solving")
598
+
599
+ for j in range(dim):
600
+ v[j] = <double> y[j]
601
+ result.append((t, copy.copy(v)))
602
+
603
+ t = self.t_span[i]
604
+
605
+ gsl_odeiv_evolve_free(e)
606
+ gsl_odeiv_control_free(c)
607
+ gsl_odeiv_step_free(s)
608
+ sig_free(y)
609
+ sig_free(scale_abs_array)
610
+ self.solution = result