passagemath-singular 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_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-gnu.so +0 -0
- passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
- passagemath_singular-10.6.31rc3.dist-info/RECORD +491 -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-20aec911.4.1.so +0 -0
- passagemath_singular.libs/libcddgmp-21acf0c6.so.0.1.3 +0 -0
- passagemath_singular.libs/libfactory-4-fcee31da.4.1.so +0 -0
- passagemath_singular.libs/libflint-66e12231.so.21.0.0 +0 -0
- passagemath_singular.libs/libgf2x-a4cdec90.so.3.0.0 +0 -0
- passagemath_singular.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
- passagemath_singular.libs/libgmp-6e109695.so.10.5.0 +0 -0
- passagemath_singular.libs/libgsl-cda90e79.so.28.0.0 +0 -0
- passagemath_singular.libs/libmpfr-82690d50.so.6.2.1 +0 -0
- passagemath_singular.libs/libntl-e6f0d543.so.44.0.1 +0 -0
- passagemath_singular.libs/libomalloc-0-5c9e866e.9.6.so +0 -0
- passagemath_singular.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
- passagemath_singular.libs/libpolys-4-5c0a87e0.4.1.so +0 -0
- passagemath_singular.libs/libquadmath-2284e583.so.0.0.0 +0 -0
- passagemath_singular.libs/libreadline-ea270e21.so.8.2 +0 -0
- passagemath_singular.libs/libsingular_resources-4-a1aafc6d.4.1.so +0 -0
- passagemath_singular.libs/libtinfo-ceb117d9.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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-gnu.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
- sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-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-x86_64-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-x86_64-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-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/option.pyx +671 -0
- sage/libs/singular/polynomial.cpython-314-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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-x86_64-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
|
Binary file
|
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
"""
|
|
3
|
+
Fast F-Matrix Methods
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2021 Guillermo Aboumrad <gh_willieab>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# ****************************************************************************
|
|
11
|
+
|
|
12
|
+
cimport cython
|
|
13
|
+
from sage.algebras.fusion_rings.poly_tup_engine cimport (
|
|
14
|
+
compute_known_powers,
|
|
15
|
+
get_variables_degrees, variables,
|
|
16
|
+
poly_to_tup, _tup_to_poly,
|
|
17
|
+
subs, subs_squares, reduce_poly_dict, resize,
|
|
18
|
+
_flatten_coeffs, _unflatten_coeffs,
|
|
19
|
+
has_appropriate_linear_term,
|
|
20
|
+
resize
|
|
21
|
+
)
|
|
22
|
+
from sage.algebras.fusion_rings.shm_managers cimport KSHandler, FvarsHandler
|
|
23
|
+
from sage.rings.number_field.number_field_element cimport NumberFieldElement_absolute
|
|
24
|
+
from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular, MPolynomialRing_libsingular
|
|
25
|
+
from sage.rings.polynomial.polydict cimport ETuple
|
|
26
|
+
|
|
27
|
+
from ctypes import cast, py_object
|
|
28
|
+
from itertools import product
|
|
29
|
+
from sage.rings.ideal import Ideal
|
|
30
|
+
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
|
|
31
|
+
|
|
32
|
+
##########################
|
|
33
|
+
# Fast class methods #
|
|
34
|
+
##########################
|
|
35
|
+
|
|
36
|
+
cpdef _solve_for_linear_terms(factory, list eqns=None):
|
|
37
|
+
r"""
|
|
38
|
+
Solve for a linear term occurring in a two-term equation, and for
|
|
39
|
+
variables appearing in univariate single-term equations.
|
|
40
|
+
|
|
41
|
+
EXAMPLES::
|
|
42
|
+
|
|
43
|
+
sage: f = FusionRing("D3", 1).get_fmatrix(inject_variables=True, new=True)
|
|
44
|
+
creating variables fx1..fx27
|
|
45
|
+
Defining fx0, ..., fx26
|
|
46
|
+
sage: f._reset_solver_state()
|
|
47
|
+
sage: f.ideal_basis = [fx0**3, fx0 + fx3**4, fx2**2 - fx3, fx2 - fx3**2, fx4 - fx2]
|
|
48
|
+
sage: from sage.algebras.fusion_rings.poly_tup_engine import poly_to_tup
|
|
49
|
+
sage: f.ideal_basis = [poly_to_tup(p) for p in f.ideal_basis]
|
|
50
|
+
sage: from sage.algebras.fusion_rings.poly_tup_engine import poly_tup_sortkey
|
|
51
|
+
sage: f.ideal_basis.sort(key=poly_tup_sortkey)
|
|
52
|
+
sage: from sage.algebras.fusion_rings.shm_managers import FvarsHandler
|
|
53
|
+
sage: n = f._poly_ring.ngens()
|
|
54
|
+
sage: f._fvars = FvarsHandler(n, f._field, f._idx_to_sextuple, init_data=f._fvars)
|
|
55
|
+
sage: from sage.algebras.fusion_rings.fast_parallel_fmats_methods import _solve_for_linear_terms
|
|
56
|
+
sage: _solve_for_linear_terms(f)
|
|
57
|
+
True
|
|
58
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[0]])
|
|
59
|
+
0
|
|
60
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[2]])
|
|
61
|
+
fx4
|
|
62
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[3]])
|
|
63
|
+
fx3
|
|
64
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[4]])
|
|
65
|
+
fx4
|
|
66
|
+
"""
|
|
67
|
+
if eqns is None:
|
|
68
|
+
eqns = factory.ideal_basis
|
|
69
|
+
|
|
70
|
+
cdef bint linear_terms_exist = False
|
|
71
|
+
cdef ETuple exp, rhs_exp
|
|
72
|
+
cdef int max_var
|
|
73
|
+
cdef tuple eq_tup
|
|
74
|
+
cdef FvarsHandler fvars = factory._fvars
|
|
75
|
+
cdef NumberFieldElement_absolute coeff, other
|
|
76
|
+
cdef tuple rhs_coeff
|
|
77
|
+
for eq_tup in eqns:
|
|
78
|
+
if len(eq_tup) == 1:
|
|
79
|
+
vars = variables(eq_tup)
|
|
80
|
+
if len(vars) == 1 and not factory._solved[vars[0]]:
|
|
81
|
+
fvars[factory._idx_to_sextuple[vars[0]]] = tuple()
|
|
82
|
+
factory._solved[vars[0]] = True
|
|
83
|
+
linear_terms_exist = True
|
|
84
|
+
|
|
85
|
+
# TESTS:
|
|
86
|
+
# s = factory._idx_to_sextuple[vars[0]]
|
|
87
|
+
# factory.test_fvars[s] = tuple()
|
|
88
|
+
# assert factory.test_fvars[s] == fvars[s], "OG value {}, Shared: {}".format(fvars[s], factory.test_fvars[s])
|
|
89
|
+
if len(eq_tup) == 2:
|
|
90
|
+
idx = has_appropriate_linear_term(eq_tup)
|
|
91
|
+
if idx < 0:
|
|
92
|
+
continue
|
|
93
|
+
# The chosen term is guaranteed to be univariate in the largest variable
|
|
94
|
+
exp = eq_tup[idx][0]
|
|
95
|
+
max_var = exp._data[0]
|
|
96
|
+
if not factory._solved[max_var]:
|
|
97
|
+
rhs_exp = eq_tup[(idx+1) % 2][0]
|
|
98
|
+
coeff = factory._field(list(eq_tup[(idx+1) % 2][1]))
|
|
99
|
+
other = factory._field(list(eq_tup[idx][1]))
|
|
100
|
+
rhs_coeff = tuple((-coeff / other)._coefficients())
|
|
101
|
+
fvars[factory._idx_to_sextuple[max_var]] = ((rhs_exp, rhs_coeff), )
|
|
102
|
+
factory._solved[max_var] = True
|
|
103
|
+
linear_terms_exist = True
|
|
104
|
+
|
|
105
|
+
# TESTS:
|
|
106
|
+
# s = factory._idx_to_sextuple[max_var]
|
|
107
|
+
# factory.test_fvars[s] = ((rhs_exp, rhs_coeff), )
|
|
108
|
+
# assert _unflatten_coeffs(factory._field, factory.test_fvars[s]) == fvars[s], "OG value {}, Shared: {}".format(factory.test_fvars[s], fvars[s])
|
|
109
|
+
return linear_terms_exist
|
|
110
|
+
|
|
111
|
+
cpdef _backward_subs(factory, bint flatten=True):
|
|
112
|
+
r"""
|
|
113
|
+
Perform backward substitution on ``self.ideal_basis``, traversing
|
|
114
|
+
variables in reverse lexicographical order.
|
|
115
|
+
|
|
116
|
+
EXAMPLES::
|
|
117
|
+
|
|
118
|
+
sage: f = FusionRing("D3", 1).get_fmatrix(inject_variables=True, new=True)
|
|
119
|
+
creating variables fx1..fx27
|
|
120
|
+
Defining fx0, ..., fx26
|
|
121
|
+
sage: f._reset_solver_state()
|
|
122
|
+
sage: f.ideal_basis = [fx0**3, fx0 + fx3**4, fx2**2 - fx3, fx2 - fx3**2, fx4 - fx2]
|
|
123
|
+
sage: from sage.algebras.fusion_rings.poly_tup_engine import poly_to_tup
|
|
124
|
+
sage: f.ideal_basis = [poly_to_tup(p) for p in f.ideal_basis]
|
|
125
|
+
sage: from sage.algebras.fusion_rings.poly_tup_engine import poly_tup_sortkey
|
|
126
|
+
sage: f.ideal_basis.sort(key=poly_tup_sortkey)
|
|
127
|
+
sage: from sage.algebras.fusion_rings.shm_managers import FvarsHandler
|
|
128
|
+
sage: n = f._poly_ring.ngens()
|
|
129
|
+
sage: f._fvars = FvarsHandler(n, f._field, f._idx_to_sextuple, init_data=f._fvars)
|
|
130
|
+
sage: from sage.algebras.fusion_rings.fast_parallel_fmats_methods import _solve_for_linear_terms
|
|
131
|
+
sage: _solve_for_linear_terms(f)
|
|
132
|
+
True
|
|
133
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[0]])
|
|
134
|
+
0
|
|
135
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[2]])
|
|
136
|
+
fx4
|
|
137
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[3]])
|
|
138
|
+
fx3
|
|
139
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[4]])
|
|
140
|
+
fx4
|
|
141
|
+
sage: f.ideal_basis.append(poly_to_tup(fx4-1))
|
|
142
|
+
sage: f.ideal_basis.sort(key=poly_tup_sortkey)
|
|
143
|
+
sage: _solve_for_linear_terms(f)
|
|
144
|
+
True
|
|
145
|
+
sage: from sage.algebras.fusion_rings.fast_parallel_fmats_methods import _backward_subs
|
|
146
|
+
sage: _backward_subs(f)
|
|
147
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[0]])
|
|
148
|
+
0
|
|
149
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[2]])
|
|
150
|
+
1
|
|
151
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[3]])
|
|
152
|
+
fx3
|
|
153
|
+
sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[4]])
|
|
154
|
+
1
|
|
155
|
+
"""
|
|
156
|
+
one = factory._field.one()
|
|
157
|
+
fvars = factory._fvars
|
|
158
|
+
solved = factory._solved
|
|
159
|
+
cdef KSHandler _ks = factory._ks
|
|
160
|
+
cdef dict idx_to_sextuple = factory._idx_to_sextuple
|
|
161
|
+
cdef int nvars = len(idx_to_sextuple)
|
|
162
|
+
for i in range(nvars-1, -1, -1):
|
|
163
|
+
sextuple = idx_to_sextuple[i]
|
|
164
|
+
rhs = fvars[sextuple]
|
|
165
|
+
d = {var_idx: fvars[idx_to_sextuple[var_idx]]
|
|
166
|
+
for var_idx in variables(rhs) if solved[var_idx]}
|
|
167
|
+
if d:
|
|
168
|
+
kp = compute_known_powers(get_variables_degrees([rhs], nvars), d, one)
|
|
169
|
+
res = tuple(subs_squares(subs(rhs, kp, one), _ks).items())
|
|
170
|
+
if flatten:
|
|
171
|
+
res = _flatten_coeffs(res)
|
|
172
|
+
fvars[sextuple] = res
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
cdef _fmat(fvars, _Nk_ij, id_anyon, a, b, c, d, x, y):
|
|
176
|
+
"""
|
|
177
|
+
Cython version of fmat class method. Using cdef for fastest dispatch
|
|
178
|
+
"""
|
|
179
|
+
if _Nk_ij(a, b, x) == 0 or _Nk_ij(x, c, d) == 0 or _Nk_ij(b, c, y) == 0 or _Nk_ij(a, y, d) == 0:
|
|
180
|
+
return 0
|
|
181
|
+
# Some known F-symbols
|
|
182
|
+
if a == id_anyon:
|
|
183
|
+
return int(x == b and y == d)
|
|
184
|
+
if b == id_anyon:
|
|
185
|
+
return int(x == a and y == c)
|
|
186
|
+
if c == id_anyon:
|
|
187
|
+
return int(x == d and y == b)
|
|
188
|
+
return fvars[a, b, c, d, x, y]
|
|
189
|
+
|
|
190
|
+
######################################
|
|
191
|
+
# Fast fusion coefficients cache #
|
|
192
|
+
######################################
|
|
193
|
+
|
|
194
|
+
# from sage.misc.cachefunc import cached_function
|
|
195
|
+
# cdef dict _Nk_ij = dict()
|
|
196
|
+
|
|
197
|
+
# cpdef _Nk_ij(factory, proc):
|
|
198
|
+
# cdef int coeff
|
|
199
|
+
# for a, b, c in product(factory._FR.basis(), repeat=3):
|
|
200
|
+
# try:
|
|
201
|
+
# coeff = (a*b).monomial_coefficients(copy=False)[c.weight()]
|
|
202
|
+
# except:
|
|
203
|
+
# coeff = 0
|
|
204
|
+
# _Nk_ij[a, b, c] = coeff
|
|
205
|
+
|
|
206
|
+
# cpdef int _Nk_ij(a, b, c):
|
|
207
|
+
# try:
|
|
208
|
+
# return (a*b).monomial_coefficients(copy=False)[c.weight()]
|
|
209
|
+
# except KeyError:
|
|
210
|
+
# return 0
|
|
211
|
+
#
|
|
212
|
+
# _Nk_ij = cached_function(_Nk_ij, name='_Nk_ij')
|
|
213
|
+
|
|
214
|
+
###############
|
|
215
|
+
# Mappers #
|
|
216
|
+
###############
|
|
217
|
+
|
|
218
|
+
cdef req_cy(tuple basis, r_matrix, dict fvars, Nk_ij, id_anyon, tuple sextuple):
|
|
219
|
+
"""
|
|
220
|
+
Given an FMatrix factory and a sextuple, return a hexagon equation
|
|
221
|
+
as a polynomial object.
|
|
222
|
+
"""
|
|
223
|
+
a, b, c, d, e, g = sextuple
|
|
224
|
+
# To add typing we need to ensure all fmats.fmat are of the same type?
|
|
225
|
+
# Return fmats._poly_ring.zero() and fmats._poly_ring.one() instead of 0 and 1?
|
|
226
|
+
lhs = r_matrix(a, c, e, base_coercion=False) * _fmat(fvars, Nk_ij, id_anyon, a, c, b, d, e, g) * r_matrix(b, c, g, base_coercion=False)
|
|
227
|
+
rhs = 0
|
|
228
|
+
for f in basis:
|
|
229
|
+
rhs += _fmat(fvars, Nk_ij, id_anyon, c, a, b, d, e, f) * r_matrix(f, c, d, base_coercion=False) * _fmat(fvars, Nk_ij, id_anyon, a, b, c, d, f, g)
|
|
230
|
+
return lhs-rhs
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
@cython.wraparound(False)
|
|
234
|
+
@cython.nonecheck(False)
|
|
235
|
+
@cython.cdivision(True)
|
|
236
|
+
cdef get_reduced_hexagons(factory, tuple mp_params):
|
|
237
|
+
"""
|
|
238
|
+
Set up and reduce the hexagon equations corresponding to this worker.
|
|
239
|
+
"""
|
|
240
|
+
# Set up multiprocessing parameters
|
|
241
|
+
cdef list worker_results = list()
|
|
242
|
+
cdef int child_id, n_proc
|
|
243
|
+
cdef unsigned long i
|
|
244
|
+
child_id, n_proc, output = mp_params
|
|
245
|
+
cdef tuple sextuple, red
|
|
246
|
+
|
|
247
|
+
# Pre-compute common parameters for speed
|
|
248
|
+
cdef tuple basis = tuple(factory._FR.basis())
|
|
249
|
+
cdef dict fvars
|
|
250
|
+
cdef bint must_zip_up = False
|
|
251
|
+
if not output:
|
|
252
|
+
fvars = {s: factory._poly_ring.gen(i) for i, s in factory._idx_to_sextuple.items()}
|
|
253
|
+
else:
|
|
254
|
+
# Handle both cyclotomic and orthogonal solution method
|
|
255
|
+
for k, v in factory._fvars.items():
|
|
256
|
+
must_zip_up = isinstance(v, tuple)
|
|
257
|
+
break
|
|
258
|
+
if must_zip_up:
|
|
259
|
+
fvars = {k: _tup_to_poly(v, parent=factory._poly_ring) for k, v in factory._fvars.items()}
|
|
260
|
+
else:
|
|
261
|
+
fvars = factory._fvars
|
|
262
|
+
r_matrix = factory._FR.r_matrix
|
|
263
|
+
_Nk_ij = factory._FR.Nk_ij
|
|
264
|
+
id_anyon = factory._FR.one()
|
|
265
|
+
_field = factory._field
|
|
266
|
+
cdef NumberFieldElement_absolute one = _field.one()
|
|
267
|
+
cdef ETuple _nnz = factory._nnz
|
|
268
|
+
_ks = factory._ks
|
|
269
|
+
|
|
270
|
+
# Computation loop
|
|
271
|
+
it = product(basis, repeat=6)
|
|
272
|
+
for i in range(len(basis)**6):
|
|
273
|
+
sextuple = next(it)
|
|
274
|
+
if i % n_proc == child_id:
|
|
275
|
+
he = req_cy(basis, r_matrix, fvars, _Nk_ij, id_anyon, sextuple)
|
|
276
|
+
if he:
|
|
277
|
+
red = reduce_poly_dict(he.monomial_coefficients(), _nnz, _ks, one)
|
|
278
|
+
|
|
279
|
+
# Avoid pickling cyclotomic coefficients
|
|
280
|
+
red = _flatten_coeffs(red)
|
|
281
|
+
|
|
282
|
+
worker_results.append(red)
|
|
283
|
+
|
|
284
|
+
return collect_eqns(worker_results)
|
|
285
|
+
|
|
286
|
+
cdef MPolynomial_libsingular feq_cy(tuple basis, fvars, Nk_ij, id_anyon, zero, tuple nonuple, bint prune=False):
|
|
287
|
+
r"""
|
|
288
|
+
Given an FMatrix factory and a nonuple, return a pentagon equation
|
|
289
|
+
as a polynomial object.
|
|
290
|
+
"""
|
|
291
|
+
a, b, c, d, e, f, g, k, l = nonuple
|
|
292
|
+
lhs = _fmat(fvars, Nk_ij, id_anyon, f, c, d, e, g, l) * _fmat(fvars, Nk_ij, id_anyon, a, b, l, e, f, k)
|
|
293
|
+
if lhs == 0 and prune:
|
|
294
|
+
# it is believed that if lhs=0, the equation carries no new information
|
|
295
|
+
return zero
|
|
296
|
+
rhs = zero
|
|
297
|
+
for h in basis:
|
|
298
|
+
rhs += _fmat(fvars, Nk_ij, id_anyon, a, b, c, g, f, h)*_fmat(fvars, Nk_ij, id_anyon, a, h, d, e, g, k)*_fmat(fvars, Nk_ij, id_anyon, b, c, d, k, h, l)
|
|
299
|
+
return lhs - rhs
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
@cython.wraparound(False)
|
|
303
|
+
@cython.nonecheck(False)
|
|
304
|
+
@cython.cdivision(True)
|
|
305
|
+
cdef get_reduced_pentagons(factory, tuple mp_params):
|
|
306
|
+
r"""
|
|
307
|
+
Set up and reduce the pentagon equations corresponding to this worker.
|
|
308
|
+
"""
|
|
309
|
+
# Set up multiprocessing parameters
|
|
310
|
+
cdef list worker_results = list()
|
|
311
|
+
cdef int child_id, n_proc
|
|
312
|
+
child_id, n_proc, _ = mp_params
|
|
313
|
+
cdef unsigned long i
|
|
314
|
+
cdef tuple nonuple, red
|
|
315
|
+
cdef MPolynomial_libsingular pe
|
|
316
|
+
|
|
317
|
+
# Pre-compute common parameters for speed
|
|
318
|
+
cdef tuple basis = tuple(factory._FR.basis())
|
|
319
|
+
# Handle both cyclotomic and orthogonal solution method
|
|
320
|
+
cdef bint must_zip_up
|
|
321
|
+
for k, v in factory._fvars.items():
|
|
322
|
+
must_zip_up = isinstance(v, tuple)
|
|
323
|
+
break
|
|
324
|
+
cdef dict fvars
|
|
325
|
+
if must_zip_up:
|
|
326
|
+
fvars = {k: _tup_to_poly(v, parent=factory._poly_ring) for k, v in factory._fvars.items()}
|
|
327
|
+
else:
|
|
328
|
+
fvars = factory._fvars
|
|
329
|
+
_Nk_ij = factory._FR.Nk_ij
|
|
330
|
+
id_anyon = factory._FR.one()
|
|
331
|
+
_field = factory._field
|
|
332
|
+
cdef NumberFieldElement_absolute one = _field.one()
|
|
333
|
+
cdef MPolynomial_libsingular zero = factory._poly_ring.zero()
|
|
334
|
+
cdef KSHandler _ks = factory._ks
|
|
335
|
+
factory._nnz = factory._get_known_nonz()
|
|
336
|
+
cdef ETuple _nnz = factory._nnz
|
|
337
|
+
|
|
338
|
+
# Computation loop
|
|
339
|
+
it = product(basis, repeat=9)
|
|
340
|
+
for i in range(len(basis)**9):
|
|
341
|
+
nonuple = next(it)
|
|
342
|
+
if i % n_proc == child_id:
|
|
343
|
+
pe = feq_cy(basis, fvars, _Nk_ij, id_anyon, zero, nonuple, prune=True)
|
|
344
|
+
if pe:
|
|
345
|
+
red = reduce_poly_dict(pe.monomial_coefficients(), _nnz, _ks, one)
|
|
346
|
+
|
|
347
|
+
# Avoid pickling cyclotomic coefficients
|
|
348
|
+
red = _flatten_coeffs(red)
|
|
349
|
+
|
|
350
|
+
worker_results.append(red)
|
|
351
|
+
return collect_eqns(worker_results)
|
|
352
|
+
|
|
353
|
+
cdef list update_reduce(factory, list eqns):
|
|
354
|
+
r"""
|
|
355
|
+
Substitute known values, known squares, and reduce.
|
|
356
|
+
"""
|
|
357
|
+
cdef list res = list()
|
|
358
|
+
cdef tuple eq_tup, red, unflat
|
|
359
|
+
cdef dict eq_dict
|
|
360
|
+
|
|
361
|
+
# Pre-compute common parameters for speed
|
|
362
|
+
_field = factory._field
|
|
363
|
+
one = _field.one()
|
|
364
|
+
cdef KSHandler _ks = factory._ks
|
|
365
|
+
# Update reduction params
|
|
366
|
+
factory._nnz = factory._get_known_nonz()
|
|
367
|
+
factory._kp = compute_known_powers(factory._var_degs, factory._get_known_vals(), factory._field.one())
|
|
368
|
+
cdef dict _kp = factory._kp
|
|
369
|
+
cdef ETuple _nnz = factory._nnz
|
|
370
|
+
|
|
371
|
+
for i in range(len(eqns)):
|
|
372
|
+
eq_tup = eqns[i]
|
|
373
|
+
# Construct cyclotomic field elts from list repn
|
|
374
|
+
unflat = _unflatten_coeffs(_field, eq_tup)
|
|
375
|
+
|
|
376
|
+
eq_dict = subs(unflat, _kp, one)
|
|
377
|
+
red = reduce_poly_dict(eq_dict, _nnz, _ks, one)
|
|
378
|
+
|
|
379
|
+
# Avoid pickling cyclotomic coefficients
|
|
380
|
+
red = _flatten_coeffs(red)
|
|
381
|
+
|
|
382
|
+
res.append(red)
|
|
383
|
+
return collect_eqns(res)
|
|
384
|
+
|
|
385
|
+
cdef list compute_gb(factory, tuple args):
|
|
386
|
+
r"""
|
|
387
|
+
Compute the reduced Groebner basis for given equations iterable.
|
|
388
|
+
"""
|
|
389
|
+
cdef list res = list()
|
|
390
|
+
cdef list eqns, sorted_vars
|
|
391
|
+
eqns, term_order = args
|
|
392
|
+
# Define smaller poly ring in component vars
|
|
393
|
+
sorted_vars = []
|
|
394
|
+
cdef tuple eq_tup
|
|
395
|
+
cdef int fx
|
|
396
|
+
for eq_tup in eqns:
|
|
397
|
+
for fx in variables(eq_tup):
|
|
398
|
+
sorted_vars.append(fx)
|
|
399
|
+
sorted_vars = sorted(set(sorted_vars))
|
|
400
|
+
cdef MPolynomialRing_libsingular R = PolynomialRing(factory._FR.field(), len(sorted_vars), 'a', order=term_order)
|
|
401
|
+
|
|
402
|
+
# Zip tuples into R and compute Groebner basis
|
|
403
|
+
cdef idx_map = {old: new for new, old in enumerate(sorted_vars)}
|
|
404
|
+
nvars = len(sorted_vars)
|
|
405
|
+
F = factory.field()
|
|
406
|
+
cdef list polys = list()
|
|
407
|
+
for eq_tup in eqns:
|
|
408
|
+
eq_tup = _unflatten_coeffs(F, eq_tup)
|
|
409
|
+
polys.append(_tup_to_poly(resize(eq_tup, idx_map, nvars), parent=R))
|
|
410
|
+
gb = Ideal(sorted(polys)).groebner_basis(algorithm='libsingular:slimgb')
|
|
411
|
+
|
|
412
|
+
# Change back to fmats poly ring and append to temp_eqns
|
|
413
|
+
cdef dict inv_idx_map = {v: k for k, v in idx_map.items()}
|
|
414
|
+
cdef tuple t
|
|
415
|
+
nvars = factory._poly_ring.ngens()
|
|
416
|
+
for p in gb:
|
|
417
|
+
t = resize(poly_to_tup(p), inv_idx_map, nvars)
|
|
418
|
+
|
|
419
|
+
# Avoid pickling cyclotomic coefficients
|
|
420
|
+
t = _flatten_coeffs(t)
|
|
421
|
+
|
|
422
|
+
res.append(t)
|
|
423
|
+
return collect_eqns(res)
|
|
424
|
+
|
|
425
|
+
################
|
|
426
|
+
# Reducers #
|
|
427
|
+
################
|
|
428
|
+
|
|
429
|
+
cdef inline list collect_eqns(list eqns):
|
|
430
|
+
r"""
|
|
431
|
+
Helper function for returning processed results back to parent process.
|
|
432
|
+
|
|
433
|
+
Trivial reducer: simply collects objects with the same key in the worker.
|
|
434
|
+
This method is only useful when called after :meth:`executor`, whose
|
|
435
|
+
function argument appends output to the ``worker_results`` list.
|
|
436
|
+
"""
|
|
437
|
+
# Discard the zero polynomial
|
|
438
|
+
reduced = set(eqns) - set([tuple()])
|
|
439
|
+
return list(reduced)
|
|
440
|
+
|
|
441
|
+
##############################
|
|
442
|
+
# Parallel code executor #
|
|
443
|
+
##############################
|
|
444
|
+
|
|
445
|
+
# Hard-coded module __dict__-style attribute with visible cdef methods
|
|
446
|
+
cdef dict mappers = {
|
|
447
|
+
"get_reduced_hexagons": get_reduced_hexagons,
|
|
448
|
+
"get_reduced_pentagons": get_reduced_pentagons,
|
|
449
|
+
"update_reduce": update_reduce,
|
|
450
|
+
"compute_gb": compute_gb,
|
|
451
|
+
"pent_verify": pent_verify
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
cpdef executor(tuple params):
|
|
455
|
+
r"""
|
|
456
|
+
Execute a function defined in this module
|
|
457
|
+
(``sage.algebras.fusion_rings.fast_parallel_fmats_methods``) in a worker
|
|
458
|
+
process, and supply the factory parameter by constructing a reference
|
|
459
|
+
to the ``FMatrix`` object in the worker's memory address space from
|
|
460
|
+
its ``id``.
|
|
461
|
+
|
|
462
|
+
INPUT:
|
|
463
|
+
|
|
464
|
+
- ``params`` -- tuple ``((fn_name, fmats_id), fn_args)`` where
|
|
465
|
+
``fn_name`` is the name of the function to be executed, ``fmats_id``
|
|
466
|
+
is the ``id`` of the :class:`FMatrix` object, and ``fn_args`` is a
|
|
467
|
+
tuple containing all arguments to be passed to the function ``fn_name``.
|
|
468
|
+
|
|
469
|
+
.. NOTE::
|
|
470
|
+
|
|
471
|
+
When the parent process is forked, each worker gets a copy of
|
|
472
|
+
every global variable. The virtual memory address of object `X` in
|
|
473
|
+
the parent process equals the *virtual* memory address of the copy
|
|
474
|
+
of object `X` in each worker, so we may construct references to
|
|
475
|
+
forked copies of `X` using an ``id`` obtained in the parent process.
|
|
476
|
+
|
|
477
|
+
TESTS::
|
|
478
|
+
|
|
479
|
+
sage: from sage.algebras.fusion_rings.fast_parallel_fmats_methods import executor
|
|
480
|
+
sage: fmats = FusionRing("A1", 3).get_fmatrix()
|
|
481
|
+
sage: fmats._reset_solver_state()
|
|
482
|
+
sage: params = (('get_reduced_hexagons', id(fmats)), (0, 1, True))
|
|
483
|
+
sage: len(executor(params)) == 63
|
|
484
|
+
True
|
|
485
|
+
sage: fmats = FusionRing("E6", 1).get_fmatrix()
|
|
486
|
+
sage: fmats._reset_solver_state()
|
|
487
|
+
sage: params = (('get_reduced_hexagons', id(fmats)), (0, 1, False))
|
|
488
|
+
sage: len(executor(params)) == 6
|
|
489
|
+
True
|
|
490
|
+
"""
|
|
491
|
+
(fn_name, fmats_id), args = params
|
|
492
|
+
# Construct a reference to global FMatrix object in this worker's memory
|
|
493
|
+
fmats_obj = cast(fmats_id, py_object).value
|
|
494
|
+
# Bind module method to FMatrix object in worker process, and call the method
|
|
495
|
+
return mappers[fn_name](fmats_obj, args)
|
|
496
|
+
|
|
497
|
+
####################
|
|
498
|
+
# Verification #
|
|
499
|
+
####################
|
|
500
|
+
|
|
501
|
+
cdef feq_verif(factory, worker_results, fvars, Nk_ij, id_anyon, tuple nonuple, float tol=5e-8):
|
|
502
|
+
r"""
|
|
503
|
+
Check the pentagon equation corresponding to the given nonuple.
|
|
504
|
+
"""
|
|
505
|
+
a, b, c, d, e, f, g, k, l = nonuple
|
|
506
|
+
cdef float diff, lhs, rhs
|
|
507
|
+
|
|
508
|
+
lhs = _fmat(fvars, Nk_ij, id_anyon, f, c, d, e, g, l)*_fmat(fvars, Nk_ij, id_anyon, a, b, l, e, f, k)
|
|
509
|
+
rhs = 0.0
|
|
510
|
+
for h in factory._FR.basis():
|
|
511
|
+
rhs += _fmat(fvars, Nk_ij, id_anyon, a, b, c, g, f, h)*_fmat(fvars, Nk_ij, id_anyon, a, h, d, e, g, k)*_fmat(fvars, Nk_ij, id_anyon, b, c, d, k, h, l)
|
|
512
|
+
diff = lhs - rhs
|
|
513
|
+
if diff > tol or diff < -tol:
|
|
514
|
+
worker_results.append(diff)
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
@cython.wraparound(False)
|
|
518
|
+
@cython.nonecheck(False)
|
|
519
|
+
@cython.cdivision(True)
|
|
520
|
+
cdef pent_verify(factory, tuple mp_params):
|
|
521
|
+
r"""
|
|
522
|
+
Generate all the pentagon equations assigned to this process,
|
|
523
|
+
and reduce them.
|
|
524
|
+
"""
|
|
525
|
+
child_id, n_proc, verbose = mp_params
|
|
526
|
+
cdef tuple nonuple
|
|
527
|
+
cdef unsigned long long i
|
|
528
|
+
cdef list worker_results = list()
|
|
529
|
+
|
|
530
|
+
# Pre-compute common parameters for speed
|
|
531
|
+
Nk_ij = factory._FR.Nk_ij
|
|
532
|
+
cdef dict fvars = factory._fvars
|
|
533
|
+
id_anyon = factory._FR.one()
|
|
534
|
+
for i, nonuple in enumerate(product(factory._FR.basis(), repeat=9)):
|
|
535
|
+
if i % n_proc == child_id:
|
|
536
|
+
feq_verif(factory, worker_results, fvars, Nk_ij, id_anyon, nonuple)
|
|
537
|
+
if i % 50000000 == 0 and i and verbose:
|
|
538
|
+
print("{:5d}m equations checked... {} potential misses so far...".format(i // 1000000, len(worker_results)))
|
sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-gnu.so
ADDED
|
Binary file
|