passagemath-singular 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_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-singular might be problematic. Click here for more details.
- PySingular.cpython-314-aarch64-linux-gnu.so +0 -0
- passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
- passagemath_singular-10.6.31rc3.dist-info/RECORD +490 -0
- passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
- passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
- passagemath_singular.libs/libSingular-4-6a2a8666.4.1.so +0 -0
- passagemath_singular.libs/libcddgmp-ac579979.so.0.1.3 +0 -0
- passagemath_singular.libs/libfactory-4-66e33516.4.1.so +0 -0
- passagemath_singular.libs/libflint-81de1160.so.21.0.0 +0 -0
- passagemath_singular.libs/libgf2x-fbd36f80.so.3.0.0 +0 -0
- passagemath_singular.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
- passagemath_singular.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
- passagemath_singular.libs/libgsl-e3525837.so.28.0.0 +0 -0
- passagemath_singular.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
- passagemath_singular.libs/libntl-0043a3a2.so.44.0.1 +0 -0
- passagemath_singular.libs/libomalloc-0-06512335.9.6.so +0 -0
- passagemath_singular.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
- passagemath_singular.libs/libpolys-4-cb7246b5.4.1.so +0 -0
- passagemath_singular.libs/libreadline-28330744.so.8.2 +0 -0
- passagemath_singular.libs/libsingular_resources-4-8c425241.4.1.so +0 -0
- passagemath_singular.libs/libtinfo-f81c2d16.so.6.3 +0 -0
- sage/algebras/all__sagemath_singular.py +3 -0
- sage/algebras/fusion_rings/all.py +19 -0
- sage/algebras/fusion_rings/f_matrix.py +2448 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
- sage/algebras/fusion_rings/fusion_double.py +899 -0
- sage/algebras/fusion_rings/fusion_ring.py +1580 -0
- sage/algebras/fusion_rings/poly_tup_engine.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
- sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
- sage/algebras/fusion_rings/shm_managers.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/shm_managers.pxd +24 -0
- sage/algebras/fusion_rings/shm_managers.pyx +780 -0
- sage/algebras/letterplace/all.py +1 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
- sage/algebras/letterplace/free_algebra_letterplace.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
- sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
- sage/algebras/letterplace/letterplace_ideal.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
- sage/algebras/quatalg/all.py +2 -0
- sage/algebras/quatalg/quaternion_algebra.py +4778 -0
- sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
- sage/algebras/quatalg/quaternion_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
- sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
- sage/all__sagemath_singular.py +11 -0
- sage/ext_data/all__sagemath_singular.py +1 -0
- sage/ext_data/singular/function_field/core.lib +98 -0
- sage/interfaces/all__sagemath_singular.py +1 -0
- sage/interfaces/singular.py +2835 -0
- sage/libs/all__sagemath_singular.py +1 -0
- sage/libs/singular/__init__.py +1 -0
- sage/libs/singular/decl.pxd +1168 -0
- sage/libs/singular/function.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/libs/singular/function.pxd +87 -0
- sage/libs/singular/function.pyx +1901 -0
- sage/libs/singular/function_factory.py +61 -0
- sage/libs/singular/groebner_strategy.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/libs/singular/groebner_strategy.pxd +22 -0
- sage/libs/singular/groebner_strategy.pyx +582 -0
- sage/libs/singular/option.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/libs/singular/option.pyx +671 -0
- sage/libs/singular/polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/libs/singular/polynomial.pxd +39 -0
- sage/libs/singular/polynomial.pyx +661 -0
- sage/libs/singular/ring.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/libs/singular/ring.pxd +58 -0
- sage/libs/singular/ring.pyx +893 -0
- sage/libs/singular/singular.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/libs/singular/singular.pxd +72 -0
- sage/libs/singular/singular.pyx +1944 -0
- sage/libs/singular/standard_options.py +145 -0
- sage/matrix/all__sagemath_singular.py +1 -0
- sage/matrix/matrix_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
- sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
- sage/rings/all__sagemath_singular.py +1 -0
- sage/rings/function_field/all__sagemath_singular.py +1 -0
- sage/rings/function_field/derivations_polymod.py +911 -0
- sage/rings/function_field/element_polymod.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/rings/function_field/element_polymod.pyx +406 -0
- sage/rings/function_field/function_field_polymod.py +2611 -0
- sage/rings/function_field/ideal_polymod.py +1775 -0
- sage/rings/function_field/order_polymod.py +1475 -0
- sage/rings/function_field/place_polymod.py +681 -0
- sage/rings/polynomial/all__sagemath_singular.py +1 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
- sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
- sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
- sage/rings/polynomial/plural.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/plural.pxd +48 -0
- sage/rings/polynomial/plural.pyx +3171 -0
- sage/symbolic/all__sagemath_singular.py +1 -0
- sage/symbolic/comparison_impl.pxi +428 -0
- sage/symbolic/constants_c_impl.pxi +178 -0
- sage/symbolic/expression.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/symbolic/expression.pxd +7 -0
- sage/symbolic/expression.pyx +14200 -0
- sage/symbolic/getitem_impl.pxi +202 -0
- sage/symbolic/pynac.pxi +572 -0
- sage/symbolic/pynac_constant_impl.pxi +133 -0
- sage/symbolic/pynac_function_impl.pxi +206 -0
- sage/symbolic/pynac_impl.pxi +2576 -0
- sage/symbolic/pynac_wrap.h +124 -0
- sage/symbolic/series_impl.pxi +272 -0
- sage/symbolic/substitution_map_impl.pxi +94 -0
- sage_wheels/bin/ESingular +0 -0
- sage_wheels/bin/Singular +0 -0
- sage_wheels/bin/TSingular +0 -0
- sage_wheels/lib/singular/MOD/cohomo.la +41 -0
- sage_wheels/lib/singular/MOD/cohomo.so +0 -0
- sage_wheels/lib/singular/MOD/customstd.la +41 -0
- sage_wheels/lib/singular/MOD/customstd.so +0 -0
- sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
- sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
- sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
- sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
- sage_wheels/lib/singular/MOD/gitfan.la +41 -0
- sage_wheels/lib/singular/MOD/gitfan.so +0 -0
- sage_wheels/lib/singular/MOD/interval.la +41 -0
- sage_wheels/lib/singular/MOD/interval.so +0 -0
- sage_wheels/lib/singular/MOD/loctriv.la +41 -0
- sage_wheels/lib/singular/MOD/loctriv.so +0 -0
- sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
- sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
- sage_wheels/lib/singular/MOD/partialgb.la +41 -0
- sage_wheels/lib/singular/MOD/partialgb.so +0 -0
- sage_wheels/lib/singular/MOD/pyobject.la +41 -0
- sage_wheels/lib/singular/MOD/pyobject.so +0 -0
- sage_wheels/lib/singular/MOD/singmathic.la +41 -0
- sage_wheels/lib/singular/MOD/singmathic.so +0 -0
- sage_wheels/lib/singular/MOD/sispasm.la +41 -0
- sage_wheels/lib/singular/MOD/sispasm.so +0 -0
- sage_wheels/lib/singular/MOD/subsets.la +41 -0
- sage_wheels/lib/singular/MOD/subsets.so +0 -0
- sage_wheels/lib/singular/MOD/systhreads.la +41 -0
- sage_wheels/lib/singular/MOD/systhreads.so +0 -0
- sage_wheels/lib/singular/MOD/syzextra.la +41 -0
- sage_wheels/lib/singular/MOD/syzextra.so +0 -0
- sage_wheels/libexec/singular/MOD/change_cost +0 -0
- sage_wheels/libexec/singular/MOD/singularsurf +11 -0
- sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
- sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
- sage_wheels/libexec/singular/MOD/solve_IP +0 -0
- sage_wheels/libexec/singular/MOD/surfex +16 -0
- sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
- sage_wheels/share/factory/gftables/10201 +342 -0
- sage_wheels/share/factory/gftables/1024 +37 -0
- sage_wheels/share/factory/gftables/10609 +356 -0
- sage_wheels/share/factory/gftables/11449 +384 -0
- sage_wheels/share/factory/gftables/11881 +398 -0
- sage_wheels/share/factory/gftables/121 +6 -0
- sage_wheels/share/factory/gftables/12167 +408 -0
- sage_wheels/share/factory/gftables/125 +7 -0
- sage_wheels/share/factory/gftables/12769 +428 -0
- sage_wheels/share/factory/gftables/128 +7 -0
- sage_wheels/share/factory/gftables/1331 +47 -0
- sage_wheels/share/factory/gftables/1369 +48 -0
- sage_wheels/share/factory/gftables/14641 +490 -0
- sage_wheels/share/factory/gftables/15625 +523 -0
- sage_wheels/share/factory/gftables/16 +3 -0
- sage_wheels/share/factory/gftables/16129 +540 -0
- sage_wheels/share/factory/gftables/16384 +549 -0
- sage_wheels/share/factory/gftables/16807 +563 -0
- sage_wheels/share/factory/gftables/1681 +58 -0
- sage_wheels/share/factory/gftables/169 +8 -0
- sage_wheels/share/factory/gftables/17161 +574 -0
- sage_wheels/share/factory/gftables/1849 +64 -0
- sage_wheels/share/factory/gftables/18769 +628 -0
- sage_wheels/share/factory/gftables/19321 +646 -0
- sage_wheels/share/factory/gftables/19683 +659 -0
- sage_wheels/share/factory/gftables/2048 +71 -0
- sage_wheels/share/factory/gftables/2187 +75 -0
- sage_wheels/share/factory/gftables/2197 +76 -0
- sage_wheels/share/factory/gftables/2209 +76 -0
- sage_wheels/share/factory/gftables/22201 +742 -0
- sage_wheels/share/factory/gftables/22801 +762 -0
- sage_wheels/share/factory/gftables/2401 +82 -0
- sage_wheels/share/factory/gftables/243 +11 -0
- sage_wheels/share/factory/gftables/24389 +815 -0
- sage_wheels/share/factory/gftables/24649 +824 -0
- sage_wheels/share/factory/gftables/25 +3 -0
- sage_wheels/share/factory/gftables/256 +11 -0
- sage_wheels/share/factory/gftables/26569 +888 -0
- sage_wheels/share/factory/gftables/27 +3 -0
- sage_wheels/share/factory/gftables/27889 +932 -0
- sage_wheels/share/factory/gftables/2809 +96 -0
- sage_wheels/share/factory/gftables/28561 +954 -0
- sage_wheels/share/factory/gftables/289 +12 -0
- sage_wheels/share/factory/gftables/29791 +995 -0
- sage_wheels/share/factory/gftables/29929 +1000 -0
- sage_wheels/share/factory/gftables/3125 +107 -0
- sage_wheels/share/factory/gftables/32 +4 -0
- sage_wheels/share/factory/gftables/32041 +1070 -0
- sage_wheels/share/factory/gftables/32761 +1094 -0
- sage_wheels/share/factory/gftables/32768 +1095 -0
- sage_wheels/share/factory/gftables/343 +14 -0
- sage_wheels/share/factory/gftables/3481 +118 -0
- sage_wheels/share/factory/gftables/361 +14 -0
- sage_wheels/share/factory/gftables/36481 +1218 -0
- sage_wheels/share/factory/gftables/3721 +126 -0
- sage_wheels/share/factory/gftables/37249 +1244 -0
- sage_wheels/share/factory/gftables/38809 +1296 -0
- sage_wheels/share/factory/gftables/39601 +1322 -0
- sage_wheels/share/factory/gftables/4 +3 -0
- sage_wheels/share/factory/gftables/4096 +139 -0
- sage_wheels/share/factory/gftables/44521 +1486 -0
- sage_wheels/share/factory/gftables/4489 +152 -0
- sage_wheels/share/factory/gftables/49 +4 -0
- sage_wheels/share/factory/gftables/4913 +166 -0
- sage_wheels/share/factory/gftables/49729 +1660 -0
- sage_wheels/share/factory/gftables/5041 +170 -0
- sage_wheels/share/factory/gftables/50653 +1691 -0
- sage_wheels/share/factory/gftables/512 +20 -0
- sage_wheels/share/factory/gftables/51529 +1720 -0
- sage_wheels/share/factory/gftables/52441 +1750 -0
- sage_wheels/share/factory/gftables/529 +20 -0
- sage_wheels/share/factory/gftables/5329 +180 -0
- sage_wheels/share/factory/gftables/54289 +1812 -0
- sage_wheels/share/factory/gftables/57121 +1906 -0
- sage_wheels/share/factory/gftables/58081 +1938 -0
- sage_wheels/share/factory/gftables/59049 +1971 -0
- sage_wheels/share/factory/gftables/6241 +210 -0
- sage_wheels/share/factory/gftables/625 +23 -0
- sage_wheels/share/factory/gftables/63001 +2102 -0
- sage_wheels/share/factory/gftables/64 +5 -0
- sage_wheels/share/factory/gftables/6561 +221 -0
- sage_wheels/share/factory/gftables/6859 +231 -0
- sage_wheels/share/factory/gftables/6889 +232 -0
- sage_wheels/share/factory/gftables/729 +27 -0
- sage_wheels/share/factory/gftables/7921 +266 -0
- sage_wheels/share/factory/gftables/8 +3 -0
- sage_wheels/share/factory/gftables/81 +5 -0
- sage_wheels/share/factory/gftables/8192 +276 -0
- sage_wheels/share/factory/gftables/841 +30 -0
- sage_wheels/share/factory/gftables/9 +3 -0
- sage_wheels/share/factory/gftables/9409 +316 -0
- sage_wheels/share/factory/gftables/961 +34 -0
- sage_wheels/share/info/singular.info +191898 -0
- sage_wheels/share/singular/LIB/GND.lib +1359 -0
- sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
- sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
- sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
- sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
- sage_wheels/share/singular/LIB/VecField.lib +1542 -0
- sage_wheels/share/singular/LIB/absfact.lib +959 -0
- sage_wheels/share/singular/LIB/ainvar.lib +730 -0
- sage_wheels/share/singular/LIB/aksaka.lib +419 -0
- sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
- sage_wheels/share/singular/LIB/algebra.lib +1193 -0
- sage_wheels/share/singular/LIB/all.lib +136 -0
- sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
- sage_wheels/share/singular/LIB/arnold.lib +4553 -0
- sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
- sage_wheels/share/singular/LIB/arr.lib +3486 -0
- sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
- sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
- sage_wheels/share/singular/LIB/bfun.lib +1964 -0
- sage_wheels/share/singular/LIB/bimodules.lib +774 -0
- sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
- sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
- sage_wheels/share/singular/LIB/central.lib +2169 -0
- sage_wheels/share/singular/LIB/chern.lib +4162 -0
- sage_wheels/share/singular/LIB/cimonom.lib +571 -0
- sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
- sage_wheels/share/singular/LIB/classify.lib +3239 -0
- sage_wheels/share/singular/LIB/classify2.lib +1462 -0
- sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
- sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
- sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
- sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
- sage_wheels/share/singular/LIB/combinat.lib +91 -0
- sage_wheels/share/singular/LIB/compregb.lib +276 -0
- sage_wheels/share/singular/LIB/control.lib +1636 -0
- sage_wheels/share/singular/LIB/crypto.lib +3795 -0
- sage_wheels/share/singular/LIB/curveInv.lib +667 -0
- sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
- sage_wheels/share/singular/LIB/customstd.lib +100 -0
- sage_wheels/share/singular/LIB/deRham.lib +5979 -0
- sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
- sage_wheels/share/singular/LIB/decomp.lib +1655 -0
- sage_wheels/share/singular/LIB/deflation.lib +872 -0
- sage_wheels/share/singular/LIB/deform.lib +925 -0
- sage_wheels/share/singular/LIB/difform.lib +3055 -0
- sage_wheels/share/singular/LIB/divisors.lib +750 -0
- sage_wheels/share/singular/LIB/dmod.lib +5817 -0
- sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
- sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
- sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
- sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
- sage_wheels/share/singular/LIB/dummy.lib +17 -0
- sage_wheels/share/singular/LIB/elim.lib +1009 -0
- sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
- sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
- sage_wheels/share/singular/LIB/equising.lib +2127 -0
- sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
- sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
- sage_wheels/share/singular/LIB/findifs.lib +778 -0
- sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
- sage_wheels/share/singular/LIB/finvar.lib +7989 -0
- sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
- sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
- sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
- sage_wheels/share/singular/LIB/freegb.lib +3853 -0
- sage_wheels/share/singular/LIB/general.lib +1350 -0
- sage_wheels/share/singular/LIB/gfan.lib +1768 -0
- sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
- sage_wheels/share/singular/LIB/gkdim.lib +99 -0
- sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
- sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
- sage_wheels/share/singular/LIB/goettsche.lib +909 -0
- sage_wheels/share/singular/LIB/graal.lib +1366 -0
- sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
- sage_wheels/share/singular/LIB/graphics.lib +360 -0
- sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
- sage_wheels/share/singular/LIB/groups.lib +1123 -0
- sage_wheels/share/singular/LIB/grwalk.lib +507 -0
- sage_wheels/share/singular/LIB/hdepth.lib +194 -0
- sage_wheels/share/singular/LIB/help.cnf +57 -0
- sage_wheels/share/singular/LIB/hess.lib +1946 -0
- sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
- sage_wheels/share/singular/LIB/hodge.lib +400 -0
- sage_wheels/share/singular/LIB/homolog.lib +1965 -0
- sage_wheels/share/singular/LIB/hyperel.lib +975 -0
- sage_wheels/share/singular/LIB/inout.lib +679 -0
- sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
- sage_wheels/share/singular/LIB/interval.lib +1418 -0
- sage_wheels/share/singular/LIB/intprog.lib +778 -0
- sage_wheels/share/singular/LIB/invar.lib +443 -0
- sage_wheels/share/singular/LIB/involut.lib +980 -0
- sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
- sage_wheels/share/singular/LIB/kskernel.lib +534 -0
- sage_wheels/share/singular/LIB/latex.lib +3146 -0
- sage_wheels/share/singular/LIB/lejeune.lib +651 -0
- sage_wheels/share/singular/LIB/linalg.lib +2040 -0
- sage_wheels/share/singular/LIB/locnormal.lib +212 -0
- sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
- sage_wheels/share/singular/LIB/makedbm.lib +294 -0
- sage_wheels/share/singular/LIB/mathml.lib +813 -0
- sage_wheels/share/singular/LIB/matrix.lib +1372 -0
- sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
- sage_wheels/share/singular/LIB/methods.lib +212 -0
- sage_wheels/share/singular/LIB/moddiq.lib +322 -0
- sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
- sage_wheels/share/singular/LIB/modnormal.lib +218 -0
- sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
- sage_wheels/share/singular/LIB/modquotient.lib +269 -0
- sage_wheels/share/singular/LIB/modstd.lib +1024 -0
- sage_wheels/share/singular/LIB/modular.lib +545 -0
- sage_wheels/share/singular/LIB/modules.lib +2561 -0
- sage_wheels/share/singular/LIB/modwalk.lib +609 -0
- sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
- sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
- sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
- sage_wheels/share/singular/LIB/mregular.lib +1863 -0
- sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
- sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
- sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
- sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
- sage_wheels/share/singular/LIB/ncall.lib +31 -0
- sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
- sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
- sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
- sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
- sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
- sage_wheels/share/singular/LIB/ncloc.lib +361 -0
- sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
- sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
- sage_wheels/share/singular/LIB/nctools.lib +1887 -0
- sage_wheels/share/singular/LIB/nets.lib +1456 -0
- sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
- sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
- sage_wheels/share/singular/LIB/noether.lib +1106 -0
- sage_wheels/share/singular/LIB/normal.lib +8700 -0
- sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
- sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
- sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
- sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
- sage_wheels/share/singular/LIB/olga.lib +1933 -0
- sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
- sage_wheels/share/singular/LIB/parallel.lib +319 -0
- sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
- sage_wheels/share/singular/LIB/perron.lib +202 -0
- sage_wheels/share/singular/LIB/pfd.lib +2223 -0
- sage_wheels/share/singular/LIB/phindex.lib +642 -0
- sage_wheels/share/singular/LIB/pointid.lib +673 -0
- sage_wheels/share/singular/LIB/polybori.lib +1430 -0
- sage_wheels/share/singular/LIB/polyclass.lib +525 -0
- sage_wheels/share/singular/LIB/polylib.lib +1174 -0
- sage_wheels/share/singular/LIB/polymake.lib +1902 -0
- sage_wheels/share/singular/LIB/presolve.lib +1533 -0
- sage_wheels/share/singular/LIB/primdec.lib +9576 -0
- sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
- sage_wheels/share/singular/LIB/primitiv.lib +401 -0
- sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
- sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
- sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
- sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
- sage_wheels/share/singular/LIB/random.lib +455 -0
- sage_wheels/share/singular/LIB/ratgb.lib +489 -0
- sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
- sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
- sage_wheels/share/singular/LIB/realrad.lib +1197 -0
- sage_wheels/share/singular/LIB/recover.lib +2628 -0
- sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
- sage_wheels/share/singular/LIB/reesclos.lib +465 -0
- sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
- sage_wheels/share/singular/LIB/resgraph.lib +789 -0
- sage_wheels/share/singular/LIB/resjung.lib +820 -0
- sage_wheels/share/singular/LIB/resolve.lib +5110 -0
- sage_wheels/share/singular/LIB/resources.lib +170 -0
- sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
- sage_wheels/share/singular/LIB/ring.lib +1328 -0
- sage_wheels/share/singular/LIB/ringgb.lib +343 -0
- sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
- sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
- sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
- sage_wheels/share/singular/LIB/rootsur.lib +886 -0
- sage_wheels/share/singular/LIB/rstandard.lib +607 -0
- sage_wheels/share/singular/LIB/rwalk.lib +336 -0
- sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
- sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
- sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
- sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
- sage_wheels/share/singular/LIB/schreyer.lib +321 -0
- sage_wheels/share/singular/LIB/schubert.lib +2551 -0
- sage_wheels/share/singular/LIB/sets.lib +524 -0
- sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
- sage_wheels/share/singular/LIB/signcond.lib +437 -0
- sage_wheels/share/singular/LIB/sing.lib +1094 -0
- sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
- sage_wheels/share/singular/LIB/solve.lib +2243 -0
- sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
- sage_wheels/share/singular/LIB/spectrum.lib +62 -0
- sage_wheels/share/singular/LIB/sresext.lib +757 -0
- sage_wheels/share/singular/LIB/ssi.lib +143 -0
- sage_wheels/share/singular/LIB/standard.lib +2769 -0
- sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
- sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
- sage_wheels/share/singular/LIB/stratify.lib +1070 -0
- sage_wheels/share/singular/LIB/surf.lib +506 -0
- sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
- sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
- sage_wheels/share/singular/LIB/surfex.lib +1462 -0
- sage_wheels/share/singular/LIB/swalk.lib +877 -0
- sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
- sage_wheels/share/singular/LIB/systhreads.lib +74 -0
- sage_wheels/share/singular/LIB/tasks.lib +1324 -0
- sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
- sage_wheels/share/singular/LIB/teachstd.lib +858 -0
- sage_wheels/share/singular/LIB/template.lib +116 -0
- sage_wheels/share/singular/LIB/toric.lib +1119 -0
- sage_wheels/share/singular/LIB/transformation.lib +116 -0
- sage_wheels/share/singular/LIB/triang.lib +1197 -0
- sage_wheels/share/singular/LIB/tropical.lib +8741 -0
- sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
- sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
- sage_wheels/share/singular/LIB/tst.lib +1108 -0
- sage_wheels/share/singular/LIB/weierstr.lib +241 -0
- sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
- sage_wheels/share/singular/emacs/.emacs-general +184 -0
- sage_wheels/share/singular/emacs/.emacs-singular +234 -0
- sage_wheels/share/singular/emacs/COPYING +44 -0
- sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
- sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
- sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
- sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
- sage_wheels/share/singular/emacs/singular.el +4273 -0
- sage_wheels/share/singular/emacs/singular.xpm +39 -0
- sage_wheels/share/singular/singular.idx +5002 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
"""
|
|
3
|
+
Wrapper for Singular's Polynomial Arithmetic
|
|
4
|
+
|
|
5
|
+
AUTHOR:
|
|
6
|
+
|
|
7
|
+
- Martin Albrecht (2009-07): initial implementation
|
|
8
|
+
"""
|
|
9
|
+
#*****************************************************************************
|
|
10
|
+
# Copyright (C) 2009 Martin Albrecht <malb@informatik.uni-bremen.de>
|
|
11
|
+
#
|
|
12
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
13
|
+
# http://www.gnu.org/licenses/
|
|
14
|
+
#*****************************************************************************
|
|
15
|
+
|
|
16
|
+
from sage.structure.element cimport RingElement
|
|
17
|
+
|
|
18
|
+
from sage.libs.singular.decl cimport poly, ring
|
|
19
|
+
|
|
20
|
+
cdef int singular_polynomial_check(poly *p, ring *r) except -1
|
|
21
|
+
cdef int singular_polynomial_add (poly **ret, poly *p, poly *q, ring *r) noexcept
|
|
22
|
+
cdef int singular_polynomial_call (poly **ret, poly *p, ring *r, list args,
|
|
23
|
+
poly *(*get_element)(object) noexcept) noexcept
|
|
24
|
+
cdef int singular_polynomial_cmp (poly *p, poly *q, ring *r) noexcept
|
|
25
|
+
cdef int singular_polynomial_rmul (poly **ret, poly *p, RingElement q, ring *r) noexcept
|
|
26
|
+
cdef int singular_polynomial_mul (poly **ret, poly *p, poly *q, ring *r) except -1
|
|
27
|
+
cdef int singular_polynomial_sub (poly **ret, poly *p, poly *q, ring *r) noexcept
|
|
28
|
+
cdef int singular_polynomial_div_coeff (poly **ret, poly *p, poly *q, ring *r) except -1
|
|
29
|
+
cdef int singular_polynomial_pow (poly **ret, poly *p, unsigned long exp, ring *r) except -1
|
|
30
|
+
cdef int singular_polynomial_neg(poly **ret, poly *p, ring *r) noexcept
|
|
31
|
+
|
|
32
|
+
cdef object singular_polynomial_latex(poly *p, ring *r, object base, object latex_gens)
|
|
33
|
+
cdef object singular_polynomial_str(poly *p, ring *r)
|
|
34
|
+
cdef object singular_polynomial_str_with_changed_varnames(poly *p, ring *r, object varnames)
|
|
35
|
+
cdef long singular_polynomial_deg(poly *p, poly *x, ring *r) noexcept
|
|
36
|
+
|
|
37
|
+
cdef int singular_polynomial_length_bounded(poly *p, int bound) noexcept
|
|
38
|
+
cdef int singular_vector_maximal_component(poly *v, ring *r) except -1
|
|
39
|
+
cdef int singular_polynomial_subst(poly **p, int var_index, poly *value, ring *r) except -1
|
|
@@ -0,0 +1,661 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
"""
|
|
3
|
+
Wrapper for Singular's Polynomial Arithmetic
|
|
4
|
+
|
|
5
|
+
AUTHOR:
|
|
6
|
+
|
|
7
|
+
- Martin Albrecht (2009-07): refactoring
|
|
8
|
+
"""
|
|
9
|
+
# ****************************************************************************
|
|
10
|
+
# Copyright (C) 2009 Martin Albrecht <malb@informatik.uni-bremen.de>
|
|
11
|
+
#
|
|
12
|
+
# This program is free software: you can redistribute it and/or modify
|
|
13
|
+
# it under the terms of the GNU General Public License as published by
|
|
14
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
15
|
+
# (at your option) any later version.
|
|
16
|
+
# https://www.gnu.org/licenses/
|
|
17
|
+
# ****************************************************************************
|
|
18
|
+
|
|
19
|
+
from cysignals.signals cimport sig_on, sig_off
|
|
20
|
+
|
|
21
|
+
cdef extern from *: # hack to get at cython macro
|
|
22
|
+
int unlikely(int)
|
|
23
|
+
|
|
24
|
+
import re
|
|
25
|
+
plusminus_pattern = re.compile(r"([^\(^])([\+\-])")
|
|
26
|
+
parenthvar_pattern = re.compile(r"\(([a-zA-Z][a-zA-Z0-9]*)\)")
|
|
27
|
+
|
|
28
|
+
from sage.cpython.string cimport bytes_to_str, str_to_bytes
|
|
29
|
+
|
|
30
|
+
from sage.libs.singular.decl cimport number, ideal
|
|
31
|
+
from sage.libs.singular.decl cimport currRing, rChangeCurrRing
|
|
32
|
+
from sage.libs.singular.decl cimport p_Copy, p_Add_q, p_Neg, pp_Mult_nn, p_GetCoeff, p_IsConstant, p_Cmp, pNext
|
|
33
|
+
from sage.libs.singular.decl cimport p_GetMaxExp, pp_Mult_qq, pPower, p_String, p_GetExp, p_LDeg
|
|
34
|
+
from sage.libs.singular.decl cimport n_Delete, idInit, fast_map_common_subexp, id_Delete
|
|
35
|
+
from sage.libs.singular.decl cimport omAlloc0, omStrDup, omFree
|
|
36
|
+
from sage.libs.singular.decl cimport p_GetComp
|
|
37
|
+
from sage.libs.singular.decl cimport pSubst
|
|
38
|
+
from sage.libs.singular.decl cimport p_Normalize
|
|
39
|
+
from sage.libs.singular.decl cimport ndCopyMap, maMapPoly
|
|
40
|
+
|
|
41
|
+
from sage.libs.singular.singular cimport sa2si, si2sa, overflow_check
|
|
42
|
+
|
|
43
|
+
from sage.misc.latex import latex
|
|
44
|
+
|
|
45
|
+
cdef int singular_polynomial_check(poly *p, ring *r) except -1:
|
|
46
|
+
"""
|
|
47
|
+
Run consistency checks on ``p``.
|
|
48
|
+
"""
|
|
49
|
+
while p:
|
|
50
|
+
if p_GetCoeff(p, r) == NULL:
|
|
51
|
+
raise ZeroDivisionError("NULL pointer as coefficient.")
|
|
52
|
+
p = p.next
|
|
53
|
+
return 0
|
|
54
|
+
|
|
55
|
+
cdef int singular_polynomial_add(poly **ret, poly *p, poly *q, ring *r) noexcept:
|
|
56
|
+
"""
|
|
57
|
+
``ret[0] = p+q`` where ``p`` and ``p`` in ``r``.
|
|
58
|
+
|
|
59
|
+
INPUT:
|
|
60
|
+
|
|
61
|
+
- ``ret`` -- a pointer to a Singular polynomial to store the result in
|
|
62
|
+
- ``p`` -- a Singular polynomial
|
|
63
|
+
- ``q`` -- a Singular polynomial
|
|
64
|
+
- ``r`` -- a Singular ring
|
|
65
|
+
|
|
66
|
+
EXAMPLES::
|
|
67
|
+
|
|
68
|
+
sage: P.<x,y,z> = QQ[]
|
|
69
|
+
sage: x + y # indirect doctest
|
|
70
|
+
x + y
|
|
71
|
+
|
|
72
|
+
sage: x + P(0)
|
|
73
|
+
x
|
|
74
|
+
"""
|
|
75
|
+
if r != currRing:
|
|
76
|
+
rChangeCurrRing(r)
|
|
77
|
+
p = p_Copy(p, r)
|
|
78
|
+
q = p_Copy(q, r)
|
|
79
|
+
ret[0] = p_Add_q(p, q, r)
|
|
80
|
+
return 0
|
|
81
|
+
|
|
82
|
+
cdef int singular_polynomial_sub(poly **ret, poly *p, poly *q, ring *r) noexcept:
|
|
83
|
+
"""
|
|
84
|
+
``ret[0] = p-q`` where ``p`` and ``p`` in ``r``.
|
|
85
|
+
|
|
86
|
+
INPUT:
|
|
87
|
+
|
|
88
|
+
- ``ret`` -- a pointer to a Singular polynomial to store the result in
|
|
89
|
+
- ``p`` -- a Singular polynomial
|
|
90
|
+
- ``q`` -- a Singular polynomial
|
|
91
|
+
- ``r`` -- a Singular ring
|
|
92
|
+
|
|
93
|
+
EXAMPLES::
|
|
94
|
+
|
|
95
|
+
sage: P.<x,y,z> = QQ[]
|
|
96
|
+
sage: x - y # indirect doctest
|
|
97
|
+
x - y
|
|
98
|
+
|
|
99
|
+
sage: x + P(0)
|
|
100
|
+
x
|
|
101
|
+
"""
|
|
102
|
+
if r != currRing:
|
|
103
|
+
rChangeCurrRing(r)
|
|
104
|
+
p = p_Copy(p, r)
|
|
105
|
+
q = p_Copy(q, r)
|
|
106
|
+
ret[0] = p_Add_q(p, p_Neg(q, r), r)
|
|
107
|
+
return 0
|
|
108
|
+
|
|
109
|
+
cdef int singular_polynomial_rmul(poly **ret, poly *p, RingElement n, ring *r) noexcept:
|
|
110
|
+
"""
|
|
111
|
+
``ret[0] = n*p`` where ``n`` is a coefficient and ``p`` in ``r``.
|
|
112
|
+
|
|
113
|
+
INPUT:
|
|
114
|
+
|
|
115
|
+
- ``ret`` -- a pointer to a Singular polynomial to store the result in
|
|
116
|
+
- ``p`` -- a Singular polynomial
|
|
117
|
+
- ``n`` -- a Sage coefficient
|
|
118
|
+
- ``r`` -- a Singular ring
|
|
119
|
+
|
|
120
|
+
EXAMPLES::
|
|
121
|
+
|
|
122
|
+
sage: P.<x,y,z> = QQ[]
|
|
123
|
+
sage: 2*x # indirect doctest
|
|
124
|
+
2*x
|
|
125
|
+
|
|
126
|
+
sage: P(0)*x
|
|
127
|
+
0
|
|
128
|
+
"""
|
|
129
|
+
if r != currRing:
|
|
130
|
+
rChangeCurrRing(r)
|
|
131
|
+
cdef number *_n = sa2si(n, r)
|
|
132
|
+
ret[0] = pp_Mult_nn(p, _n, r)
|
|
133
|
+
n_Delete(&_n, r.cf)
|
|
134
|
+
return 0
|
|
135
|
+
|
|
136
|
+
cdef int singular_polynomial_call(poly **ret, poly *p, ring *r, list args,
|
|
137
|
+
poly *(*get_element)(object) noexcept) noexcept:
|
|
138
|
+
"""
|
|
139
|
+
``ret[0] = p(*args)`` where each entry in arg is a polynomial and ``p`` in ``r``.
|
|
140
|
+
|
|
141
|
+
INPUT:
|
|
142
|
+
|
|
143
|
+
- ``ret`` -- a pointer to a Singular polynomial to store the result in
|
|
144
|
+
- ``p`` -- a Singular polynomial
|
|
145
|
+
- ``r`` -- a Singular ring
|
|
146
|
+
- ``args`` -- list/tuple of elements which can be converted to Singular
|
|
147
|
+
polynomials using the ``(get_element)`` function provided
|
|
148
|
+
- ``(*get_element)`` -- a function to turn a Sage element into a
|
|
149
|
+
Singular element
|
|
150
|
+
|
|
151
|
+
EXAMPLES::
|
|
152
|
+
|
|
153
|
+
sage: P.<x,y,z> = QQ[]
|
|
154
|
+
sage: x(0,0,0) # indirect doctest
|
|
155
|
+
0
|
|
156
|
+
|
|
157
|
+
sage: (3*x*z)(x,x,x)
|
|
158
|
+
3*x^2
|
|
159
|
+
|
|
160
|
+
TESTS:
|
|
161
|
+
|
|
162
|
+
Test that there is no memory leak in evaluating polynomials. Note
|
|
163
|
+
that (lib)Singular has pre-allocated buckets, so we have to run a
|
|
164
|
+
lot of iterations to fill those up first::
|
|
165
|
+
|
|
166
|
+
sage: import resource
|
|
167
|
+
sage: import gc
|
|
168
|
+
sage: F.<a> = GF(7^2)
|
|
169
|
+
sage: R.<x,y> = F[]
|
|
170
|
+
sage: p = x+2*y
|
|
171
|
+
sage: def leak(N):
|
|
172
|
+
....: before = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
|
|
173
|
+
....: gc.collect()
|
|
174
|
+
....: for i in range(N):
|
|
175
|
+
....: _ = p(a, a)
|
|
176
|
+
....: after = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
|
|
177
|
+
....: return (after - before) * 1024 # ru_maxrss is in kilobytes
|
|
178
|
+
|
|
179
|
+
Loop (at most 30 times) until we have 6 consecutive zeros when
|
|
180
|
+
calling ``leak(10000)``. Depending on the operating system, it is
|
|
181
|
+
possible to have several nonzero leak values in the beginning, but
|
|
182
|
+
after a while we should get only zeros. The fact that we require 6
|
|
183
|
+
zeros also means that Singular's pre-allocated buckets should not
|
|
184
|
+
be sufficient if there really would be a memory leak. ::
|
|
185
|
+
|
|
186
|
+
sage: zeros = 0
|
|
187
|
+
sage: for i in range(30): # long time
|
|
188
|
+
....: n = leak(10000)
|
|
189
|
+
....: print("Leaked {} bytes".format(n))
|
|
190
|
+
....: if n == 0:
|
|
191
|
+
....: zeros += 1
|
|
192
|
+
....: if zeros >= 6:
|
|
193
|
+
....: break
|
|
194
|
+
....: else:
|
|
195
|
+
....: zeros = 0
|
|
196
|
+
Leaked...
|
|
197
|
+
Leaked 0 bytes
|
|
198
|
+
Leaked 0 bytes
|
|
199
|
+
Leaked 0 bytes
|
|
200
|
+
Leaked 0 bytes
|
|
201
|
+
Leaked 0 bytes
|
|
202
|
+
"""
|
|
203
|
+
cdef long l = len(args)
|
|
204
|
+
cdef ideal *to_id = idInit(l, 1)
|
|
205
|
+
cdef bint constant_args = 1
|
|
206
|
+
for i from 0 <= i < l:
|
|
207
|
+
to_id.m[i]= p_Copy( get_element(args[i]), r)
|
|
208
|
+
if not p_IsConstant(to_id.m[i], r):
|
|
209
|
+
constant_args = 0
|
|
210
|
+
|
|
211
|
+
cdef ideal *from_id
|
|
212
|
+
rChangeCurrRing(r)
|
|
213
|
+
cdef ideal *res_id
|
|
214
|
+
if not constant_args:
|
|
215
|
+
from_id = idInit(1,1)
|
|
216
|
+
from_id.m[0] = p
|
|
217
|
+
|
|
218
|
+
res_id = fast_map_common_subexp(from_id, r, to_id, r)
|
|
219
|
+
ret[0] = res_id.m[0]
|
|
220
|
+
|
|
221
|
+
from_id.m[0] = NULL
|
|
222
|
+
res_id.m[0] = NULL
|
|
223
|
+
id_Delete(&from_id, r)
|
|
224
|
+
id_Delete(&res_id, r)
|
|
225
|
+
else:
|
|
226
|
+
ret[0] = maMapPoly(p, r, to_id, r, ndCopyMap)
|
|
227
|
+
|
|
228
|
+
# Unsure why we have to normalize here. See #16958
|
|
229
|
+
p_Normalize(ret[0], r)
|
|
230
|
+
|
|
231
|
+
id_Delete(&to_id, r)
|
|
232
|
+
|
|
233
|
+
return 0
|
|
234
|
+
|
|
235
|
+
cdef int singular_polynomial_cmp(poly *p, poly *q, ring *r) noexcept:
|
|
236
|
+
"""
|
|
237
|
+
Compare two Singular elements ``p`` and ``q`` in ``r``.
|
|
238
|
+
|
|
239
|
+
INPUT:
|
|
240
|
+
|
|
241
|
+
- ``p`` -- a Singular polynomial
|
|
242
|
+
- ``q`` -- a Singular polynomial
|
|
243
|
+
- ``r`` -- a Singular ring
|
|
244
|
+
|
|
245
|
+
EXAMPLES::
|
|
246
|
+
|
|
247
|
+
sage: P.<x,y,z> = PolynomialRing(QQ,order='degrevlex')
|
|
248
|
+
sage: x == x
|
|
249
|
+
True
|
|
250
|
+
|
|
251
|
+
sage: x > y
|
|
252
|
+
True
|
|
253
|
+
sage: y^2 > x
|
|
254
|
+
True
|
|
255
|
+
|
|
256
|
+
sage: (2/3*x^2 + 1/2*y + 3) > (2/3*x^2 + 1/4*y + 10)
|
|
257
|
+
True
|
|
258
|
+
|
|
259
|
+
TESTS:
|
|
260
|
+
|
|
261
|
+
Ensure that comparison is transitive (as long as ``cfGreater`` is transitive and
|
|
262
|
+
consistent with ``cfGreaterZero``, see :issue:`39018` for more details)::
|
|
263
|
+
|
|
264
|
+
sage: P.<x,y> = GF(5)[]
|
|
265
|
+
sage: P(1) > P(4)
|
|
266
|
+
False
|
|
267
|
+
sage: P(4) > P(2)
|
|
268
|
+
True
|
|
269
|
+
sage: P(2) > P(1)
|
|
270
|
+
True
|
|
271
|
+
|
|
272
|
+
::
|
|
273
|
+
|
|
274
|
+
sage: R.<x,y> = Integers(10)[]
|
|
275
|
+
sage: l = [i*x+j*y+k for i in range(10) for j in range(10) for k in range(10)]
|
|
276
|
+
sage: l.sort()
|
|
277
|
+
sage: for i in range(len(l)):
|
|
278
|
+
....: for b in l[:i]:
|
|
279
|
+
....: assert b < l[i], (b, l[i])
|
|
280
|
+
|
|
281
|
+
More tests for :issue:`35681`::
|
|
282
|
+
|
|
283
|
+
sage: P.<x,y> = ZZ[]
|
|
284
|
+
sage: P(0) > P(-1)
|
|
285
|
+
True
|
|
286
|
+
"""
|
|
287
|
+
cdef number *h
|
|
288
|
+
cdef int tmp
|
|
289
|
+
|
|
290
|
+
if r != currRing:
|
|
291
|
+
rChangeCurrRing(r)
|
|
292
|
+
|
|
293
|
+
while True:
|
|
294
|
+
if p == NULL:
|
|
295
|
+
if q == NULL:
|
|
296
|
+
return 0
|
|
297
|
+
return -1 if r.cf.cfGreaterZero(p_GetCoeff(q, r), r.cf) else 1
|
|
298
|
+
elif q == NULL:
|
|
299
|
+
return 1 if r.cf.cfGreaterZero(p_GetCoeff(p, r), r.cf) else -1
|
|
300
|
+
|
|
301
|
+
tmp = p_Cmp(p, q, r)
|
|
302
|
+
if tmp != 0:
|
|
303
|
+
if tmp < 0:
|
|
304
|
+
return -1 if r.cf.cfGreaterZero(p_GetCoeff(q, r), r.cf) else 1
|
|
305
|
+
else:
|
|
306
|
+
return 1 if r.cf.cfGreaterZero(p_GetCoeff(p, r), r.cf) else -1
|
|
307
|
+
|
|
308
|
+
# compare coefficients
|
|
309
|
+
if not r.cf.cfEqual(p_GetCoeff(p, r), p_GetCoeff(q, r), r.cf):
|
|
310
|
+
return 1 if r.cf.cfGreater(p_GetCoeff(p, r), p_GetCoeff(q, r), r.cf) else -1
|
|
311
|
+
|
|
312
|
+
p = pNext(p)
|
|
313
|
+
q = pNext(q)
|
|
314
|
+
|
|
315
|
+
cdef int singular_polynomial_mul(poly** ret, poly *p, poly *q, ring *r) except -1:
|
|
316
|
+
"""
|
|
317
|
+
``ret[0] = p*q`` where ``p`` and ``p`` in ``r``.
|
|
318
|
+
|
|
319
|
+
INPUT:
|
|
320
|
+
|
|
321
|
+
- ``ret`` -- a pointer to a Singular polynomial to store the result in
|
|
322
|
+
- ``p`` -- a Singular polynomial
|
|
323
|
+
- ``q`` -- a Singular polynomial
|
|
324
|
+
- ``r`` -- a Singular ring
|
|
325
|
+
|
|
326
|
+
EXAMPLES::
|
|
327
|
+
|
|
328
|
+
sage: P.<x,y,z> = QQ[]
|
|
329
|
+
sage: x*y # indirect doctest
|
|
330
|
+
x*y
|
|
331
|
+
|
|
332
|
+
sage: x * P(0)
|
|
333
|
+
0
|
|
334
|
+
"""
|
|
335
|
+
if r != currRing:
|
|
336
|
+
rChangeCurrRing(r)
|
|
337
|
+
cdef unsigned long le = p_GetMaxExp(p, r)
|
|
338
|
+
cdef unsigned long lr = p_GetMaxExp(q, r)
|
|
339
|
+
cdef unsigned long esum = le + lr
|
|
340
|
+
overflow_check(esum, r)
|
|
341
|
+
ret[0] = pp_Mult_qq(p, q, r)
|
|
342
|
+
return 0
|
|
343
|
+
|
|
344
|
+
cdef int singular_polynomial_div_coeff(poly** ret, poly *p, poly *q, ring *r) except -1:
|
|
345
|
+
"""
|
|
346
|
+
``ret[0] = p/n`` where ``p`` and ``q`` in ``r`` and ``q`` constant.
|
|
347
|
+
|
|
348
|
+
The last condition is not checked.
|
|
349
|
+
|
|
350
|
+
INPUT:
|
|
351
|
+
|
|
352
|
+
- ``ret`` -- a pointer to a Singular polynomial to store the result in
|
|
353
|
+
- ``p`` -- a Singular polynomial
|
|
354
|
+
- ``q`` -- a constant Singular polynomial
|
|
355
|
+
- ``r`` -- a Singular ring
|
|
356
|
+
|
|
357
|
+
EXAMPLES::
|
|
358
|
+
|
|
359
|
+
sage: P.<x,y,z> = QQ[]
|
|
360
|
+
sage: x/2 # indirect doctest
|
|
361
|
+
1/2*x
|
|
362
|
+
|
|
363
|
+
sage: x/0
|
|
364
|
+
Traceback (most recent call last):
|
|
365
|
+
...
|
|
366
|
+
ZeroDivisionError: rational division by zero
|
|
367
|
+
"""
|
|
368
|
+
if q == NULL:
|
|
369
|
+
raise ZeroDivisionError
|
|
370
|
+
sig_on()
|
|
371
|
+
cdef number *n = p_GetCoeff(q, r)
|
|
372
|
+
n = r.cf.cfInvers(n,r.cf)
|
|
373
|
+
ret[0] = pp_Mult_nn(p, n, r)
|
|
374
|
+
n_Delete(&n, r.cf)
|
|
375
|
+
sig_off()
|
|
376
|
+
return 0
|
|
377
|
+
|
|
378
|
+
cdef int singular_polynomial_pow(poly **ret, poly *p, unsigned long exp, ring *r) except -1:
|
|
379
|
+
"""
|
|
380
|
+
``ret[0] = p**exp`` where ``p`` in ``r`` and ``exp`` > 0.
|
|
381
|
+
|
|
382
|
+
The last condition is not checked.
|
|
383
|
+
|
|
384
|
+
INPUT:
|
|
385
|
+
|
|
386
|
+
- ``ret`` -- a pointer to a Singular polynomial to store the result in
|
|
387
|
+
- ``p`` -- a Singular polynomial
|
|
388
|
+
- ``exp`` -- integer
|
|
389
|
+
- ``r`` -- a Singular ring
|
|
390
|
+
|
|
391
|
+
EXAMPLES::
|
|
392
|
+
|
|
393
|
+
sage: P.<x,y,z> = QQ[]
|
|
394
|
+
sage: f = 3*x*y + 5/2*z
|
|
395
|
+
sage: f*f == f^2 # indirect doctest
|
|
396
|
+
True
|
|
397
|
+
sage: f^2
|
|
398
|
+
9*x^2*y^2 + 15*x*y*z + 25/4*z^2
|
|
399
|
+
sage: f^0
|
|
400
|
+
1
|
|
401
|
+
sage: f^(2^60)
|
|
402
|
+
Traceback (most recent call last):
|
|
403
|
+
...
|
|
404
|
+
OverflowError: ...
|
|
405
|
+
"""
|
|
406
|
+
cdef unsigned long v = p_GetMaxExp(p, r)
|
|
407
|
+
v = v * exp
|
|
408
|
+
overflow_check(v, r)
|
|
409
|
+
|
|
410
|
+
if r != currRing:
|
|
411
|
+
rChangeCurrRing(r)
|
|
412
|
+
cdef int count = singular_polynomial_length_bounded(p, 15)
|
|
413
|
+
if count >= 15 or exp > 15:
|
|
414
|
+
sig_on()
|
|
415
|
+
ret[0] = pPower( p_Copy(p,r), exp)
|
|
416
|
+
if count >= 15 or exp > 15:
|
|
417
|
+
sig_off()
|
|
418
|
+
return 0
|
|
419
|
+
|
|
420
|
+
cdef int singular_polynomial_neg(poly **ret, poly *p, ring *r) noexcept:
|
|
421
|
+
"""
|
|
422
|
+
``ret[0] = -p where ``p`` in ``r``.
|
|
423
|
+
|
|
424
|
+
The last condition is not checked.
|
|
425
|
+
|
|
426
|
+
INPUT:
|
|
427
|
+
|
|
428
|
+
- ``ret`` -- a pointer to a Singular polynomial to store the result in
|
|
429
|
+
- ``p`` -- a Singular polynomial
|
|
430
|
+
- ``r`` -- a Singular ring
|
|
431
|
+
|
|
432
|
+
EXAMPLES::
|
|
433
|
+
|
|
434
|
+
sage: P.<x,y,z> = QQ[]
|
|
435
|
+
sage: f = 3*x*y + 5/2*z
|
|
436
|
+
sage: -f # indirect doctest
|
|
437
|
+
-3*x*y - 5/2*z
|
|
438
|
+
sage: -P(0)
|
|
439
|
+
0
|
|
440
|
+
"""
|
|
441
|
+
if r != currRing:
|
|
442
|
+
rChangeCurrRing(r)
|
|
443
|
+
ret[0] = p_Neg(p_Copy(p,r),r)
|
|
444
|
+
return 0
|
|
445
|
+
|
|
446
|
+
cdef object singular_polynomial_str(poly *p, ring *r):
|
|
447
|
+
"""
|
|
448
|
+
Return the string representation of ``p``.
|
|
449
|
+
|
|
450
|
+
INPUT:
|
|
451
|
+
|
|
452
|
+
- ``p`` -- a Singular polynomial
|
|
453
|
+
- ``r`` -- a Singular ring
|
|
454
|
+
|
|
455
|
+
EXAMPLES::
|
|
456
|
+
|
|
457
|
+
sage: P.<x,y,z> = ZZ[]
|
|
458
|
+
sage: str(x) # indirect doctest
|
|
459
|
+
'x'
|
|
460
|
+
sage: str(10*x)
|
|
461
|
+
'10*x'
|
|
462
|
+
"""
|
|
463
|
+
if r != currRing:
|
|
464
|
+
rChangeCurrRing(r)
|
|
465
|
+
|
|
466
|
+
s = bytes_to_str(p_String(p, r, r))
|
|
467
|
+
s = plusminus_pattern.sub("\\1 \\2 ", s)
|
|
468
|
+
s = parenthvar_pattern.sub("\\1", s)
|
|
469
|
+
return s
|
|
470
|
+
|
|
471
|
+
cdef object singular_polynomial_latex(poly *p, ring *r, object base, object latex_gens):
|
|
472
|
+
r"""
|
|
473
|
+
Return the LaTeX string representation of ``p``.
|
|
474
|
+
|
|
475
|
+
INPUT:
|
|
476
|
+
|
|
477
|
+
- ``p`` -- a Singular polynomial
|
|
478
|
+
- ``r`` -- a Singular ring
|
|
479
|
+
|
|
480
|
+
EXAMPLES::
|
|
481
|
+
|
|
482
|
+
sage: P.<x,y,z> = QQ[]
|
|
483
|
+
sage: latex(x) # indirect doctest
|
|
484
|
+
x
|
|
485
|
+
sage: latex(10*x^2 + 1/2*y)
|
|
486
|
+
10 x^{2} + \frac{1}{2} y
|
|
487
|
+
|
|
488
|
+
Demonstrate that coefficients over non-atomic represented rings are
|
|
489
|
+
properly parenthesized (:issue:`11186`)::
|
|
490
|
+
|
|
491
|
+
sage: # needs sage.symbolic
|
|
492
|
+
sage: x = var('x')
|
|
493
|
+
sage: K.<z> = QQ.extension(x^2 + x + 1)
|
|
494
|
+
sage: P.<v,w> = K[]
|
|
495
|
+
sage: latex((z+1)*v*w - z*w^2 + z*v + z^2*w + z + 1)
|
|
496
|
+
\left(z + 1\right) v w - z w^{2} + z v + \left(-z - 1\right) w + z + 1
|
|
497
|
+
|
|
498
|
+
Demonstrate that there are no extra blanks in latex expression of multivariate
|
|
499
|
+
polynomial (:issue:`12908`)::
|
|
500
|
+
|
|
501
|
+
sage: R.<X,Y> = ZZ[]
|
|
502
|
+
sage: latex(X-Y)
|
|
503
|
+
X - Y
|
|
504
|
+
sage: latex(X^2-X)
|
|
505
|
+
X^{2} - X
|
|
506
|
+
sage: latex(-Y^2-Y)
|
|
507
|
+
-Y^{2} - Y
|
|
508
|
+
"""
|
|
509
|
+
poly = ""
|
|
510
|
+
cdef unsigned long e
|
|
511
|
+
cdef int n = r.N, j
|
|
512
|
+
cdef int atomic_repr = base._repr_option('element_is_atomic')
|
|
513
|
+
while p:
|
|
514
|
+
|
|
515
|
+
# First determine the multinomial:
|
|
516
|
+
multi = ""
|
|
517
|
+
for j in range(1, n+1):
|
|
518
|
+
e = p_GetExp(p, j, r)
|
|
519
|
+
if e > 0:
|
|
520
|
+
multi += " " + latex_gens[j-1]
|
|
521
|
+
if e > 1:
|
|
522
|
+
multi += "^{%d}" % e
|
|
523
|
+
multi = multi.lstrip().rstrip()
|
|
524
|
+
|
|
525
|
+
# Next determine coefficient of multinomial
|
|
526
|
+
c = si2sa(p_GetCoeff(p, r), r, base)
|
|
527
|
+
if not multi:
|
|
528
|
+
multi = latex(c)
|
|
529
|
+
elif c != 1:
|
|
530
|
+
if c == -1:
|
|
531
|
+
multi = "-%s" % (multi)
|
|
532
|
+
else:
|
|
533
|
+
sc = latex(c)
|
|
534
|
+
# Add parenthesis if the coefficient consists of terms divided by +, -
|
|
535
|
+
# (starting with - is not enough) and is not the constant term
|
|
536
|
+
if not atomic_repr and multi and (sc.find("+") != -1 or sc[1:].find("-") != -1):
|
|
537
|
+
sc = "\\left(%s\\right)" % sc
|
|
538
|
+
multi = "%s %s" % (sc, multi)
|
|
539
|
+
|
|
540
|
+
# Now add on coefficiented multinomials
|
|
541
|
+
if poly:
|
|
542
|
+
poly = poly + " + "
|
|
543
|
+
poly = poly + multi
|
|
544
|
+
|
|
545
|
+
p = pNext(p)
|
|
546
|
+
|
|
547
|
+
poly = poly.lstrip().rstrip()
|
|
548
|
+
poly = poly.replace("+ -","- ")
|
|
549
|
+
|
|
550
|
+
if not poly:
|
|
551
|
+
return "0"
|
|
552
|
+
return poly
|
|
553
|
+
|
|
554
|
+
cdef object singular_polynomial_str_with_changed_varnames(poly *p, ring *r, object varnames):
|
|
555
|
+
cdef char **_names
|
|
556
|
+
cdef char **_orig_names
|
|
557
|
+
cdef int i
|
|
558
|
+
|
|
559
|
+
if len(varnames) != r.N:
|
|
560
|
+
raise TypeError("len(varnames) doesn't equal self.parent().ngens()")
|
|
561
|
+
|
|
562
|
+
_names = <char**>omAlloc0(sizeof(char*)*r.N)
|
|
563
|
+
for i from 0 <= i < r.N:
|
|
564
|
+
_name = str_to_bytes(varnames[i])
|
|
565
|
+
_names[i] = omStrDup(_name)
|
|
566
|
+
|
|
567
|
+
_orig_names = r.names
|
|
568
|
+
r.names = _names
|
|
569
|
+
s = singular_polynomial_str(p, r)
|
|
570
|
+
r.names = _orig_names
|
|
571
|
+
|
|
572
|
+
for i from 0 <= i < r.N:
|
|
573
|
+
omFree(_names[i])
|
|
574
|
+
omFree(_names)
|
|
575
|
+
return s
|
|
576
|
+
|
|
577
|
+
cdef long singular_polynomial_deg(poly *p, poly *x, ring *r) noexcept:
|
|
578
|
+
cdef long _deg, deg
|
|
579
|
+
cdef int dummy
|
|
580
|
+
|
|
581
|
+
deg = -1
|
|
582
|
+
_deg = -1
|
|
583
|
+
if p == NULL:
|
|
584
|
+
return -1
|
|
585
|
+
if r != currRing:
|
|
586
|
+
rChangeCurrRing(r)
|
|
587
|
+
if x == NULL:
|
|
588
|
+
return p_LDeg(p, &dummy, r)
|
|
589
|
+
|
|
590
|
+
cdef int i = 0
|
|
591
|
+
for i in range(1,r.N+1):
|
|
592
|
+
if p_GetExp(x, i, r):
|
|
593
|
+
break
|
|
594
|
+
while p:
|
|
595
|
+
_deg = p_GetExp(p, i, r)
|
|
596
|
+
if _deg > deg:
|
|
597
|
+
deg = _deg
|
|
598
|
+
p = pNext(p)
|
|
599
|
+
return deg
|
|
600
|
+
|
|
601
|
+
cdef int singular_polynomial_length_bounded(poly *p, int bound) noexcept:
|
|
602
|
+
"""
|
|
603
|
+
Return the number of monomials in ``p`` but stop counting at
|
|
604
|
+
``bound``.
|
|
605
|
+
|
|
606
|
+
This is useful to estimate whether a certain calculation will take
|
|
607
|
+
long or not.
|
|
608
|
+
|
|
609
|
+
INPUT:
|
|
610
|
+
|
|
611
|
+
- ``p`` -- a Singular polynomial
|
|
612
|
+
- ``bound`` -- integer > 0
|
|
613
|
+
"""
|
|
614
|
+
cdef int count = 0
|
|
615
|
+
while p != NULL and count < bound:
|
|
616
|
+
p = pNext(p)
|
|
617
|
+
count += 1
|
|
618
|
+
return count
|
|
619
|
+
|
|
620
|
+
cdef int singular_vector_maximal_component(poly *v, ring *r) except -1:
|
|
621
|
+
"""
|
|
622
|
+
returns the maximal module component of the vector ``v``.
|
|
623
|
+
INPUT:
|
|
624
|
+
|
|
625
|
+
- ``v`` -- a polynomial/vector
|
|
626
|
+
- ``r`` -- a ring
|
|
627
|
+
"""
|
|
628
|
+
cdef int res=0
|
|
629
|
+
while v!=NULL:
|
|
630
|
+
res=max(p_GetComp(v, r), res)
|
|
631
|
+
v = pNext(v)
|
|
632
|
+
return res
|
|
633
|
+
|
|
634
|
+
cdef int singular_polynomial_subst(poly **p, int var_index, poly *value, ring *r) except -1:
|
|
635
|
+
"""
|
|
636
|
+
Substitute variable ``var_index`` with ``value`` in ``p``.
|
|
637
|
+
|
|
638
|
+
INPUT:
|
|
639
|
+
|
|
640
|
+
- ``p`` -- a polynomial
|
|
641
|
+
- ``var_index`` -- integer < ngens (zero based indexing)
|
|
642
|
+
- ``value`` -- a polynomial
|
|
643
|
+
- ``r`` -- a ring
|
|
644
|
+
"""
|
|
645
|
+
|
|
646
|
+
if r != currRing:
|
|
647
|
+
rChangeCurrRing(r)
|
|
648
|
+
|
|
649
|
+
if p_IsConstant(value, r):
|
|
650
|
+
p[0] = pSubst(p[0], var_index+1, value)
|
|
651
|
+
return 0
|
|
652
|
+
|
|
653
|
+
cdef unsigned long exp = p_GetExp(p[0], var_index+1, r) * p_GetMaxExp(value, r)
|
|
654
|
+
|
|
655
|
+
overflow_check(exp, r)
|
|
656
|
+
|
|
657
|
+
cdef int count = singular_polynomial_length_bounded(p[0], 15)
|
|
658
|
+
if unlikely(count >= 15 or exp > 15): sig_on()
|
|
659
|
+
p[0] = pSubst(p[0], var_index+1, value)
|
|
660
|
+
if unlikely(count >= 15 or exp > 15): sig_off()
|
|
661
|
+
return 0
|
|
Binary file
|