passagemath-singular 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.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-x86_64-linux-musl.so +0 -0
- passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
- passagemath_singular-10.6.31rc3.dist-info/RECORD +493 -0
- passagemath_singular-10.6.31rc3.dist-info/WHEEL +5 -0
- passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
- passagemath_singular.libs/libSingular-4-67059f19.4.1.so +0 -0
- passagemath_singular.libs/libcddgmp-30166d29.so.0.1.3 +0 -0
- passagemath_singular.libs/libfactory-4-9d37bcf4.4.1.so +0 -0
- passagemath_singular.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
- passagemath_singular.libs/libgcc_s-0cd532bd.so.1 +0 -0
- passagemath_singular.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
- passagemath_singular.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
- passagemath_singular.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
- passagemath_singular.libs/libgsl-42cda06f.so.28.0.0 +0 -0
- passagemath_singular.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
- passagemath_singular.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
- passagemath_singular.libs/libntl-26885ca2.so.44.0.1 +0 -0
- passagemath_singular.libs/libomalloc-0-e9ff96db.9.6.so +0 -0
- passagemath_singular.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
- passagemath_singular.libs/libpolys-4-8bcf8e7d.4.1.so +0 -0
- passagemath_singular.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
- passagemath_singular.libs/libreadline-06542304.so.8.2 +0 -0
- passagemath_singular.libs/libsingular_resources-4-73bf7623.4.1.so +0 -0
- passagemath_singular.libs/libstdc++-5d72f927.so.6.0.33 +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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
- sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.so +0 -0
- sage/libs/singular/option.pyx +671 -0
- sage/libs/singular/polynomial.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/singular/polynomial.pxd +39 -0
- sage/libs/singular/polynomial.pyx +661 -0
- sage/libs/singular/ring.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/singular/ring.pxd +58 -0
- sage/libs/singular/ring.pyx +893 -0
- sage/libs/singular/singular.cpython-314-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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-x86_64-linux-musl.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 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
# sage.doctest: needs sage.symbolic
|
|
3
|
+
"""
|
|
4
|
+
Comparison of Symbolic Expressions
|
|
5
|
+
|
|
6
|
+
There are two useful ways to compare symbolic expressions:
|
|
7
|
+
|
|
8
|
+
* :func:`print_order` is how the terms are ordered. This is always
|
|
9
|
+
defined. If you need a fast comparison, this is it.
|
|
10
|
+
|
|
11
|
+
* :func:`math_order` is the "mathematical" comparison. This may raise
|
|
12
|
+
an exception if the answer is unknown (to Sage) or cannot, in
|
|
13
|
+
principle, evaluated to a boolean (for example, if it involves
|
|
14
|
+
symbolic variables). Can be very slow as it potentially calls
|
|
15
|
+
Maxima to prove the inequality.
|
|
16
|
+
|
|
17
|
+
There is also a mixed version:
|
|
18
|
+
|
|
19
|
+
* :func:`mixed_order` which is print order if variables are present,
|
|
20
|
+
and mathematical/numeric if not. This should enable quick and
|
|
21
|
+
correct results.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
# ****************************************************************************
|
|
25
|
+
# Copyright (C) 2014 Volker Braun
|
|
26
|
+
# Copyright (C) 2016 Ralf Stephan
|
|
27
|
+
# Copyright (C) 2017 Frédéric Chapoton
|
|
28
|
+
# Copyright (C) 2021 Michael Orlitzky
|
|
29
|
+
# Copyright (C) 2021 Jonathan Kliem
|
|
30
|
+
#
|
|
31
|
+
# This program is free software: you can redistribute it and/or modify
|
|
32
|
+
# it under the terms of the GNU General Public License as published by
|
|
33
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
34
|
+
# (at your option) any later version.
|
|
35
|
+
# https://www.gnu.org/licenses/
|
|
36
|
+
# ****************************************************************************
|
|
37
|
+
|
|
38
|
+
from cpython cimport *
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
cdef int print_order_c(Expression lhs, Expression rhs) noexcept:
|
|
42
|
+
"""
|
|
43
|
+
Print comparison.
|
|
44
|
+
|
|
45
|
+
See :meth:`print_order` for details.
|
|
46
|
+
"""
|
|
47
|
+
return print_order_compare((<Expression>lhs)._gobj, (<Expression>rhs)._gobj)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
cpdef int print_order(lhs, rhs) except -2:
|
|
51
|
+
"""
|
|
52
|
+
Comparison in the print order
|
|
53
|
+
|
|
54
|
+
INPUT:
|
|
55
|
+
|
|
56
|
+
- ``lhs``, ``rhs`` -- two symbolic expressions or something that
|
|
57
|
+
can be converted to one
|
|
58
|
+
|
|
59
|
+
OUTPUT:
|
|
60
|
+
|
|
61
|
+
Either `-1`, `0`, or `+1` indicating the comparison. An exception
|
|
62
|
+
is raised if the arguments cannot be converted into the symbolic
|
|
63
|
+
ring.
|
|
64
|
+
|
|
65
|
+
EXAMPLES::
|
|
66
|
+
|
|
67
|
+
sage: from sage.symbolic.expression import print_order
|
|
68
|
+
sage: print_order(1, oo)
|
|
69
|
+
1
|
|
70
|
+
sage: print_order(e, oo)
|
|
71
|
+
-1
|
|
72
|
+
sage: print_order(pi, oo)
|
|
73
|
+
1
|
|
74
|
+
sage: print_order(1, sqrt(2))
|
|
75
|
+
1
|
|
76
|
+
|
|
77
|
+
Check that :issue:`12967` is fixed::
|
|
78
|
+
|
|
79
|
+
sage: print_order(SR(oo), sqrt(2))
|
|
80
|
+
1
|
|
81
|
+
"""
|
|
82
|
+
if not isinstance(lhs, Expression):
|
|
83
|
+
from sage.symbolic.ring import SR
|
|
84
|
+
lhs = SR(lhs)
|
|
85
|
+
if not isinstance(rhs, Expression):
|
|
86
|
+
from sage.symbolic.ring import SR
|
|
87
|
+
rhs = SR(rhs)
|
|
88
|
+
return print_order_c(lhs, rhs)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class _print_key():
|
|
92
|
+
|
|
93
|
+
def __init__(self, ex):
|
|
94
|
+
"""
|
|
95
|
+
Sort key to sort in print order.
|
|
96
|
+
|
|
97
|
+
INPUT:
|
|
98
|
+
|
|
99
|
+
- ``ex`` -- symbolic expression or something that can be
|
|
100
|
+
converted into one
|
|
101
|
+
|
|
102
|
+
EXAMPLES::
|
|
103
|
+
|
|
104
|
+
sage: from sage.symbolic.expression import _print_key
|
|
105
|
+
sage: _print_key(1)
|
|
106
|
+
<sage.symbolic.expression._print_key object at 0x...>
|
|
107
|
+
"""
|
|
108
|
+
if not isinstance(ex, Expression):
|
|
109
|
+
from sage.symbolic.ring import SR
|
|
110
|
+
ex = SR(ex)
|
|
111
|
+
self.ex = ex
|
|
112
|
+
|
|
113
|
+
def __lt__(self, other):
|
|
114
|
+
"""
|
|
115
|
+
Implement "less than" to make the key comparable.
|
|
116
|
+
|
|
117
|
+
INPUT:
|
|
118
|
+
|
|
119
|
+
- ``other`` -- another :class:`_print_key` instance
|
|
120
|
+
|
|
121
|
+
OUTPUT: boolean
|
|
122
|
+
|
|
123
|
+
EXAMPLES::
|
|
124
|
+
|
|
125
|
+
sage: from sage.symbolic.expression import print_order, _print_key
|
|
126
|
+
sage: print_order(1, 2)
|
|
127
|
+
-1
|
|
128
|
+
sage: _print_key(1) < _print_key(2)
|
|
129
|
+
True
|
|
130
|
+
sage: print_order(1, sqrt(2))
|
|
131
|
+
1
|
|
132
|
+
sage: _print_key(1) < _print_key(sqrt(2))
|
|
133
|
+
False
|
|
134
|
+
"""
|
|
135
|
+
return print_order_c(self.ex, other.ex) < 0
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
cpdef print_sorted(expressions):
|
|
139
|
+
"""
|
|
140
|
+
Sort a list in print order.
|
|
141
|
+
|
|
142
|
+
INPUT:
|
|
143
|
+
|
|
144
|
+
- ``expressions`` -- list/tuple/iterable of symbolic
|
|
145
|
+
expressions, or something that can be converted to one
|
|
146
|
+
|
|
147
|
+
OUTPUT: the list sorted by :meth:`print_order`
|
|
148
|
+
|
|
149
|
+
EXAMPLES::
|
|
150
|
+
|
|
151
|
+
sage: from sage.symbolic.expression import print_sorted
|
|
152
|
+
sage: print_sorted([SR(1), SR(e), SR(pi), sqrt(2)])
|
|
153
|
+
[e, sqrt(2), pi, 1]
|
|
154
|
+
"""
|
|
155
|
+
return sorted(expressions, key=_print_key)
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
class _math_key():
|
|
159
|
+
|
|
160
|
+
def __init__(self, ex):
|
|
161
|
+
"""
|
|
162
|
+
Sort key to sort in "Mathematics" order.
|
|
163
|
+
|
|
164
|
+
INPUT:
|
|
165
|
+
|
|
166
|
+
- ``ex`` -- symbolic expression or something that can be
|
|
167
|
+
converted into one
|
|
168
|
+
|
|
169
|
+
EXAMPLES::
|
|
170
|
+
|
|
171
|
+
sage: from sage.symbolic.expression import _math_key
|
|
172
|
+
sage: _math_key(1)
|
|
173
|
+
<sage.symbolic.expression._math_key object at 0x...>
|
|
174
|
+
"""
|
|
175
|
+
if not isinstance(ex, Expression):
|
|
176
|
+
from sage.symbolic.ring import SR
|
|
177
|
+
ex = SR(ex)
|
|
178
|
+
self.ex = ex
|
|
179
|
+
|
|
180
|
+
def __lt__(self, other):
|
|
181
|
+
"""
|
|
182
|
+
Implement "less than" to make the key comparable.
|
|
183
|
+
|
|
184
|
+
INPUT:
|
|
185
|
+
|
|
186
|
+
- ``other`` -- another :class:`_print_key` instance
|
|
187
|
+
|
|
188
|
+
OUTPUT: boolean; a :exc:`ValueError` is raised if we do not know how to
|
|
189
|
+
perform the comparison
|
|
190
|
+
|
|
191
|
+
EXAMPLES::
|
|
192
|
+
|
|
193
|
+
sage: from sage.symbolic.expression import _math_key
|
|
194
|
+
sage: _math_key(1) < _math_key(2)
|
|
195
|
+
True
|
|
196
|
+
sage: _math_key(1) < _math_key(sqrt(2))
|
|
197
|
+
True
|
|
198
|
+
|
|
199
|
+
Check that :issue:`12967` is fixed::
|
|
200
|
+
|
|
201
|
+
sage: _math_key(1) < _math_key(oo)
|
|
202
|
+
True
|
|
203
|
+
"""
|
|
204
|
+
less_than = bool(self.ex < other.ex)
|
|
205
|
+
greater_than = bool(self.ex > other.ex)
|
|
206
|
+
if less_than:
|
|
207
|
+
if not greater_than:
|
|
208
|
+
return True
|
|
209
|
+
else:
|
|
210
|
+
assert False # unreachable
|
|
211
|
+
else:
|
|
212
|
+
if greater_than:
|
|
213
|
+
return False
|
|
214
|
+
else:
|
|
215
|
+
raise ValueError('cannot compare {0} and {1}'.format(self.ex, other.ex))
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
cpdef math_sorted(expressions):
|
|
219
|
+
"""
|
|
220
|
+
Sort a list of symbolic numbers in the "Mathematics" order.
|
|
221
|
+
|
|
222
|
+
INPUT:
|
|
223
|
+
|
|
224
|
+
- ``expressions`` -- list/tuple/iterable of symbolic
|
|
225
|
+
expressions, or something that can be converted to one
|
|
226
|
+
|
|
227
|
+
OUTPUT:
|
|
228
|
+
|
|
229
|
+
The list sorted by ascending (real) value. If an entry does not
|
|
230
|
+
define a real value (or plus/minus infinity), or if the comparison
|
|
231
|
+
is not known, a :exc:`ValueError` is raised.
|
|
232
|
+
|
|
233
|
+
EXAMPLES::
|
|
234
|
+
|
|
235
|
+
sage: from sage.symbolic.expression import math_sorted
|
|
236
|
+
sage: math_sorted([SR(1), SR(e), SR(pi), sqrt(2)])
|
|
237
|
+
[1, sqrt(2), e, pi]
|
|
238
|
+
"""
|
|
239
|
+
return sorted(expressions, key=_math_key)
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
cpdef int mixed_order(lhs, rhs) except -2:
|
|
243
|
+
"""
|
|
244
|
+
Comparison in the mixed order
|
|
245
|
+
|
|
246
|
+
INPUT:
|
|
247
|
+
|
|
248
|
+
- ``lhs``, ``rhs`` -- two symbolic expressions or something that
|
|
249
|
+
can be converted to one
|
|
250
|
+
|
|
251
|
+
OUTPUT:
|
|
252
|
+
|
|
253
|
+
Either `-1`, `0`, or `+1` indicating the comparison. An exception
|
|
254
|
+
is raised if the arguments cannot be converted into the symbolic
|
|
255
|
+
ring.
|
|
256
|
+
|
|
257
|
+
EXAMPLES::
|
|
258
|
+
|
|
259
|
+
sage: from sage.symbolic.expression import mixed_order
|
|
260
|
+
sage: mixed_order(1, oo)
|
|
261
|
+
-1
|
|
262
|
+
sage: mixed_order(e, oo)
|
|
263
|
+
-1
|
|
264
|
+
sage: mixed_order(pi, oo)
|
|
265
|
+
-1
|
|
266
|
+
sage: mixed_order(1, sqrt(2))
|
|
267
|
+
-1
|
|
268
|
+
sage: mixed_order(x + x^2, x*(x+1))
|
|
269
|
+
-1
|
|
270
|
+
|
|
271
|
+
Check that :issue:`12967` is fixed::
|
|
272
|
+
|
|
273
|
+
sage: mixed_order(SR(oo), sqrt(2))
|
|
274
|
+
1
|
|
275
|
+
|
|
276
|
+
Ensure that :issue:`32185` is fixed::
|
|
277
|
+
|
|
278
|
+
sage: mixed_order(pi, 0)
|
|
279
|
+
1
|
|
280
|
+
sage: mixed_order(golden_ratio, 0)
|
|
281
|
+
1
|
|
282
|
+
sage: mixed_order(log2, 0)
|
|
283
|
+
1
|
|
284
|
+
"""
|
|
285
|
+
if lhs is rhs:
|
|
286
|
+
return 0
|
|
287
|
+
if not isinstance(lhs, Expression):
|
|
288
|
+
from sage.symbolic.ring import SR
|
|
289
|
+
lhs = SR(lhs)
|
|
290
|
+
if not isinstance(rhs, Expression):
|
|
291
|
+
from sage.symbolic.ring import SR
|
|
292
|
+
rhs = SR(rhs)
|
|
293
|
+
less_than = _mixed_key(lhs) < _mixed_key(rhs)
|
|
294
|
+
if less_than:
|
|
295
|
+
return -1
|
|
296
|
+
greater_than = _mixed_key(lhs) > _mixed_key(rhs)
|
|
297
|
+
if greater_than:
|
|
298
|
+
return 1
|
|
299
|
+
else:
|
|
300
|
+
return 0
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
class _mixed_key():
|
|
304
|
+
|
|
305
|
+
def __init__(self, ex):
|
|
306
|
+
"""
|
|
307
|
+
Sort key to sort in mixed order.
|
|
308
|
+
|
|
309
|
+
Mixed order is print order if variables are present,
|
|
310
|
+
mathematical/numeric if not. This should enable quick
|
|
311
|
+
and correct results.
|
|
312
|
+
|
|
313
|
+
INPUT:
|
|
314
|
+
|
|
315
|
+
- ``ex`` -- symbolic expression or something that can be
|
|
316
|
+
converted into one
|
|
317
|
+
|
|
318
|
+
EXAMPLES::
|
|
319
|
+
|
|
320
|
+
sage: from sage.symbolic.expression import _mixed_key
|
|
321
|
+
sage: _mixed_key(1)
|
|
322
|
+
<sage.symbolic.expression._mixed_key object at 0x...>
|
|
323
|
+
"""
|
|
324
|
+
if not isinstance(ex, Expression):
|
|
325
|
+
from sage.symbolic.ring import SR
|
|
326
|
+
ex = SR(ex)
|
|
327
|
+
self.ex = ex
|
|
328
|
+
|
|
329
|
+
def __lt__(self, other):
|
|
330
|
+
"""
|
|
331
|
+
Implement "less than" to make the key comparable.
|
|
332
|
+
|
|
333
|
+
INPUT:
|
|
334
|
+
|
|
335
|
+
- ``other`` -- another :class:`_mixed_key` instance
|
|
336
|
+
|
|
337
|
+
OUTPUT: boolean; a :exc:`ValueError` is raised if we do not know how to
|
|
338
|
+
perform the comparison
|
|
339
|
+
|
|
340
|
+
EXAMPLES::
|
|
341
|
+
|
|
342
|
+
sage: from sage.symbolic.expression import _mixed_key
|
|
343
|
+
sage: _mixed_key(1) < _mixed_key(2)
|
|
344
|
+
True
|
|
345
|
+
sage: _mixed_key(1) < _mixed_key(sqrt(2))
|
|
346
|
+
True
|
|
347
|
+
|
|
348
|
+
Check that :issue:`12967` is fixed::
|
|
349
|
+
|
|
350
|
+
sage: _mixed_key(1) < _mixed_key(oo)
|
|
351
|
+
True
|
|
352
|
+
"""
|
|
353
|
+
from sage.rings.real_mpfi import RIF
|
|
354
|
+
selfv = len(self.ex.variables())
|
|
355
|
+
otherv = len(other.ex.variables())
|
|
356
|
+
if selfv:
|
|
357
|
+
if otherv:
|
|
358
|
+
return _print_key(self.ex) < _print_key(other.ex)
|
|
359
|
+
else:
|
|
360
|
+
return False
|
|
361
|
+
else:
|
|
362
|
+
if otherv:
|
|
363
|
+
return True
|
|
364
|
+
|
|
365
|
+
# no variables involved from here on
|
|
366
|
+
rel = self.ex < other.ex
|
|
367
|
+
if (self.ex.is_infinity() or other.ex.is_infinity()):
|
|
368
|
+
pynac_result = decide_relational((<Expression>rel)._gobj)
|
|
369
|
+
if pynac_result == relational_undecidable:
|
|
370
|
+
raise ValueError('cannot compare {0} and {1}'.format(self.ex, other.ex))
|
|
371
|
+
return pynac_result == relational_true
|
|
372
|
+
|
|
373
|
+
det_ex = self.ex - other.ex
|
|
374
|
+
if not has_symbol_or_function((<Expression>rel)._gobj) and not det_ex.is_constant():
|
|
375
|
+
while hasattr(det_ex, 'pyobject') and isinstance(det_ex, Expression):
|
|
376
|
+
try:
|
|
377
|
+
det_ex = det_ex.pyobject()
|
|
378
|
+
except TypeError:
|
|
379
|
+
break
|
|
380
|
+
if not isinstance(det_ex, Expression):
|
|
381
|
+
return det_ex < 0
|
|
382
|
+
from sage.rings.qqbar import QQbar
|
|
383
|
+
try:
|
|
384
|
+
from sage.rings.qqbar import QQbar
|
|
385
|
+
num = QQbar(det_ex)
|
|
386
|
+
except (TypeError, AttributeError,ValueError,NotImplementedError):
|
|
387
|
+
try:
|
|
388
|
+
num = det_ex.expand().n(RIF.prec()+5)
|
|
389
|
+
except (TypeError, AttributeError):
|
|
390
|
+
raise ValueError('cannot compare {0} and {1}'.format(self.ex, other.ex))
|
|
391
|
+
else:
|
|
392
|
+
return num < 0
|
|
393
|
+
else:
|
|
394
|
+
return num < 0
|
|
395
|
+
|
|
396
|
+
# here we have expressions containing functions
|
|
397
|
+
try:
|
|
398
|
+
num = det_ex.expand().n(RIF.prec()+5)
|
|
399
|
+
except (TypeError, AttributeError):
|
|
400
|
+
raise ValueError('cannot compare {0} and {1}'.format(self.ex, other.ex))
|
|
401
|
+
else:
|
|
402
|
+
return num < 0
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
cpdef mixed_sorted(expressions):
|
|
406
|
+
"""
|
|
407
|
+
Sort a list of symbolic numbers in the "Mixed" order.
|
|
408
|
+
|
|
409
|
+
INPUT:
|
|
410
|
+
|
|
411
|
+
- ``expressions`` -- list/tuple/iterable of symbolic
|
|
412
|
+
expressions, or something that can be converted to one
|
|
413
|
+
|
|
414
|
+
OUTPUT:
|
|
415
|
+
|
|
416
|
+
In the list the numeric values are sorted by ascending (real) value,
|
|
417
|
+
and the expressions with variables according to print order.
|
|
418
|
+
If an entry does not
|
|
419
|
+
define a real value (or plus/minus infinity), or if the comparison
|
|
420
|
+
is not known, a :exc:`ValueError` is raised.
|
|
421
|
+
|
|
422
|
+
EXAMPLES::
|
|
423
|
+
|
|
424
|
+
sage: from sage.symbolic.expression import mixed_sorted
|
|
425
|
+
sage: mixed_sorted([SR(1), SR(e), SR(pi), sqrt(2), x, sqrt(x), sin(1/x)])
|
|
426
|
+
[1, sqrt(2), e, pi, sin(1/x), sqrt(x), x]
|
|
427
|
+
"""
|
|
428
|
+
return sorted(expressions, key=_mixed_key)
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
# sage.doctest: needs sage.symbolic
|
|
3
|
+
"""
|
|
4
|
+
The constant `e`
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# ****************************************************************************
|
|
8
|
+
# Copyright (C) 2008 William Stein <wstein@gmail.com>
|
|
9
|
+
# Copyright (C) 2008-2009 Burcin Erocal <burcin@erocal.org>
|
|
10
|
+
# Copyright (C) 2009-2012 Mike Hansen <mhansen@gmail.com>
|
|
11
|
+
# Copyright (C) 2010 David Kirkby
|
|
12
|
+
# Copyright (C) 2012 Karl-Dieter Crisman
|
|
13
|
+
#
|
|
14
|
+
# This program is free software: you can redistribute it and/or modify
|
|
15
|
+
# it under the terms of the GNU General Public License as published by
|
|
16
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
17
|
+
# (at your option) any later version.
|
|
18
|
+
# https://www.gnu.org/licenses/
|
|
19
|
+
# ****************************************************************************
|
|
20
|
+
|
|
21
|
+
# keep exp(1) for fast access
|
|
22
|
+
# this is initialized in the constructor of the class E below to prevent
|
|
23
|
+
# circular imports while loading the library
|
|
24
|
+
|
|
25
|
+
# Note, the nearest IEEE 754 value of e is NOT the same as the correctly
|
|
26
|
+
# rounded decimal value of e.
|
|
27
|
+
# The numerical value of e = 2.71828182845904523536...
|
|
28
|
+
# Correctly rounded decimal number = 2.7182818284590452
|
|
29
|
+
# Nearest IEEE 754 format number = 2.7182818284590451
|
|
30
|
+
# Value returned on some or all AMD/Intel CPUs = 2.7182818284590451
|
|
31
|
+
# On Sun Blade 1000 with SPARC processors = 2.7182818284590455
|
|
32
|
+
|
|
33
|
+
cdef object exp_one
|
|
34
|
+
|
|
35
|
+
cdef class E(Expression):
|
|
36
|
+
def __init__(self):
|
|
37
|
+
r"""
|
|
38
|
+
Dummy class to represent base of the natural logarithm.
|
|
39
|
+
|
|
40
|
+
The base of the natural logarithm ``e`` is not a constant in GiNaC/Sage.
|
|
41
|
+
It is represented by ``exp(1)``.
|
|
42
|
+
|
|
43
|
+
This class provides a dummy object that behaves well under addition,
|
|
44
|
+
multiplication, etc. and on exponentiation calls the function ``exp``.
|
|
45
|
+
|
|
46
|
+
EXAMPLES:
|
|
47
|
+
|
|
48
|
+
The constant defined at the top level is just ``exp(1)``::
|
|
49
|
+
|
|
50
|
+
sage: e.operator()
|
|
51
|
+
exp
|
|
52
|
+
sage: e.operands()
|
|
53
|
+
[1]
|
|
54
|
+
|
|
55
|
+
Arithmetic works::
|
|
56
|
+
|
|
57
|
+
sage: e + 2
|
|
58
|
+
e + 2
|
|
59
|
+
sage: 2 + e
|
|
60
|
+
e + 2
|
|
61
|
+
sage: 2*e
|
|
62
|
+
2*e
|
|
63
|
+
sage: e*2
|
|
64
|
+
2*e
|
|
65
|
+
sage: x*e
|
|
66
|
+
x*e
|
|
67
|
+
sage: var('a,b')
|
|
68
|
+
(a, b)
|
|
69
|
+
sage: t = e^(a+b); t
|
|
70
|
+
e^(a + b)
|
|
71
|
+
sage: t.operands()
|
|
72
|
+
[a + b]
|
|
73
|
+
|
|
74
|
+
Numeric evaluation, conversion to other systems, and pickling works
|
|
75
|
+
as expected. Note that these are properties of the :func:`exp` function,
|
|
76
|
+
not this class::
|
|
77
|
+
|
|
78
|
+
sage: RR(e)
|
|
79
|
+
2.71828182845905
|
|
80
|
+
sage: R = RealField(200); R
|
|
81
|
+
Real Field with 200 bits of precision
|
|
82
|
+
sage: R(e)
|
|
83
|
+
2.7182818284590452353602874713526624977572470936999595749670
|
|
84
|
+
sage: em = 1 + e^(1-e); em
|
|
85
|
+
e^(-e + 1) + 1
|
|
86
|
+
sage: R(em)
|
|
87
|
+
1.1793740787340171819619895873183164984596816017589156131574
|
|
88
|
+
sage: maxima(e).float()
|
|
89
|
+
2.718281828459045
|
|
90
|
+
sage: t = mathematica(e) # optional - mathematica
|
|
91
|
+
sage: t # optional - mathematica
|
|
92
|
+
E
|
|
93
|
+
sage: float(t) # optional - mathematica
|
|
94
|
+
2.718281828459045...
|
|
95
|
+
|
|
96
|
+
sage: loads(dumps(e))
|
|
97
|
+
e
|
|
98
|
+
|
|
99
|
+
sage: float(e)
|
|
100
|
+
2.718281828459045...
|
|
101
|
+
sage: e.__float__()
|
|
102
|
+
2.718281828459045...
|
|
103
|
+
sage: e._mpfr_(RealField(100))
|
|
104
|
+
2.7182818284590452353602874714
|
|
105
|
+
sage: e._real_double_(RDF) # abs tol 5e-16
|
|
106
|
+
2.718281828459045
|
|
107
|
+
sage: import sympy # needs sympy
|
|
108
|
+
sage: sympy.E == e # indirect doctest # needs sympy
|
|
109
|
+
True
|
|
110
|
+
|
|
111
|
+
TESTS::
|
|
112
|
+
|
|
113
|
+
sage: t = e^a; t
|
|
114
|
+
e^a
|
|
115
|
+
sage: t^b
|
|
116
|
+
(e^a)^b
|
|
117
|
+
sage: SR(1).exp()
|
|
118
|
+
e
|
|
119
|
+
|
|
120
|
+
Testing that it works with matrices (see :issue:`4735`)::
|
|
121
|
+
|
|
122
|
+
sage: m = matrix(QQ, 2, 2, [1,0,0,1])
|
|
123
|
+
sage: e^m
|
|
124
|
+
[e 0]
|
|
125
|
+
[0 e]
|
|
126
|
+
"""
|
|
127
|
+
from sage.symbolic.ring import SR
|
|
128
|
+
|
|
129
|
+
global exp_one
|
|
130
|
+
exp_one = SR.one().exp()
|
|
131
|
+
Expression.__init__(self, SR, exp_one)
|
|
132
|
+
|
|
133
|
+
def __pow__(left, right, dummy):
|
|
134
|
+
"""
|
|
135
|
+
Call the `exp` function when taking powers of `e`.
|
|
136
|
+
|
|
137
|
+
EXAMPLES::
|
|
138
|
+
|
|
139
|
+
sage: var('a,b')
|
|
140
|
+
(a, b)
|
|
141
|
+
sage: t = e^a; t
|
|
142
|
+
e^a
|
|
143
|
+
sage: t.operator()
|
|
144
|
+
exp
|
|
145
|
+
sage: t.operands()
|
|
146
|
+
[a]
|
|
147
|
+
|
|
148
|
+
This applies to the unit argument as well::
|
|
149
|
+
|
|
150
|
+
sage: u = SR(1).exp()^a; u
|
|
151
|
+
e^a
|
|
152
|
+
sage: u.operator()
|
|
153
|
+
exp
|
|
154
|
+
sage: u.operands()
|
|
155
|
+
[a]
|
|
156
|
+
|
|
157
|
+
It also works with matrices (see :issue:`4735`)::
|
|
158
|
+
|
|
159
|
+
sage: m = matrix(QQ, 2, 2, [1,0,0,1])
|
|
160
|
+
sage: e^m
|
|
161
|
+
[e 0]
|
|
162
|
+
[0 e]
|
|
163
|
+
sage: A = matrix(RDF, [[1,2],[3,4]])
|
|
164
|
+
sage: e^A # rel tol 5e-14 # needs scipy
|
|
165
|
+
[51.968956198705044 74.73656456700327]
|
|
166
|
+
[112.10484685050491 164.07380304920997]
|
|
167
|
+
"""
|
|
168
|
+
if isinstance(left, E):
|
|
169
|
+
if isinstance(right, E):
|
|
170
|
+
return exp_one.exp()
|
|
171
|
+
try:
|
|
172
|
+
return right.exp()
|
|
173
|
+
except AttributeError:
|
|
174
|
+
from sage.symbolic.ring import SR
|
|
175
|
+
return SR(right).exp()
|
|
176
|
+
else:
|
|
177
|
+
from sage.symbolic.ring import SR
|
|
178
|
+
return SR(left)**exp_one
|
|
Binary file
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
cpdef _repr_Expression(x)
|
|
3
|
+
cpdef _latex_Expression(x)
|
|
4
|
+
cpdef new_Expression(parent, x)
|
|
5
|
+
cpdef new_Expression_from_pyobject(parent, x, bint force=?, bint recursive=?)
|
|
6
|
+
cpdef new_Expression_wild(parent, unsigned int n=?)
|
|
7
|
+
cpdef new_Expression_symbol(parent, name=?, latex_name=?, domain=?)
|