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.
- passagemath_categories-10.6.32.dist-info/METADATA +156 -0
- passagemath_categories-10.6.32.dist-info/RECORD +719 -0
- passagemath_categories-10.6.32.dist-info/WHEEL +5 -0
- passagemath_categories-10.6.32.dist-info/top_level.txt +2 -0
- passagemath_categories.libs/libgcc_s-2d945d6c.so.1 +0 -0
- passagemath_categories.libs/libgmp-28992bcb.so.10.5.0 +0 -0
- passagemath_categories.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
- sage/all__sagemath_categories.py +28 -0
- sage/arith/all.py +38 -0
- sage/arith/constants.pxd +27 -0
- sage/arith/functions.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/functions.pxd +4 -0
- sage/arith/functions.pyx +221 -0
- sage/arith/misc.py +6552 -0
- sage/arith/multi_modular.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/multi_modular.pxd +39 -0
- sage/arith/multi_modular.pyx +994 -0
- sage/arith/rational_reconstruction.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/rational_reconstruction.pxd +4 -0
- sage/arith/rational_reconstruction.pyx +115 -0
- sage/arith/srange.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/srange.pyx +571 -0
- sage/calculus/all__sagemath_categories.py +2 -0
- sage/calculus/functional.py +481 -0
- sage/calculus/functions.py +151 -0
- sage/categories/additive_groups.py +73 -0
- sage/categories/additive_magmas.py +1044 -0
- sage/categories/additive_monoids.py +114 -0
- sage/categories/additive_semigroups.py +184 -0
- sage/categories/affine_weyl_groups.py +238 -0
- sage/categories/algebra_ideals.py +95 -0
- sage/categories/algebra_modules.py +96 -0
- sage/categories/algebras.py +349 -0
- sage/categories/algebras_with_basis.py +377 -0
- sage/categories/all.py +160 -0
- sage/categories/aperiodic_semigroups.py +29 -0
- sage/categories/associative_algebras.py +47 -0
- sage/categories/bialgebras.py +101 -0
- sage/categories/bialgebras_with_basis.py +414 -0
- sage/categories/bimodules.py +206 -0
- sage/categories/chain_complexes.py +268 -0
- sage/categories/classical_crystals.py +480 -0
- sage/categories/coalgebras.py +405 -0
- sage/categories/coalgebras_with_basis.py +232 -0
- sage/categories/coercion_methods.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/categories/coercion_methods.pyx +52 -0
- sage/categories/commutative_additive_groups.py +104 -0
- sage/categories/commutative_additive_monoids.py +45 -0
- sage/categories/commutative_additive_semigroups.py +48 -0
- sage/categories/commutative_algebra_ideals.py +87 -0
- sage/categories/commutative_algebras.py +94 -0
- sage/categories/commutative_ring_ideals.py +58 -0
- sage/categories/commutative_rings.py +736 -0
- sage/categories/complete_discrete_valuation.py +293 -0
- sage/categories/complex_reflection_groups.py +145 -0
- sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
- sage/categories/coxeter_group_algebras.py +186 -0
- sage/categories/coxeter_groups.py +3402 -0
- sage/categories/crystals.py +2628 -0
- sage/categories/cw_complexes.py +216 -0
- sage/categories/dedekind_domains.py +137 -0
- sage/categories/discrete_valuation.py +325 -0
- sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
- sage/categories/division_rings.py +114 -0
- sage/categories/domains.py +95 -0
- sage/categories/drinfeld_modules.py +789 -0
- sage/categories/dual.py +42 -0
- sage/categories/enumerated_sets.py +1146 -0
- sage/categories/euclidean_domains.py +271 -0
- sage/categories/examples/algebras_with_basis.py +102 -0
- sage/categories/examples/all.py +1 -0
- sage/categories/examples/commutative_additive_monoids.py +130 -0
- sage/categories/examples/commutative_additive_semigroups.py +199 -0
- sage/categories/examples/coxeter_groups.py +8 -0
- sage/categories/examples/crystals.py +236 -0
- sage/categories/examples/cw_complexes.py +163 -0
- sage/categories/examples/facade_sets.py +187 -0
- sage/categories/examples/filtered_algebras_with_basis.py +204 -0
- sage/categories/examples/filtered_modules_with_basis.py +154 -0
- sage/categories/examples/finite_coxeter_groups.py +252 -0
- sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
- sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
- sage/categories/examples/finite_enumerated_sets.py +208 -0
- sage/categories/examples/finite_monoids.py +150 -0
- sage/categories/examples/finite_semigroups.py +190 -0
- sage/categories/examples/finite_weyl_groups.py +191 -0
- sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
- sage/categories/examples/graded_modules_with_basis.py +168 -0
- sage/categories/examples/graphs.py +122 -0
- sage/categories/examples/hopf_algebras_with_basis.py +145 -0
- sage/categories/examples/infinite_enumerated_sets.py +190 -0
- sage/categories/examples/lie_algebras.py +352 -0
- sage/categories/examples/lie_algebras_with_basis.py +196 -0
- sage/categories/examples/magmas.py +162 -0
- sage/categories/examples/manifolds.py +94 -0
- sage/categories/examples/monoids.py +144 -0
- sage/categories/examples/posets.py +178 -0
- sage/categories/examples/semigroups.py +580 -0
- sage/categories/examples/semigroups_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/categories/examples/semigroups_cython.pyx +221 -0
- sage/categories/examples/semirings.py +249 -0
- sage/categories/examples/sets_cat.py +706 -0
- sage/categories/examples/sets_with_grading.py +101 -0
- sage/categories/examples/with_realizations.py +542 -0
- sage/categories/fields.py +991 -0
- sage/categories/filtered_algebras.py +63 -0
- sage/categories/filtered_algebras_with_basis.py +548 -0
- sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
- sage/categories/filtered_modules.py +210 -0
- sage/categories/filtered_modules_with_basis.py +1209 -0
- sage/categories/finite_complex_reflection_groups.py +1506 -0
- sage/categories/finite_coxeter_groups.py +1138 -0
- sage/categories/finite_crystals.py +103 -0
- sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
- sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
- sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
- sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
- sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
- sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
- sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
- sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
- sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
- sage/categories/finite_enumerated_sets.py +769 -0
- sage/categories/finite_fields.py +252 -0
- sage/categories/finite_groups.py +256 -0
- sage/categories/finite_lattice_posets.py +242 -0
- sage/categories/finite_monoids.py +316 -0
- sage/categories/finite_permutation_groups.py +339 -0
- sage/categories/finite_posets.py +1994 -0
- sage/categories/finite_semigroups.py +136 -0
- sage/categories/finite_sets.py +93 -0
- sage/categories/finite_weyl_groups.py +39 -0
- sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
- sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
- sage/categories/finitely_generated_magmas.py +57 -0
- sage/categories/finitely_generated_semigroups.py +214 -0
- sage/categories/function_fields.py +76 -0
- sage/categories/g_sets.py +77 -0
- sage/categories/gcd_domains.py +65 -0
- sage/categories/generalized_coxeter_groups.py +94 -0
- sage/categories/graded_algebras.py +85 -0
- sage/categories/graded_algebras_with_basis.py +258 -0
- sage/categories/graded_bialgebras.py +32 -0
- sage/categories/graded_bialgebras_with_basis.py +32 -0
- sage/categories/graded_coalgebras.py +65 -0
- sage/categories/graded_coalgebras_with_basis.py +51 -0
- sage/categories/graded_hopf_algebras.py +41 -0
- sage/categories/graded_hopf_algebras_with_basis.py +169 -0
- sage/categories/graded_lie_algebras.py +91 -0
- sage/categories/graded_lie_algebras_with_basis.py +44 -0
- sage/categories/graded_lie_conformal_algebras.py +74 -0
- sage/categories/graded_modules.py +133 -0
- sage/categories/graded_modules_with_basis.py +329 -0
- sage/categories/graphs.py +138 -0
- sage/categories/group_algebras.py +430 -0
- sage/categories/groupoid.py +94 -0
- sage/categories/groups.py +667 -0
- sage/categories/h_trivial_semigroups.py +64 -0
- sage/categories/hecke_modules.py +185 -0
- sage/categories/highest_weight_crystals.py +980 -0
- sage/categories/hopf_algebras.py +219 -0
- sage/categories/hopf_algebras_with_basis.py +309 -0
- sage/categories/infinite_enumerated_sets.py +115 -0
- sage/categories/integral_domains.py +203 -0
- sage/categories/j_trivial_semigroups.py +29 -0
- sage/categories/kac_moody_algebras.py +82 -0
- sage/categories/kahler_algebras.py +203 -0
- sage/categories/l_trivial_semigroups.py +63 -0
- sage/categories/lambda_bracket_algebras.py +280 -0
- sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
- sage/categories/lattice_posets.py +89 -0
- sage/categories/left_modules.py +49 -0
- sage/categories/lie_algebras.py +1070 -0
- sage/categories/lie_algebras_with_basis.py +261 -0
- sage/categories/lie_conformal_algebras.py +350 -0
- sage/categories/lie_conformal_algebras_with_basis.py +147 -0
- sage/categories/lie_groups.py +73 -0
- sage/categories/loop_crystals.py +1290 -0
- sage/categories/magmas.py +1189 -0
- sage/categories/magmas_and_additive_magmas.py +149 -0
- sage/categories/magmatic_algebras.py +365 -0
- sage/categories/manifolds.py +352 -0
- sage/categories/matrix_algebras.py +40 -0
- sage/categories/metric_spaces.py +387 -0
- sage/categories/modular_abelian_varieties.py +78 -0
- sage/categories/modules.py +989 -0
- sage/categories/modules_with_basis.py +2794 -0
- sage/categories/monoid_algebras.py +38 -0
- sage/categories/monoids.py +739 -0
- sage/categories/noetherian_rings.py +87 -0
- sage/categories/number_fields.py +242 -0
- sage/categories/ore_modules.py +189 -0
- sage/categories/partially_ordered_monoids.py +49 -0
- sage/categories/permutation_groups.py +63 -0
- sage/categories/pointed_sets.py +42 -0
- sage/categories/polyhedra.py +74 -0
- sage/categories/poor_man_map.py +270 -0
- sage/categories/posets.py +722 -0
- sage/categories/principal_ideal_domains.py +270 -0
- sage/categories/quantum_group_representations.py +543 -0
- sage/categories/quotient_fields.py +728 -0
- sage/categories/r_trivial_semigroups.py +45 -0
- sage/categories/regular_crystals.py +898 -0
- sage/categories/regular_supercrystals.py +170 -0
- sage/categories/right_modules.py +49 -0
- sage/categories/ring_ideals.py +74 -0
- sage/categories/rings.py +1904 -0
- sage/categories/rngs.py +175 -0
- sage/categories/schemes.py +393 -0
- sage/categories/semigroups.py +1060 -0
- sage/categories/semirings.py +71 -0
- sage/categories/semisimple_algebras.py +114 -0
- sage/categories/sets_with_grading.py +235 -0
- sage/categories/shephard_groups.py +43 -0
- sage/categories/signed_tensor.py +120 -0
- sage/categories/simplicial_complexes.py +134 -0
- sage/categories/simplicial_sets.py +1206 -0
- sage/categories/super_algebras.py +149 -0
- sage/categories/super_algebras_with_basis.py +144 -0
- sage/categories/super_hopf_algebras_with_basis.py +126 -0
- sage/categories/super_lie_conformal_algebras.py +193 -0
- sage/categories/super_modules.py +229 -0
- sage/categories/super_modules_with_basis.py +193 -0
- sage/categories/supercommutative_algebras.py +99 -0
- sage/categories/supercrystals.py +406 -0
- sage/categories/tensor.py +110 -0
- sage/categories/topological_spaces.py +170 -0
- sage/categories/triangular_kac_moody_algebras.py +439 -0
- sage/categories/tutorial.py +58 -0
- sage/categories/unique_factorization_domains.py +318 -0
- sage/categories/unital_algebras.py +426 -0
- sage/categories/vector_bundles.py +159 -0
- sage/categories/vector_spaces.py +357 -0
- sage/categories/weyl_groups.py +853 -0
- sage/combinat/all__sagemath_categories.py +34 -0
- sage/combinat/backtrack.py +180 -0
- sage/combinat/combinat.py +2269 -0
- sage/combinat/combinat_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/combinat_cython.pxd +6 -0
- sage/combinat/combinat_cython.pyx +390 -0
- sage/combinat/combination.py +796 -0
- sage/combinat/combinatorial_map.py +416 -0
- sage/combinat/composition.py +2192 -0
- sage/combinat/dlx.py +510 -0
- sage/combinat/integer_lists/__init__.py +7 -0
- sage/combinat/integer_lists/base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/integer_lists/base.pxd +16 -0
- sage/combinat/integer_lists/base.pyx +713 -0
- sage/combinat/integer_lists/invlex.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/integer_lists/invlex.pxd +4 -0
- sage/combinat/integer_lists/invlex.pyx +1650 -0
- sage/combinat/integer_lists/lists.py +328 -0
- sage/combinat/integer_lists/nn.py +48 -0
- sage/combinat/integer_vector.py +1818 -0
- sage/combinat/integer_vector_weighted.py +413 -0
- sage/combinat/matrices/all__sagemath_categories.py +5 -0
- sage/combinat/matrices/dancing_links.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/matrices/dancing_links.pyx +1159 -0
- sage/combinat/matrices/dancing_links_c.h +380 -0
- sage/combinat/matrices/dlxcpp.py +136 -0
- sage/combinat/partition.py +10070 -0
- sage/combinat/partitions.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/partitions.pyx +743 -0
- sage/combinat/permutation.py +10168 -0
- sage/combinat/permutation_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/permutation_cython.pxd +11 -0
- sage/combinat/permutation_cython.pyx +407 -0
- sage/combinat/q_analogues.py +1090 -0
- sage/combinat/ranker.py +268 -0
- sage/combinat/subset.py +1561 -0
- sage/combinat/subsets_hereditary.py +202 -0
- sage/combinat/subsets_pairwise.py +184 -0
- sage/combinat/tools.py +63 -0
- sage/combinat/tuple.py +348 -0
- sage/data_structures/all.py +2 -0
- sage/data_structures/all__sagemath_categories.py +2 -0
- sage/data_structures/binary_matrix.pxd +138 -0
- sage/data_structures/binary_search.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/binary_search.pxd +3 -0
- sage/data_structures/binary_search.pyx +66 -0
- sage/data_structures/bitset.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/bitset.pxd +40 -0
- sage/data_structures/bitset.pyx +2385 -0
- sage/data_structures/bitset_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/bitset_base.pxd +926 -0
- sage/data_structures/bitset_base.pyx +117 -0
- sage/data_structures/bitset_intrinsics.h +487 -0
- sage/data_structures/blas_dict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/blas_dict.pxd +12 -0
- sage/data_structures/blas_dict.pyx +469 -0
- sage/data_structures/list_of_pairs.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/list_of_pairs.pxd +16 -0
- sage/data_structures/list_of_pairs.pyx +122 -0
- sage/data_structures/mutable_poset.py +3312 -0
- sage/data_structures/pairing_heap.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/pairing_heap.h +346 -0
- sage/data_structures/pairing_heap.pxd +88 -0
- sage/data_structures/pairing_heap.pyx +1464 -0
- sage/data_structures/sparse_bitset.pxd +62 -0
- sage/data_structures/stream.py +5070 -0
- sage/databases/all__sagemath_categories.py +7 -0
- sage/databases/sql_db.py +2236 -0
- sage/ext/all__sagemath_categories.py +3 -0
- sage/ext/fast_callable.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/fast_callable.pxd +4 -0
- sage/ext/fast_callable.pyx +2746 -0
- sage/ext/fast_eval.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/fast_eval.pxd +1 -0
- sage/ext/fast_eval.pyx +102 -0
- sage/ext/interpreters/__init__.py +1 -0
- sage/ext/interpreters/all__sagemath_categories.py +2 -0
- sage/ext/interpreters/wrapper_el.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_el.pxd +18 -0
- sage/ext/interpreters/wrapper_el.pyx +148 -0
- sage/ext/interpreters/wrapper_py.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_py.pxd +17 -0
- sage/ext/interpreters/wrapper_py.pyx +133 -0
- sage/functions/airy.py +937 -0
- sage/functions/all.py +97 -0
- sage/functions/bessel.py +2102 -0
- sage/functions/error.py +784 -0
- sage/functions/exp_integral.py +1529 -0
- sage/functions/gamma.py +1087 -0
- sage/functions/generalized.py +672 -0
- sage/functions/hyperbolic.py +747 -0
- sage/functions/hypergeometric.py +1156 -0
- sage/functions/jacobi.py +1705 -0
- sage/functions/log.py +1402 -0
- sage/functions/min_max.py +338 -0
- sage/functions/orthogonal_polys.py +3106 -0
- sage/functions/other.py +2303 -0
- sage/functions/piecewise.py +1505 -0
- sage/functions/prime_pi.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/functions/prime_pi.pyx +262 -0
- sage/functions/special.py +1212 -0
- sage/functions/spike_function.py +278 -0
- sage/functions/transcendental.py +690 -0
- sage/functions/trig.py +1062 -0
- sage/functions/wigner.py +726 -0
- sage/geometry/abc.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/geometry/abc.pyx +82 -0
- sage/geometry/all__sagemath_categories.py +1 -0
- sage/groups/all__sagemath_categories.py +11 -0
- sage/groups/generic.py +1733 -0
- sage/groups/groups_catalog.py +113 -0
- sage/groups/perm_gps/all__sagemath_categories.py +1 -0
- sage/groups/perm_gps/partn_ref/all.py +1 -0
- sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
- sage/groups/perm_gps/partn_ref/data_structures.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
- sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
- sage/groups/perm_gps/partn_ref/double_coset.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
- sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
- sage/groups/perm_gps/partn_ref/refinement_python.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
- sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
- sage/interfaces/abc.py +140 -0
- sage/interfaces/all.py +58 -0
- sage/interfaces/all__sagemath_categories.py +1 -0
- sage/interfaces/expect.py +1643 -0
- sage/interfaces/interface.py +1682 -0
- sage/interfaces/process.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/interfaces/process.pxd +5 -0
- sage/interfaces/process.pyx +288 -0
- sage/interfaces/quit.py +167 -0
- sage/interfaces/sage0.py +604 -0
- sage/interfaces/sagespawn.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/interfaces/sagespawn.pyx +308 -0
- sage/interfaces/tab_completion.py +101 -0
- sage/misc/all__sagemath_categories.py +78 -0
- sage/misc/allocator.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/allocator.pxd +6 -0
- sage/misc/allocator.pyx +47 -0
- sage/misc/binary_tree.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/binary_tree.pxd +29 -0
- sage/misc/binary_tree.pyx +537 -0
- sage/misc/callable_dict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/callable_dict.pyx +89 -0
- sage/misc/citation.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/citation.pyx +159 -0
- sage/misc/converting_dict.py +293 -0
- sage/misc/defaults.py +129 -0
- sage/misc/derivative.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/derivative.pyx +223 -0
- sage/misc/functional.py +2005 -0
- sage/misc/html.py +589 -0
- sage/misc/latex.py +2673 -0
- sage/misc/latex_macros.py +236 -0
- sage/misc/latex_standalone.py +1833 -0
- sage/misc/map_threaded.py +38 -0
- sage/misc/mathml.py +76 -0
- sage/misc/method_decorator.py +88 -0
- sage/misc/mrange.py +755 -0
- sage/misc/multireplace.py +41 -0
- sage/misc/object_multiplexer.py +92 -0
- sage/misc/parser.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/parser.pyx +1107 -0
- sage/misc/random_testing.py +264 -0
- sage/misc/rest_index_of_methods.py +377 -0
- sage/misc/search.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/search.pxd +2 -0
- sage/misc/search.pyx +68 -0
- sage/misc/stopgap.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/stopgap.pyx +95 -0
- sage/misc/table.py +853 -0
- sage/monoids/all__sagemath_categories.py +1 -0
- sage/monoids/indexed_free_monoid.py +1071 -0
- sage/monoids/monoid.py +82 -0
- sage/numerical/all__sagemath_categories.py +1 -0
- sage/numerical/backends/all__sagemath_categories.py +1 -0
- sage/numerical/backends/generic_backend.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/numerical/backends/generic_backend.pxd +61 -0
- sage/numerical/backends/generic_backend.pyx +1893 -0
- sage/numerical/backends/generic_sdp_backend.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/numerical/backends/generic_sdp_backend.pxd +38 -0
- sage/numerical/backends/generic_sdp_backend.pyx +755 -0
- sage/parallel/all.py +6 -0
- sage/parallel/decorate.py +575 -0
- sage/parallel/map_reduce.py +1997 -0
- sage/parallel/multiprocessing_sage.py +76 -0
- sage/parallel/ncpus.py +35 -0
- sage/parallel/parallelism.py +364 -0
- sage/parallel/reference.py +47 -0
- sage/parallel/use_fork.py +333 -0
- sage/rings/abc.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/abc.pxd +31 -0
- sage/rings/abc.pyx +526 -0
- sage/rings/algebraic_closure_finite_field.py +1154 -0
- sage/rings/all__sagemath_categories.py +91 -0
- sage/rings/big_oh.py +227 -0
- sage/rings/continued_fraction.py +2754 -0
- sage/rings/continued_fraction_gosper.py +220 -0
- sage/rings/factorint.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/factorint.pyx +295 -0
- sage/rings/fast_arith.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/fast_arith.pxd +21 -0
- sage/rings/fast_arith.pyx +535 -0
- sage/rings/finite_rings/all__sagemath_categories.py +9 -0
- sage/rings/finite_rings/conway_polynomials.py +542 -0
- sage/rings/finite_rings/element_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/element_base.pxd +12 -0
- sage/rings/finite_rings/element_base.pyx +1176 -0
- sage/rings/finite_rings/finite_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/finite_field_base.pxd +7 -0
- sage/rings/finite_rings/finite_field_base.pyx +2171 -0
- sage/rings/finite_rings/finite_field_constructor.py +827 -0
- sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
- sage/rings/finite_rings/galois_group.py +154 -0
- sage/rings/finite_rings/hom_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/hom_finite_field.pxd +23 -0
- sage/rings/finite_rings/hom_finite_field.pyx +856 -0
- sage/rings/finite_rings/hom_prime_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
- sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
- sage/rings/finite_rings/homset.py +357 -0
- sage/rings/finite_rings/integer_mod.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/integer_mod.pxd +56 -0
- sage/rings/finite_rings/integer_mod.pyx +4586 -0
- sage/rings/finite_rings/integer_mod_limits.h +11 -0
- sage/rings/finite_rings/integer_mod_ring.py +2044 -0
- sage/rings/finite_rings/residue_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/residue_field.pxd +30 -0
- sage/rings/finite_rings/residue_field.pyx +1811 -0
- sage/rings/finite_rings/stdint.pxd +19 -0
- sage/rings/fraction_field.py +1452 -0
- sage/rings/fraction_field_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/fraction_field_element.pyx +1357 -0
- sage/rings/function_field/all.py +7 -0
- sage/rings/function_field/all__sagemath_categories.py +2 -0
- sage/rings/function_field/constructor.py +218 -0
- sage/rings/function_field/element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/element.pxd +11 -0
- sage/rings/function_field/element.pyx +1008 -0
- sage/rings/function_field/element_rational.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/element_rational.pyx +513 -0
- sage/rings/function_field/extensions.py +230 -0
- sage/rings/function_field/function_field.py +1468 -0
- sage/rings/function_field/function_field_rational.py +1005 -0
- sage/rings/function_field/ideal.py +1155 -0
- sage/rings/function_field/ideal_rational.py +629 -0
- sage/rings/function_field/jacobian_base.py +826 -0
- sage/rings/function_field/jacobian_hess.py +1053 -0
- sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
- sage/rings/function_field/maps.py +1039 -0
- sage/rings/function_field/order.py +281 -0
- sage/rings/function_field/order_basis.py +586 -0
- sage/rings/function_field/order_rational.py +576 -0
- sage/rings/function_field/place.py +426 -0
- sage/rings/function_field/place_rational.py +181 -0
- sage/rings/generic.py +320 -0
- sage/rings/homset.py +332 -0
- sage/rings/ideal.py +1885 -0
- sage/rings/ideal_monoid.py +215 -0
- sage/rings/infinity.py +1890 -0
- sage/rings/integer.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/integer.pxd +45 -0
- sage/rings/integer.pyx +7874 -0
- sage/rings/integer_ring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/integer_ring.pxd +8 -0
- sage/rings/integer_ring.pyx +1693 -0
- sage/rings/laurent_series_ring.py +931 -0
- sage/rings/laurent_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/laurent_series_ring_element.pxd +11 -0
- sage/rings/laurent_series_ring_element.pyx +1927 -0
- sage/rings/lazy_series.py +7815 -0
- sage/rings/lazy_series_ring.py +4356 -0
- sage/rings/localization.py +1043 -0
- sage/rings/morphism.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/morphism.pxd +39 -0
- sage/rings/morphism.pyx +3299 -0
- sage/rings/multi_power_series_ring.py +1145 -0
- sage/rings/multi_power_series_ring_element.py +2184 -0
- sage/rings/noncommutative_ideals.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/noncommutative_ideals.pyx +423 -0
- sage/rings/number_field/all__sagemath_categories.py +1 -0
- sage/rings/number_field/number_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/number_field/number_field_base.pxd +8 -0
- sage/rings/number_field/number_field_base.pyx +507 -0
- sage/rings/number_field/number_field_element_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/number_field/number_field_element_base.pxd +6 -0
- sage/rings/number_field/number_field_element_base.pyx +36 -0
- sage/rings/number_field/number_field_ideal.py +3550 -0
- sage/rings/padics/all__sagemath_categories.py +4 -0
- sage/rings/padics/local_generic.py +1670 -0
- sage/rings/padics/local_generic_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/padics/local_generic_element.pxd +5 -0
- sage/rings/padics/local_generic_element.pyx +1017 -0
- sage/rings/padics/misc.py +256 -0
- sage/rings/padics/padic_generic.py +1911 -0
- sage/rings/padics/pow_computer.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/padics/pow_computer.pxd +38 -0
- sage/rings/padics/pow_computer.pyx +671 -0
- sage/rings/padics/precision_error.py +24 -0
- sage/rings/polynomial/all__sagemath_categories.py +25 -0
- sage/rings/polynomial/commutative_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/commutative_polynomial.pxd +6 -0
- sage/rings/polynomial/commutative_polynomial.pyx +24 -0
- sage/rings/polynomial/cyclotomic.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/cyclotomic.pyx +404 -0
- sage/rings/polynomial/flatten.py +711 -0
- sage/rings/polynomial/ideal.py +102 -0
- sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
- sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
- sage/rings/polynomial/laurent_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/laurent_polynomial.pxd +18 -0
- sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
- sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
- sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
- sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
- sage/rings/polynomial/multi_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/multi_polynomial.pxd +12 -0
- sage/rings/polynomial/multi_polynomial.pyx +3082 -0
- sage/rings/polynomial/multi_polynomial_element.py +2570 -0
- sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
- sage/rings/polynomial/multi_polynomial_ring.py +947 -0
- sage/rings/polynomial/multi_polynomial_ring_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
- sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
- sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
- sage/rings/polynomial/polydict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polydict.pxd +45 -0
- sage/rings/polynomial/polydict.pyx +2701 -0
- sage/rings/polynomial/polynomial_compiled.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_compiled.pxd +59 -0
- sage/rings/polynomial/polynomial_compiled.pyx +509 -0
- sage/rings/polynomial/polynomial_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_element.pxd +64 -0
- sage/rings/polynomial/polynomial_element.pyx +13255 -0
- sage/rings/polynomial/polynomial_element_generic.py +1637 -0
- sage/rings/polynomial/polynomial_fateman.py +97 -0
- sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
- sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
- sage/rings/polynomial/polynomial_ring.py +3784 -0
- sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
- sage/rings/polynomial/polynomial_singular_interface.py +549 -0
- sage/rings/polynomial/symmetric_ideal.py +989 -0
- sage/rings/polynomial/symmetric_reduction.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/symmetric_reduction.pxd +8 -0
- sage/rings/polynomial/symmetric_reduction.pyx +669 -0
- sage/rings/polynomial/term_order.py +2279 -0
- sage/rings/polynomial/toy_buchberger.py +449 -0
- sage/rings/polynomial/toy_d_basis.py +387 -0
- sage/rings/polynomial/toy_variety.py +362 -0
- sage/rings/power_series_mpoly.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_mpoly.pxd +9 -0
- sage/rings/power_series_mpoly.pyx +161 -0
- sage/rings/power_series_poly.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_poly.pxd +10 -0
- sage/rings/power_series_poly.pyx +1317 -0
- sage/rings/power_series_ring.py +1441 -0
- sage/rings/power_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_ring_element.pxd +12 -0
- sage/rings/power_series_ring_element.pyx +3028 -0
- sage/rings/puiseux_series_ring.py +487 -0
- sage/rings/puiseux_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/puiseux_series_ring_element.pxd +7 -0
- sage/rings/puiseux_series_ring_element.pyx +1055 -0
- sage/rings/qqbar_decorators.py +167 -0
- sage/rings/quotient_ring.py +1598 -0
- sage/rings/quotient_ring_element.py +979 -0
- sage/rings/rational.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/rational.pxd +20 -0
- sage/rings/rational.pyx +4284 -0
- sage/rings/rational_field.py +1730 -0
- sage/rings/real_double.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/real_double.pxd +16 -0
- sage/rings/real_double.pyx +2218 -0
- sage/rings/real_lazy.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/real_lazy.pxd +30 -0
- sage/rings/real_lazy.pyx +1773 -0
- sage/rings/ring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/ring.pxd +30 -0
- sage/rings/ring.pyx +850 -0
- sage/rings/semirings/all.py +3 -0
- sage/rings/semirings/non_negative_integer_semiring.py +107 -0
- sage/rings/semirings/tropical_mpolynomial.py +972 -0
- sage/rings/semirings/tropical_polynomial.py +997 -0
- sage/rings/semirings/tropical_semiring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/semirings/tropical_semiring.pyx +676 -0
- sage/rings/semirings/tropical_variety.py +1701 -0
- sage/rings/sum_of_squares.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/sum_of_squares.pxd +3 -0
- sage/rings/sum_of_squares.pyx +336 -0
- sage/rings/tests.py +504 -0
- sage/schemes/affine/affine_homset.py +508 -0
- sage/schemes/affine/affine_morphism.py +1574 -0
- sage/schemes/affine/affine_point.py +460 -0
- sage/schemes/affine/affine_rational_point.py +308 -0
- sage/schemes/affine/affine_space.py +1264 -0
- sage/schemes/affine/affine_subscheme.py +592 -0
- sage/schemes/affine/all.py +25 -0
- sage/schemes/all__sagemath_categories.py +5 -0
- sage/schemes/generic/algebraic_scheme.py +2092 -0
- sage/schemes/generic/all.py +5 -0
- sage/schemes/generic/ambient_space.py +400 -0
- sage/schemes/generic/divisor.py +465 -0
- sage/schemes/generic/divisor_group.py +313 -0
- sage/schemes/generic/glue.py +84 -0
- sage/schemes/generic/homset.py +820 -0
- sage/schemes/generic/hypersurface.py +234 -0
- sage/schemes/generic/morphism.py +2107 -0
- sage/schemes/generic/point.py +237 -0
- sage/schemes/generic/scheme.py +1190 -0
- sage/schemes/generic/spec.py +199 -0
- sage/schemes/product_projective/all.py +6 -0
- sage/schemes/product_projective/homset.py +236 -0
- sage/schemes/product_projective/morphism.py +517 -0
- sage/schemes/product_projective/point.py +568 -0
- sage/schemes/product_projective/rational_point.py +550 -0
- sage/schemes/product_projective/space.py +1301 -0
- sage/schemes/product_projective/subscheme.py +466 -0
- sage/schemes/projective/all.py +24 -0
- sage/schemes/projective/proj_bdd_height.py +453 -0
- sage/schemes/projective/projective_homset.py +718 -0
- sage/schemes/projective/projective_morphism.py +2792 -0
- sage/schemes/projective/projective_point.py +1484 -0
- sage/schemes/projective/projective_rational_point.py +569 -0
- sage/schemes/projective/projective_space.py +2571 -0
- sage/schemes/projective/projective_subscheme.py +1574 -0
- sage/sets/all.py +17 -0
- sage/sets/cartesian_product.py +376 -0
- sage/sets/condition_set.py +525 -0
- sage/sets/disjoint_set.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/disjoint_set.pxd +36 -0
- sage/sets/disjoint_set.pyx +998 -0
- sage/sets/disjoint_union_enumerated_sets.py +625 -0
- sage/sets/family.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/family.pxd +12 -0
- sage/sets/family.pyx +1556 -0
- sage/sets/finite_enumerated_set.py +406 -0
- sage/sets/finite_set_map_cy.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/finite_set_map_cy.pxd +34 -0
- sage/sets/finite_set_map_cy.pyx +708 -0
- sage/sets/finite_set_maps.py +591 -0
- sage/sets/image_set.py +448 -0
- sage/sets/integer_range.py +829 -0
- sage/sets/non_negative_integers.py +241 -0
- sage/sets/positive_integers.py +93 -0
- sage/sets/primes.py +188 -0
- sage/sets/real_set.py +2760 -0
- sage/sets/recursively_enumerated_set.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/recursively_enumerated_set.pxd +31 -0
- sage/sets/recursively_enumerated_set.pyx +2082 -0
- sage/sets/set.py +2083 -0
- sage/sets/set_from_iterator.py +1021 -0
- sage/sets/totally_ordered_finite_set.py +329 -0
- sage/symbolic/all__sagemath_categories.py +1 -0
- sage/symbolic/function.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/symbolic/function.pxd +29 -0
- sage/symbolic/function.pyx +1488 -0
- sage/symbolic/symbols.py +56 -0
- sage/tests/all__sagemath_categories.py +1 -0
- sage/tests/cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/tests/cython.pyx +37 -0
- sage/tests/stl_vector.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/tests/stl_vector.pyx +171 -0
- sage/typeset/all.py +6 -0
- sage/typeset/ascii_art.py +295 -0
- sage/typeset/character_art.py +789 -0
- sage/typeset/character_art_factory.py +572 -0
- sage/typeset/symbols.py +334 -0
- sage/typeset/unicode_art.py +183 -0
- sage/typeset/unicode_characters.py +101 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Precision Error
|
|
4
|
+
|
|
5
|
+
The errors in this file indicate various styles of precision problems
|
|
6
|
+
that can go wrong for `p`-adics and power series.
|
|
7
|
+
|
|
8
|
+
AUTHORS:
|
|
9
|
+
|
|
10
|
+
- David Roe
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
#*****************************************************************************
|
|
14
|
+
# Copyright (C) 2008 David Roe <roed.math@gmail.com>
|
|
15
|
+
#
|
|
16
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
17
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
18
|
+
# the License, or (at your option) any later version.
|
|
19
|
+
# http://www.gnu.org/licenses/
|
|
20
|
+
#*****************************************************************************
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class PrecisionError(ArithmeticError):
|
|
24
|
+
pass
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
# Quotient of polynomial ring
|
|
3
|
+
from sage.rings.polynomial.polynomial_quotient_ring import PolynomialQuotientRing
|
|
4
|
+
from sage.rings.polynomial.polynomial_quotient_ring_element import PolynomialQuotientRingElement
|
|
5
|
+
|
|
6
|
+
# Univariate Polynomial Rings
|
|
7
|
+
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
|
|
8
|
+
from sage.rings.polynomial.polynomial_ring import polygen, polygens
|
|
9
|
+
from sage.rings.polynomial.polynomial_element import Polynomial
|
|
10
|
+
|
|
11
|
+
# Boolean Polynomial Rings
|
|
12
|
+
from sage.rings.polynomial.polynomial_ring_constructor import BooleanPolynomialRing_constructor as BooleanPolynomialRing
|
|
13
|
+
|
|
14
|
+
# Multivariate Polynomial Rings
|
|
15
|
+
from sage.rings.polynomial.term_order import TermOrder
|
|
16
|
+
from sage.rings.polynomial.multi_polynomial_element import degree_lowest_rational_function
|
|
17
|
+
|
|
18
|
+
# Infinite Polynomial Rings
|
|
19
|
+
from sage.rings.polynomial.infinite_polynomial_ring import InfinitePolynomialRing
|
|
20
|
+
|
|
21
|
+
# Laurent Polynomial Rings
|
|
22
|
+
from sage.rings.polynomial.laurent_polynomial_ring import LaurentPolynomialRing
|
|
23
|
+
|
|
24
|
+
# Evaluation of cyclotomic polynomials
|
|
25
|
+
from sage.rings.polynomial.cyclotomic import cyclotomic_value
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
cdef class CommutativePolynomial(CommutativeAlgebraElement):
|
|
3
|
+
r"""
|
|
4
|
+
Abstract base class for commutative polynomials in any number of variables.
|
|
5
|
+
|
|
6
|
+
It is a common base for :class:`~sage.rings.polynomial.polynomial_element.Polynomial`,
|
|
7
|
+
:class:`~sage.rings.polynomial.multi_polynomial.MPolynomial`, and
|
|
8
|
+
:class:`~sage.rings.polynomial.infinite_polynomial_element.InfinitePolynomial`.
|
|
9
|
+
|
|
10
|
+
EXAMPLES::
|
|
11
|
+
|
|
12
|
+
sage: from sage.rings.polynomial.commutative_polynomial import CommutativePolynomial
|
|
13
|
+
sage: K.<x> = PolynomialRing(QQ)
|
|
14
|
+
sage: isinstance(x, CommutativePolynomial)
|
|
15
|
+
True
|
|
16
|
+
sage: K.<x,y> = PolynomialRing(QQ)
|
|
17
|
+
sage: isinstance(x, CommutativePolynomial)
|
|
18
|
+
True
|
|
19
|
+
sage: X.<x,y> = InfinitePolynomialRing(ZZ, implementation='sparse')
|
|
20
|
+
sage: isinstance(x[2], CommutativePolynomial)
|
|
21
|
+
True
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
pass
|
|
Binary file
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Fast calculation of cyclotomic polynomials
|
|
4
|
+
|
|
5
|
+
This module provides a function :func:`cyclotomic_coeffs`, which calculates the
|
|
6
|
+
coefficients of cyclotomic polynomials. This is not intended to be invoked
|
|
7
|
+
directly by the user, but it is called by the method
|
|
8
|
+
:meth:`~sage.rings.polynomial.polynomial_ring.PolynomialRing_generic.cyclotomic_polynomial`
|
|
9
|
+
method of univariate polynomial ring objects and the top-level
|
|
10
|
+
:func:`~sage.misc.functional.cyclotomic_polynomial` function.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
# ****************************************************************************
|
|
14
|
+
# Copyright (C) 2007 Robert Bradshaw <robertwb@math.washington.edu>
|
|
15
|
+
#
|
|
16
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
17
|
+
#
|
|
18
|
+
# This code is distributed in the hope that it will be useful,
|
|
19
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
# General Public License for more details.
|
|
22
|
+
#
|
|
23
|
+
# The full text of the GPL is available at:
|
|
24
|
+
#
|
|
25
|
+
# https://www.gnu.org/licenses/
|
|
26
|
+
# ****************************************************************************
|
|
27
|
+
|
|
28
|
+
import sys
|
|
29
|
+
|
|
30
|
+
from cysignals.memory cimport sig_malloc, check_calloc, sig_free
|
|
31
|
+
from cysignals.signals cimport sig_on, sig_off
|
|
32
|
+
|
|
33
|
+
from sage.arith.misc import factor
|
|
34
|
+
from sage.combinat.subset import subsets
|
|
35
|
+
from sage.misc.misc_c import prod
|
|
36
|
+
from sage.rings.integer_ring import ZZ
|
|
37
|
+
from sage.structure.element cimport parent
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
from sage.libs.pari import pari
|
|
41
|
+
except ImportError:
|
|
42
|
+
pass
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def cyclotomic_coeffs(nn, sparse=None):
|
|
46
|
+
"""
|
|
47
|
+
Return the coefficients of the `n`-th cyclotomic polynomial
|
|
48
|
+
by using the formula
|
|
49
|
+
|
|
50
|
+
.. MATH::
|
|
51
|
+
|
|
52
|
+
\\Phi_n(x) = \\prod_{d|n} (1-x^{n/d})^{\\mu(d)}
|
|
53
|
+
|
|
54
|
+
where `\\mu(d)` is the Möbius function that is 1 if `d` has an even
|
|
55
|
+
number of distinct prime divisors, `-1` if it has an odd number of
|
|
56
|
+
distinct prime divisors, and `0` if `d` is not squarefree.
|
|
57
|
+
|
|
58
|
+
Multiplications and divisions by polynomials of the
|
|
59
|
+
form `1-x^n` can be done very quickly in a single pass.
|
|
60
|
+
|
|
61
|
+
If ``sparse`` is ``True``, the result is returned as a dictionary of
|
|
62
|
+
the nonzero entries, otherwise the result is returned as a list
|
|
63
|
+
of python ints.
|
|
64
|
+
|
|
65
|
+
EXAMPLES::
|
|
66
|
+
|
|
67
|
+
sage: from sage.rings.polynomial.cyclotomic import cyclotomic_coeffs
|
|
68
|
+
sage: cyclotomic_coeffs(30)
|
|
69
|
+
[1, 1, 0, -1, -1, -1, 0, 1, 1]
|
|
70
|
+
sage: cyclotomic_coeffs(10^5)
|
|
71
|
+
{0: 1, 10000: -1, 20000: 1, 30000: -1, 40000: 1}
|
|
72
|
+
sage: R = QQ['x']
|
|
73
|
+
sage: R(cyclotomic_coeffs(30))
|
|
74
|
+
x^8 + x^7 - x^5 - x^4 - x^3 + x + 1
|
|
75
|
+
|
|
76
|
+
Check that it has the right degree::
|
|
77
|
+
|
|
78
|
+
sage: euler_phi(30) # needs sage.libs.pari
|
|
79
|
+
8
|
|
80
|
+
sage: R(cyclotomic_coeffs(14)).factor() # needs sage.libs.pari
|
|
81
|
+
x^6 - x^5 + x^4 - x^3 + x^2 - x + 1
|
|
82
|
+
|
|
83
|
+
The coefficients are not always +/-1::
|
|
84
|
+
|
|
85
|
+
sage: cyclotomic_coeffs(105)
|
|
86
|
+
[1, 1, 1, 0, 0, -1, -1, -2, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, -1,
|
|
87
|
+
0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, -1, -1, -2,
|
|
88
|
+
-1, -1, 0, 0, 1, 1, 1]
|
|
89
|
+
|
|
90
|
+
In fact the height is not bounded by any polynomial in `n` (Erdos),
|
|
91
|
+
although takes a while just to exceed linear::
|
|
92
|
+
|
|
93
|
+
sage: v = cyclotomic_coeffs(1181895)
|
|
94
|
+
sage: max(v)
|
|
95
|
+
14102773
|
|
96
|
+
|
|
97
|
+
The polynomial is a palindrome for any n::
|
|
98
|
+
|
|
99
|
+
sage: n = ZZ.random_element(50000)
|
|
100
|
+
sage: v = cyclotomic_coeffs(n, sparse=False)
|
|
101
|
+
sage: v == list(reversed(v))
|
|
102
|
+
True
|
|
103
|
+
|
|
104
|
+
AUTHORS:
|
|
105
|
+
|
|
106
|
+
- Robert Bradshaw (2007-10-27): initial version (inspired by work of Andrew
|
|
107
|
+
Arnold and Michael Monagan)
|
|
108
|
+
|
|
109
|
+
REFERENCE:
|
|
110
|
+
|
|
111
|
+
- http://www.cecm.sfu.ca/~ada26/cyclotomic/
|
|
112
|
+
"""
|
|
113
|
+
factors = factor(nn)
|
|
114
|
+
if any(e != 1 for _, e in factors):
|
|
115
|
+
# If there are primes that occur in the factorization with multiplicity
|
|
116
|
+
# greater than one we use the fact that Phi_ar(x) = Phi_r(x^a) when all
|
|
117
|
+
# primes dividing a divide r.
|
|
118
|
+
rad = prod(p for p, _ in factors)
|
|
119
|
+
rad_coeffs = cyclotomic_coeffs(rad, sparse=True)
|
|
120
|
+
pow = int(nn // rad)
|
|
121
|
+
if sparse is None or sparse:
|
|
122
|
+
L = {}
|
|
123
|
+
else:
|
|
124
|
+
L = [0] * (1 + pow * prod(p - 1 for p, _ in factors))
|
|
125
|
+
for mon, c in rad_coeffs.items():
|
|
126
|
+
L[mon * pow] = c
|
|
127
|
+
return L
|
|
128
|
+
|
|
129
|
+
elif len(factors) == 1 and not sparse:
|
|
130
|
+
# \Phi_p is easy to calculate for p prime.
|
|
131
|
+
return [1] * factors[0][0]
|
|
132
|
+
|
|
133
|
+
# The following bounds are from Michael Monagan:
|
|
134
|
+
# For all n < 169,828,113, the height of Phi_n(x) is less than 60 bits.
|
|
135
|
+
# At n = 169828113, we get a height of 31484567640915734951 which is 65 bits
|
|
136
|
+
# For n=10163195, the height of Phi_n(x) is 1376877780831, 40.32 bits.
|
|
137
|
+
# For n<10163195, the height of Phi_n(x) is <= 74989473, 26.16 bits.
|
|
138
|
+
cdef long fits_long_limit = 169828113 if sizeof(long) >= 8 else 10163195
|
|
139
|
+
if nn >= fits_long_limit and bateman_bound(nn) > sys.maxsize:
|
|
140
|
+
# Do this to avoid overflow.
|
|
141
|
+
print("Warning: using PARI (slow!)")
|
|
142
|
+
return [int(a) for a in pari.polcyclo(nn).Vecrev()]
|
|
143
|
+
|
|
144
|
+
cdef long d, max_deg = 0, n = nn
|
|
145
|
+
primes = [int(p) for p, _ in factors]
|
|
146
|
+
prime_subsets = list(subsets(primes))
|
|
147
|
+
if n > 5000:
|
|
148
|
+
prime_subsets.sort(key=lambda a: -prod(a))
|
|
149
|
+
|
|
150
|
+
for s in prime_subsets:
|
|
151
|
+
if len(s) % 2 == 0:
|
|
152
|
+
d = prod(s)
|
|
153
|
+
max_deg += n / d
|
|
154
|
+
|
|
155
|
+
cdef long* coeffs = <long*>check_calloc(max_deg + 1, sizeof(long))
|
|
156
|
+
coeffs[0] = 1
|
|
157
|
+
|
|
158
|
+
cdef long k, dd, offset = 0, deg = 0
|
|
159
|
+
for s in prime_subsets:
|
|
160
|
+
if len(s) % 2 == 0:
|
|
161
|
+
d = prod(s)
|
|
162
|
+
dd = n / d
|
|
163
|
+
# f *= (1-x^dd)
|
|
164
|
+
sig_on()
|
|
165
|
+
for k from deg + dd >= k >= dd:
|
|
166
|
+
coeffs[k] -= coeffs[k - dd]
|
|
167
|
+
deg += dd
|
|
168
|
+
sig_off()
|
|
169
|
+
|
|
170
|
+
prime_subsets.reverse()
|
|
171
|
+
for s in prime_subsets:
|
|
172
|
+
if len(s) % 2:
|
|
173
|
+
d = prod(s)
|
|
174
|
+
dd = n / d
|
|
175
|
+
# f /= (1-x^dd)
|
|
176
|
+
sig_on()
|
|
177
|
+
for k from deg >= k > deg - dd:
|
|
178
|
+
coeffs[k] = -coeffs[k]
|
|
179
|
+
for k from deg - dd >= k >= offset:
|
|
180
|
+
coeffs[k] = coeffs[k + dd] - coeffs[k]
|
|
181
|
+
offset += dd
|
|
182
|
+
sig_off()
|
|
183
|
+
|
|
184
|
+
cdef long non_zero = 0
|
|
185
|
+
if sparse is None:
|
|
186
|
+
for k in range(offset, deg + 1):
|
|
187
|
+
non_zero += coeffs[k] != 0
|
|
188
|
+
sparse = (4 * non_zero) < (deg - offset)
|
|
189
|
+
|
|
190
|
+
if sparse:
|
|
191
|
+
L = {}
|
|
192
|
+
for k in range(offset, deg + 1):
|
|
193
|
+
if coeffs[k]:
|
|
194
|
+
L[k - offset] = coeffs[k]
|
|
195
|
+
else:
|
|
196
|
+
L = [coeffs[k] for k in range(offset, deg + 1)]
|
|
197
|
+
|
|
198
|
+
sig_free(coeffs)
|
|
199
|
+
return L
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def cyclotomic_value(n, x):
|
|
203
|
+
r"""
|
|
204
|
+
Return the value of the `n`-th cyclotomic polynomial evaluated at `x`.
|
|
205
|
+
|
|
206
|
+
INPUT:
|
|
207
|
+
|
|
208
|
+
- ``n`` -- an Integer, specifying which cyclotomic polynomial is to be
|
|
209
|
+
evaluated
|
|
210
|
+
|
|
211
|
+
- ``x`` -- an element of a ring
|
|
212
|
+
|
|
213
|
+
OUTPUT: the value of the cyclotomic polynomial `\Phi_n` at `x`
|
|
214
|
+
|
|
215
|
+
ALGORITHM:
|
|
216
|
+
|
|
217
|
+
- Reduce to the case that `n` is squarefree: use the identity
|
|
218
|
+
|
|
219
|
+
.. MATH::
|
|
220
|
+
|
|
221
|
+
\Phi_n(x) = \Phi_q(x^{n/q})
|
|
222
|
+
|
|
223
|
+
where `q` is the radical of `n`.
|
|
224
|
+
|
|
225
|
+
- Use the identity
|
|
226
|
+
|
|
227
|
+
.. MATH::
|
|
228
|
+
|
|
229
|
+
\Phi_n(x) = \prod_{d | n} (x^d - 1)^{\mu(n / d)},
|
|
230
|
+
|
|
231
|
+
where `\mu` is the Möbius function.
|
|
232
|
+
|
|
233
|
+
- Handles the case that `x^d = 1` for some `d`, but not the case that
|
|
234
|
+
`x^d - 1` is non-invertible: in this case polynomial evaluation is
|
|
235
|
+
used instead.
|
|
236
|
+
|
|
237
|
+
EXAMPLES::
|
|
238
|
+
|
|
239
|
+
sage: cyclotomic_value(51, 3)
|
|
240
|
+
1282860140677441
|
|
241
|
+
sage: cyclotomic_polynomial(51)(3)
|
|
242
|
+
1282860140677441
|
|
243
|
+
|
|
244
|
+
It works for non-integral values as well::
|
|
245
|
+
|
|
246
|
+
sage: cyclotomic_value(144, 4/3)
|
|
247
|
+
79148745433504023621920372161/79766443076872509863361
|
|
248
|
+
sage: cyclotomic_polynomial(144)(4/3)
|
|
249
|
+
79148745433504023621920372161/79766443076872509863361
|
|
250
|
+
|
|
251
|
+
TESTS::
|
|
252
|
+
|
|
253
|
+
sage: elements = [-1, 0, 1, 2, 1/2, Mod(3, 8), Mod(3,11)]
|
|
254
|
+
sage: R.<x> = QQ[]; elements += [x^2 + 2]
|
|
255
|
+
sage: K.<i> = NumberField(x^2 + 1); elements += [i] # needs sage.rings.number_field
|
|
256
|
+
sage: elements += [GF(9,'a').gen()] # needs sage.rings.finite_rings
|
|
257
|
+
sage: elements += [Zp(3)(54)] # needs sage.rings.padics
|
|
258
|
+
sage: for y in elements:
|
|
259
|
+
....: for n in [1..60]:
|
|
260
|
+
....: val1 = cyclotomic_value(n, y)
|
|
261
|
+
....: val2 = cyclotomic_polynomial(n)(y)
|
|
262
|
+
....: if val1 != val2:
|
|
263
|
+
....: print("Wrong value for cyclotomic_value(%s, %s) in %s"%(n,y,parent(y)))
|
|
264
|
+
....: if val1.parent() is not val2.parent():
|
|
265
|
+
....: print("Wrong parent for cyclotomic_value(%s, %s) in %s"%(n,y,parent(y)))
|
|
266
|
+
|
|
267
|
+
sage: cyclotomic_value(20, I) # needs sage.symbolic
|
|
268
|
+
5
|
|
269
|
+
sage: a = cyclotomic_value(10, mod(3, 11)); a
|
|
270
|
+
6
|
|
271
|
+
sage: a.parent()
|
|
272
|
+
Ring of integers modulo 11
|
|
273
|
+
sage: cyclotomic_value(30, -1.0) # needs sage.rings.real_mpfr
|
|
274
|
+
1.00000000000000
|
|
275
|
+
|
|
276
|
+
sage: # needs sage.libs.pari
|
|
277
|
+
sage: S.<t> = R.quotient(R.cyclotomic_polynomial(15))
|
|
278
|
+
sage: cyclotomic_value(15, t)
|
|
279
|
+
0
|
|
280
|
+
sage: cyclotomic_value(30, t)
|
|
281
|
+
2*t^7 - 2*t^5 - 2*t^3 + 2*t
|
|
282
|
+
sage: S.<t> = R.quotient(x^10)
|
|
283
|
+
sage: cyclotomic_value(2^128 - 1, t)
|
|
284
|
+
-t^7 - t^6 - t^5 + t^2 + t + 1
|
|
285
|
+
sage: cyclotomic_value(10, mod(3,4))
|
|
286
|
+
1
|
|
287
|
+
|
|
288
|
+
Check that the issue with symbolic element in :issue:`14982` is fixed::
|
|
289
|
+
|
|
290
|
+
sage: a = cyclotomic_value(3, I) # needs sage.rings.number_field
|
|
291
|
+
sage: parent(a) # needs sage.rings.number_field
|
|
292
|
+
Number Field in I with defining polynomial x^2 + 1 with I = 1*I
|
|
293
|
+
"""
|
|
294
|
+
n = ZZ(n)
|
|
295
|
+
if n < 3:
|
|
296
|
+
if n == 1:
|
|
297
|
+
return x - ZZ.one()
|
|
298
|
+
if n == 2:
|
|
299
|
+
return x + ZZ.one()
|
|
300
|
+
raise ValueError("n must be positive")
|
|
301
|
+
|
|
302
|
+
P = parent(x)
|
|
303
|
+
try:
|
|
304
|
+
return P(pari.polcyclo(n, x).sage())
|
|
305
|
+
except Exception:
|
|
306
|
+
pass
|
|
307
|
+
one = P(1)
|
|
308
|
+
|
|
309
|
+
# The following is modeled on the implementation in PARI and is
|
|
310
|
+
# used for cases for which PARI doesn't work. These are in
|
|
311
|
+
# particular:
|
|
312
|
+
# - n does not fit in a C long;
|
|
313
|
+
# - x is some Sage type which cannot be converted to PARI;
|
|
314
|
+
# - PARI's algorithm encounters a zero-divisor which is not zero.
|
|
315
|
+
|
|
316
|
+
factors = n.factor()
|
|
317
|
+
cdef Py_ssize_t i, j, ti, L, root_of_unity = -1
|
|
318
|
+
primes = [p for p, _ in factors]
|
|
319
|
+
L = len(primes)
|
|
320
|
+
if any(e != 1 for _, e in factors):
|
|
321
|
+
# If there are primes that occur in the factorization with multiplicity
|
|
322
|
+
# greater than one we use the fact that Phi_ar(x) = Phi_r(x^a) when all
|
|
323
|
+
# primes dividing a divide r.
|
|
324
|
+
rad = prod(primes)
|
|
325
|
+
pow = n // rad
|
|
326
|
+
x = x ** pow
|
|
327
|
+
n = rad
|
|
328
|
+
if x == 1:
|
|
329
|
+
# if n is prime, return n
|
|
330
|
+
if L == 1:
|
|
331
|
+
return n * x # in case the parent of x has nonzero characteristic
|
|
332
|
+
else:
|
|
333
|
+
return x
|
|
334
|
+
xd = [x] # the x^d for d | n
|
|
335
|
+
cdef char mu
|
|
336
|
+
cdef char* md = <char*>sig_malloc(sizeof(char) * (1 << L)) # the mu(d) for d | n
|
|
337
|
+
try:
|
|
338
|
+
md[0] = 1
|
|
339
|
+
if L & 1:
|
|
340
|
+
mu = -1
|
|
341
|
+
num = 1
|
|
342
|
+
den = x - 1
|
|
343
|
+
else:
|
|
344
|
+
mu = 1
|
|
345
|
+
num = x - 1
|
|
346
|
+
den = 1
|
|
347
|
+
for i in range(L):
|
|
348
|
+
ti = 1 << i
|
|
349
|
+
p = primes[i]
|
|
350
|
+
for j in range(ti):
|
|
351
|
+
xpow = xd[j]**p
|
|
352
|
+
xd.append(xpow)
|
|
353
|
+
md[ti + j] = -md[j]
|
|
354
|
+
# if xpow = 1, we record such smallest index,
|
|
355
|
+
# and deal with the corresponding factors at the end.
|
|
356
|
+
if xpow == one:
|
|
357
|
+
if root_of_unity == -1:
|
|
358
|
+
root_of_unity = ti + j
|
|
359
|
+
elif mu == md[ti + j]:
|
|
360
|
+
num *= xpow - one
|
|
361
|
+
else:
|
|
362
|
+
den *= xpow - one
|
|
363
|
+
finally:
|
|
364
|
+
sig_free(md)
|
|
365
|
+
try:
|
|
366
|
+
ans = num / den
|
|
367
|
+
except ZeroDivisionError:
|
|
368
|
+
# We fall back on evaluation of the cyclotomic polynomial.
|
|
369
|
+
# This case is triggered in cyclotomic_value(10, mod(3, 4)) for example.
|
|
370
|
+
from sage.misc.functional import cyclotomic_polynomial
|
|
371
|
+
return cyclotomic_polynomial(n)(x)
|
|
372
|
+
if root_of_unity >= 0:
|
|
373
|
+
# x is a root of unity. If root_of_unity=2^L, x is a primitive
|
|
374
|
+
# root of unity and the value is zero
|
|
375
|
+
if root_of_unity == (1 << L) - 1:
|
|
376
|
+
return x - x # preserves the parent, as well as precision for p-adic x
|
|
377
|
+
# x is a primitive d-th root of unity, where d|n and d<n.
|
|
378
|
+
# If root_of_unity = (1<<L) - (1<<(i-1)) - 1 for some i < L,
|
|
379
|
+
# then n/d == primes[i] and we need to multiply by primes[i],
|
|
380
|
+
# otherwise n/d is composite and nothing more needs to be done.
|
|
381
|
+
for i in range(L):
|
|
382
|
+
if root_of_unity + (1 << i) + 1 == 1 << L:
|
|
383
|
+
ans *= primes[i]
|
|
384
|
+
break
|
|
385
|
+
return x.parent()(ans)
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
def bateman_bound(nn):
|
|
389
|
+
"""
|
|
390
|
+
Reference:
|
|
391
|
+
|
|
392
|
+
Bateman, P. T.; Pomerance, C.; Vaughan, R. C.
|
|
393
|
+
*On the size of the coefficients of the cyclotomic polynomial.*
|
|
394
|
+
|
|
395
|
+
EXAMPLES::
|
|
396
|
+
|
|
397
|
+
sage: from sage.rings.polynomial.cyclotomic import bateman_bound
|
|
398
|
+
sage: bateman_bound(2**8 * 1234567893377) # needs sage.libs.pari
|
|
399
|
+
66944986927
|
|
400
|
+
"""
|
|
401
|
+
_, n = nn.val_unit(2)
|
|
402
|
+
primes = [p for p, _ in factor(n)]
|
|
403
|
+
j = len(primes)
|
|
404
|
+
return prod(primes[k] ** (2 ** (j - k - 2) - 1) for k in range(j - 2))
|