passagemath-singular 10.6.30__cp312-cp312-macosx_13_0_arm64.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-312-darwin.so +0 -0
- passagemath_singular-10.6.30.dist-info/METADATA +182 -0
- passagemath_singular-10.6.30.dist-info/RECORD +488 -0
- passagemath_singular-10.6.30.dist-info/WHEEL +6 -0
- passagemath_singular-10.6.30.dist-info/top_level.txt +3 -0
- passagemath_singular.dylibs/libSingular-4.4.1.dylib +0 -0
- passagemath_singular.dylibs/libcddgmp.0.dylib +0 -0
- passagemath_singular.dylibs/libfactory-4.4.1.dylib +0 -0
- passagemath_singular.dylibs/libflint.21.0.dylib +0 -0
- passagemath_singular.dylibs/libgf2x.3.dylib +0 -0
- passagemath_singular.dylibs/libgfortran.5.dylib +0 -0
- passagemath_singular.dylibs/libgmp.10.dylib +0 -0
- passagemath_singular.dylibs/libgsl.28.dylib +0 -0
- passagemath_singular.dylibs/libmpfr.6.dylib +0 -0
- passagemath_singular.dylibs/libntl.44.dylib +0 -0
- passagemath_singular.dylibs/libomalloc-0.9.6.dylib +0 -0
- passagemath_singular.dylibs/libopenblasp-r0.3.29.dylib +0 -0
- passagemath_singular.dylibs/libpolys-4.4.1.dylib +0 -0
- passagemath_singular.dylibs/libquadmath.0.dylib +0 -0
- passagemath_singular.dylibs/libreadline.8.2.dylib +0 -0
- passagemath_singular.dylibs/libsingular_resources-4.4.1.dylib +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-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
- sage/algebras/quatalg/quaternion_algebra_element.cpython-312-darwin.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-312-darwin.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-312-darwin.so +0 -0
- sage/libs/singular/groebner_strategy.pxd +22 -0
- sage/libs/singular/groebner_strategy.pyx +582 -0
- sage/libs/singular/option.cpython-312-darwin.so +0 -0
- sage/libs/singular/option.pyx +671 -0
- sage/libs/singular/polynomial.cpython-312-darwin.so +0 -0
- sage/libs/singular/polynomial.pxd +39 -0
- sage/libs/singular/polynomial.pyx +661 -0
- sage/libs/singular/ring.cpython-312-darwin.so +0 -0
- sage/libs/singular/ring.pxd +58 -0
- sage/libs/singular/ring.pyx +893 -0
- sage/libs/singular/singular.cpython-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.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-312-darwin.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 +187111 -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 +769 -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 +1927 -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 +1258 -0
- sage_wheels/share/singular/LIB/modquotient.lib +269 -0
- sage_wheels/share/singular/LIB/modstd.lib +1025 -0
- sage_wheels/share/singular/LIB/modular.lib +438 -0
- sage_wheels/share/singular/LIB/modules.lib +2553 -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 +2140 -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 +305 -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 +9593 -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 +169 -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 +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/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 +1195 -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 +4310 -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 +4986 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
"""
|
|
3
|
+
Fast Fusion Ring Methods for Computing Braid Group Representations
|
|
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
|
+
from ctypes import cast, py_object
|
|
13
|
+
cimport cython
|
|
14
|
+
from sage.algebras.fusion_rings.fast_parallel_fmats_methods cimport _fmat
|
|
15
|
+
|
|
16
|
+
from sage.rings.qqbar import QQbar
|
|
17
|
+
|
|
18
|
+
###############
|
|
19
|
+
# Mappers #
|
|
20
|
+
###############
|
|
21
|
+
|
|
22
|
+
cdef mid_sig_ij(fusion_ring, row, col, a, b):
|
|
23
|
+
r"""
|
|
24
|
+
Compute the (xi, yi), (xj, yj) entry of generator braiding the middle two
|
|
25
|
+
strands in the tree b -> xi # yi -> (a # a) # (a # a), which results in
|
|
26
|
+
a sum over j of trees b -> xj # yj -> (a # a) # (a # a)
|
|
27
|
+
|
|
28
|
+
.. WARNING::
|
|
29
|
+
|
|
30
|
+
This method assumes F-matrices are orthogonal.
|
|
31
|
+
"""
|
|
32
|
+
# Pre-compute common parameters for efficiency
|
|
33
|
+
_fvars = fusion_ring.get_fmatrix()._fvars
|
|
34
|
+
_Nk_ij = fusion_ring.Nk_ij
|
|
35
|
+
one = fusion_ring.one()
|
|
36
|
+
|
|
37
|
+
xi, yi = row
|
|
38
|
+
xj, yj = col
|
|
39
|
+
entry = 0
|
|
40
|
+
cdef list basis = list(fusion_ring.basis())
|
|
41
|
+
for c in basis:
|
|
42
|
+
for d in basis:
|
|
43
|
+
# #Warning: We assume F-matrices are orthogonal!!! (using transpose for inverse)
|
|
44
|
+
f1 = _fmat(_fvars, _Nk_ij, one, a, a, yi, b, xi, c)
|
|
45
|
+
f2 = _fmat(_fvars, _Nk_ij, one, a, a, a, c, d, yi)
|
|
46
|
+
f3 = _fmat(_fvars, _Nk_ij, one, a, a, a, c, d, yj)
|
|
47
|
+
f4 = _fmat(_fvars, _Nk_ij, one, a, a, yj, b, xj, c)
|
|
48
|
+
r = fusion_ring.r_matrix(a, a, d)
|
|
49
|
+
entry += f1 * f2 * r * f3 * f4
|
|
50
|
+
return entry
|
|
51
|
+
|
|
52
|
+
cdef odd_one_out_ij(fusion_ring, xi, xj, a, b):
|
|
53
|
+
r"""
|
|
54
|
+
Compute the `xi`, `xj` entry of the braid generator on the two right-most
|
|
55
|
+
strands, corresponding to the tree b -> (xi # a) -> (a # a) # a, which
|
|
56
|
+
results in a sum over j of trees b -> xj -> (a # a) # (a # a)
|
|
57
|
+
|
|
58
|
+
.. WARNING::
|
|
59
|
+
|
|
60
|
+
This method assumes F-matrices are orthogonal.
|
|
61
|
+
"""
|
|
62
|
+
# Pre-compute common parameters for efficiency
|
|
63
|
+
_fvars = fusion_ring.get_fmatrix()._fvars
|
|
64
|
+
_Nk_ij = fusion_ring.Nk_ij
|
|
65
|
+
one = fusion_ring.one()
|
|
66
|
+
|
|
67
|
+
entry = 0
|
|
68
|
+
for c in fusion_ring.basis():
|
|
69
|
+
# #Warning: We assume F-matrices are orthogonal!!! (using transpose for inverse)
|
|
70
|
+
f1 = _fmat(_fvars, _Nk_ij, one, a, a, a, b, xi, c)
|
|
71
|
+
f2 = _fmat(_fvars, _Nk_ij, one, a, a, a, b, xj, c)
|
|
72
|
+
r = fusion_ring.r_matrix(a, a, c)
|
|
73
|
+
entry += f1 * r * f2
|
|
74
|
+
return entry
|
|
75
|
+
|
|
76
|
+
# Cache methods (manually for cdef methods)
|
|
77
|
+
cdef odd_one_out_ij_cache = dict()
|
|
78
|
+
cdef mid_sig_ij_cache = dict()
|
|
79
|
+
|
|
80
|
+
cdef cached_mid_sig_ij(fusion_ring, row, col, a, b):
|
|
81
|
+
r"""
|
|
82
|
+
Cached version of :meth:`mid_sig_ij`.
|
|
83
|
+
"""
|
|
84
|
+
if (row, col, a, b) in mid_sig_ij_cache:
|
|
85
|
+
return mid_sig_ij_cache[row, col, a, b]
|
|
86
|
+
entry = mid_sig_ij(fusion_ring, row, col, a, b)
|
|
87
|
+
mid_sig_ij_cache[row, col, a, b] = entry
|
|
88
|
+
return entry
|
|
89
|
+
|
|
90
|
+
cdef cached_odd_one_out_ij(fusion_ring, xi, xj, a, b):
|
|
91
|
+
r"""
|
|
92
|
+
Cached version of :meth:`odd_one_out_ij`.
|
|
93
|
+
"""
|
|
94
|
+
if (xi, xj, a, b) in odd_one_out_ij_cache:
|
|
95
|
+
return odd_one_out_ij_cache[xi, xj, a, b]
|
|
96
|
+
entry = odd_one_out_ij(fusion_ring, xi, xj, a, b)
|
|
97
|
+
odd_one_out_ij_cache[xi, xj, a, b] = entry
|
|
98
|
+
return entry
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
@cython.nonecheck(False)
|
|
102
|
+
@cython.cdivision(True)
|
|
103
|
+
cdef sig_2k(fusion_ring, tuple args):
|
|
104
|
+
r"""
|
|
105
|
+
Compute entries of the `2k`-th braid generator
|
|
106
|
+
"""
|
|
107
|
+
# Pre-compute common parameters for efficiency
|
|
108
|
+
_fvars = fusion_ring.get_fmatrix()._fvars
|
|
109
|
+
_Nk_ij = fusion_ring.Nk_ij
|
|
110
|
+
one = fusion_ring.one()
|
|
111
|
+
|
|
112
|
+
cdef int child_id, n_proc
|
|
113
|
+
child_id, n_proc, fn_args = args
|
|
114
|
+
k, a, b, n_strands = fn_args
|
|
115
|
+
cdef int ctr = -1
|
|
116
|
+
cdef list worker_results = list()
|
|
117
|
+
# Get computational basis
|
|
118
|
+
cdef list comp_basis = fusion_ring.get_computational_basis(a, b, n_strands)
|
|
119
|
+
cdef dict basis_dict = {elt: i for i, elt in enumerate(comp_basis)}
|
|
120
|
+
cdef int dim = len(comp_basis)
|
|
121
|
+
cdef set coords = set()
|
|
122
|
+
cdef int i
|
|
123
|
+
# Avoid pickling cyclotomic field element objects
|
|
124
|
+
cdef bint must_flatten_coeff = fusion_ring.fvars_field() != QQbar
|
|
125
|
+
cdef list basis = list(fusion_ring.basis())
|
|
126
|
+
for i in range(dim):
|
|
127
|
+
for f in basis:
|
|
128
|
+
for e in basis:
|
|
129
|
+
for q in basis:
|
|
130
|
+
# Distribute work amongst processes
|
|
131
|
+
ctr += 1
|
|
132
|
+
if ctr % n_proc != child_id:
|
|
133
|
+
continue
|
|
134
|
+
|
|
135
|
+
# Compute appropriate possible nonzero row index
|
|
136
|
+
nnz_pos = list(comp_basis[i])
|
|
137
|
+
nnz_pos[k-1] = f
|
|
138
|
+
nnz_pos[k] = e
|
|
139
|
+
# Handle the special case k = 1
|
|
140
|
+
if k > 1:
|
|
141
|
+
nnz_pos[n_strands//2+k-2] = q
|
|
142
|
+
nnz_pos = tuple(nnz_pos)
|
|
143
|
+
|
|
144
|
+
# Skip repeated entries when k = 1
|
|
145
|
+
if nnz_pos in comp_basis and (basis_dict[nnz_pos], i) not in coords:
|
|
146
|
+
m, l = comp_basis[i][:n_strands//2], comp_basis[i][n_strands//2:]
|
|
147
|
+
# A few special cases
|
|
148
|
+
top_left = m[0]
|
|
149
|
+
if k >= 3:
|
|
150
|
+
top_left = l[k-3]
|
|
151
|
+
root = b
|
|
152
|
+
if k - 1 < len(l):
|
|
153
|
+
root = l[k-1]
|
|
154
|
+
|
|
155
|
+
# Handle the special case k = 1
|
|
156
|
+
if k == 1:
|
|
157
|
+
entry = cached_mid_sig_ij(fusion_ring, m[:2], (f, e), a, root)
|
|
158
|
+
|
|
159
|
+
# Avoid pickling cyclotomic field element objects
|
|
160
|
+
if must_flatten_coeff:
|
|
161
|
+
entry = entry.list()
|
|
162
|
+
|
|
163
|
+
worker_results.append(((basis_dict[nnz_pos], i), entry))
|
|
164
|
+
coords.add((basis_dict[nnz_pos], i))
|
|
165
|
+
continue
|
|
166
|
+
|
|
167
|
+
entry = 0
|
|
168
|
+
for p in fusion_ring.basis():
|
|
169
|
+
f1 = _fmat(_fvars, _Nk_ij, one, top_left, m[k-1], m[k], root, l[k-2], p)
|
|
170
|
+
f2 = _fmat(_fvars, _Nk_ij, one, top_left, f, e, root, q, p)
|
|
171
|
+
entry += f1 * cached_mid_sig_ij(fusion_ring, (m[k-1], m[k]), (f, e), a, p) * f2
|
|
172
|
+
|
|
173
|
+
# Avoid pickling cyclotomic field element objects
|
|
174
|
+
if must_flatten_coeff:
|
|
175
|
+
entry = entry.list()
|
|
176
|
+
|
|
177
|
+
worker_results.append(((basis_dict[nnz_pos], i), entry))
|
|
178
|
+
return worker_results
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
@cython.nonecheck(False)
|
|
182
|
+
@cython.cdivision(True)
|
|
183
|
+
cdef odd_one_out(fusion_ring, tuple args):
|
|
184
|
+
r"""
|
|
185
|
+
Compute entries of the rightmost braid generator, in case we have an
|
|
186
|
+
odd number of strands.
|
|
187
|
+
"""
|
|
188
|
+
# Pre-compute common parameters for efficiency
|
|
189
|
+
_fvars = fusion_ring.get_fmatrix()._fvars
|
|
190
|
+
_Nk_ij = fusion_ring.Nk_ij
|
|
191
|
+
one = fusion_ring.one()
|
|
192
|
+
|
|
193
|
+
cdef list worker_results = []
|
|
194
|
+
cdef list nnz_pos_temp
|
|
195
|
+
cdef tuple nnz_pos
|
|
196
|
+
cdef int child_id, n_proc, i
|
|
197
|
+
child_id, n_proc, fn_args = args
|
|
198
|
+
a, b, n_strands = fn_args
|
|
199
|
+
cdef int ctr = -1
|
|
200
|
+
# Get computational basis
|
|
201
|
+
cdef list comp_basis = fusion_ring.get_computational_basis(a, b, n_strands)
|
|
202
|
+
cdef dict basis_dict = {elt: i for i, elt in enumerate(comp_basis)}
|
|
203
|
+
cdef int dim = len(comp_basis)
|
|
204
|
+
|
|
205
|
+
# Avoid pickling cyclotomic field element objects
|
|
206
|
+
cdef bint must_flatten_coeff = fusion_ring.fvars_field() != QQbar
|
|
207
|
+
|
|
208
|
+
cdef list basis = list(fusion_ring.basis())
|
|
209
|
+
for i in range(dim):
|
|
210
|
+
for f in basis:
|
|
211
|
+
for q in basis:
|
|
212
|
+
# Distribute work amongst processes
|
|
213
|
+
ctr += 1
|
|
214
|
+
if ctr % n_proc != child_id:
|
|
215
|
+
continue
|
|
216
|
+
|
|
217
|
+
# Compute appropriate possible nonzero row index
|
|
218
|
+
nnz_pos_temp = list(comp_basis[i])
|
|
219
|
+
nnz_pos_temp[n_strands//2-1] = f
|
|
220
|
+
# Handle small special case
|
|
221
|
+
if n_strands > 3:
|
|
222
|
+
nnz_pos_temp[-1] = q
|
|
223
|
+
nnz_pos = tuple(nnz_pos_temp)
|
|
224
|
+
|
|
225
|
+
if nnz_pos in comp_basis:
|
|
226
|
+
m, l = comp_basis[i][:n_strands//2], comp_basis[i][n_strands//2:]
|
|
227
|
+
|
|
228
|
+
# Handle a couple of small special cases
|
|
229
|
+
if n_strands == 3:
|
|
230
|
+
entry = cached_odd_one_out_ij(fusion_ring, m[-1], f, a, b)
|
|
231
|
+
|
|
232
|
+
# Avoid pickling cyclotomic field element objects
|
|
233
|
+
if must_flatten_coeff:
|
|
234
|
+
entry = entry.list()
|
|
235
|
+
|
|
236
|
+
worker_results.append(((basis_dict[nnz_pos], i), entry))
|
|
237
|
+
continue
|
|
238
|
+
top_left = m[0]
|
|
239
|
+
if n_strands > 5:
|
|
240
|
+
top_left = l[-2]
|
|
241
|
+
root = b
|
|
242
|
+
|
|
243
|
+
# Compute relevant entry
|
|
244
|
+
entry = 0
|
|
245
|
+
for p in basis:
|
|
246
|
+
f1 = _fmat(_fvars, _Nk_ij, one, top_left, m[-1], a, root, l[-1], p)
|
|
247
|
+
f2 = _fmat(_fvars, _Nk_ij, one, top_left, f, a, root, q, p)
|
|
248
|
+
entry += f1 * cached_odd_one_out_ij(fusion_ring, m[-1], f, a, p) * f2
|
|
249
|
+
|
|
250
|
+
# Avoid pickling cyclotomic field element objects
|
|
251
|
+
if must_flatten_coeff:
|
|
252
|
+
entry = entry.list()
|
|
253
|
+
|
|
254
|
+
worker_results.append(((basis_dict[nnz_pos], i), entry))
|
|
255
|
+
return worker_results
|
|
256
|
+
|
|
257
|
+
##############################
|
|
258
|
+
# Parallel code executor #
|
|
259
|
+
##############################
|
|
260
|
+
|
|
261
|
+
# Hard-coded module __dict__-style attribute with visible cdef methods
|
|
262
|
+
cdef dict mappers = {
|
|
263
|
+
"sig_2k": sig_2k,
|
|
264
|
+
"odd_one_out": odd_one_out
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
cpdef executor(tuple params):
|
|
268
|
+
r"""
|
|
269
|
+
Execute a function registered in this module's ``mappers``
|
|
270
|
+
in a worker process, and supply the ``FusionRing`` parameter by
|
|
271
|
+
constructing a reference to the FMatrix object in the worker's memory
|
|
272
|
+
address space from its ``id``.
|
|
273
|
+
|
|
274
|
+
.. NOTE::
|
|
275
|
+
|
|
276
|
+
When the parent process is forked, each worker gets a copy of
|
|
277
|
+
every global variable. The virtual memory address of object `X` in
|
|
278
|
+
the parent process equals the *virtual* memory address of the copy of
|
|
279
|
+
object `X` in each worker, so we may construct references to forked
|
|
280
|
+
copies of `X`.
|
|
281
|
+
|
|
282
|
+
TESTS::
|
|
283
|
+
|
|
284
|
+
sage: from sage.algebras.fusion_rings.fast_parallel_fusion_ring_braid_repn import executor
|
|
285
|
+
sage: FR = FusionRing("A1", 4)
|
|
286
|
+
sage: FR.fusion_labels(['idd', 'one', 'two', 'three', 'four'], inject_variables=True)
|
|
287
|
+
sage: FR.get_fmatrix().find_orthogonal_solution(verbose=False) # long time
|
|
288
|
+
sage: params = (('sig_2k', id(FR)), (0, 1, (1, one, one, 5))) # long time
|
|
289
|
+
sage: len(executor(params)) == 13 # long time
|
|
290
|
+
True
|
|
291
|
+
sage: from sage.algebras.fusion_rings.fast_parallel_fusion_ring_braid_repn import executor
|
|
292
|
+
sage: FR = FusionRing("A1", 2)
|
|
293
|
+
sage: FR.fusion_labels("a", inject_variables=True)
|
|
294
|
+
sage: FR.get_fmatrix().find_orthogonal_solution(verbose=False)
|
|
295
|
+
sage: params = (('odd_one_out', id(FR)), (0, 1, (a2, a2, 5)))
|
|
296
|
+
sage: len(executor(params)) == 1
|
|
297
|
+
True
|
|
298
|
+
"""
|
|
299
|
+
(fn_name, fr_id), args = params
|
|
300
|
+
# Construct a reference to global FMatrix object in this worker's memory
|
|
301
|
+
fusion_ring_obj = cast(fr_id, py_object).value
|
|
302
|
+
# Bind module method to FMatrix object in worker process, and call the method
|
|
303
|
+
return mappers[fn_name](fusion_ring_obj, args)
|
|
304
|
+
|
|
305
|
+
######################################
|
|
306
|
+
# Pickling circumvention helpers #
|
|
307
|
+
######################################
|
|
308
|
+
|
|
309
|
+
cpdef _unflatten_entries(fusion_ring, list entries):
|
|
310
|
+
r"""
|
|
311
|
+
Restore cyclotomic coefficient object from its tuple of rational
|
|
312
|
+
coefficients representation.
|
|
313
|
+
|
|
314
|
+
Used to circumvent pickling issue introduced by PARI settings
|
|
315
|
+
in :issue:`30537`.
|
|
316
|
+
|
|
317
|
+
EXAMPLES::
|
|
318
|
+
|
|
319
|
+
sage: from sage.algebras.fusion_rings.fast_parallel_fusion_ring_braid_repn import _unflatten_entries
|
|
320
|
+
sage: fr = FusionRing("B2", 2)
|
|
321
|
+
sage: F = fr.field()
|
|
322
|
+
sage: coeff = [F.random_element() for i in range(2)]
|
|
323
|
+
sage: entries = [((0, 0), coeff[0].list()), ((0, 1), coeff[1].list())]
|
|
324
|
+
sage: _unflatten_entries(fr, entries)
|
|
325
|
+
sage: all(cyc_elt_obj == c for (coord, cyc_elt_obj), c in zip(entries, coeff))
|
|
326
|
+
True
|
|
327
|
+
"""
|
|
328
|
+
F = fusion_ring.fvars_field()
|
|
329
|
+
if F != QQbar:
|
|
330
|
+
for i, (coord, entry) in enumerate(entries):
|
|
331
|
+
entries[i] = (coord, F(entry))
|