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
|
@@ -0,0 +1,778 @@
|
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version findifs.lib 4.1.2.0 Feb_2019 "; // $Id: 9ab6ceb805215f814b823776d95a90cdfcbe6d74 $
|
|
3
|
+
category="System and Control Theory";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: findifs.lib Tools for the finite difference schemes
|
|
6
|
+
AUTHORS: Viktor Levandovskyy, levandov@math.rwth-aachen.de
|
|
7
|
+
|
|
8
|
+
OVERVIEW:
|
|
9
|
+
We provide the presentation of difference operators in a polynomial,
|
|
10
|
+
semi-factorized and a nodal form. Running @code{findifs_example();}
|
|
11
|
+
will demonstrate, how we generate finite difference schemes of linear PDEs
|
|
12
|
+
from given approximations.
|
|
13
|
+
|
|
14
|
+
Theory: The method we use have been developed by V. Levandovskyy and Bernd Martin. The
|
|
15
|
+
computation of a finite difference scheme of a given single linear partial
|
|
16
|
+
differential equation with constant coefficients with a given approximation
|
|
17
|
+
rules boils down to the computation of a Groebner basis of a submodule of
|
|
18
|
+
a free module with respect to the ordering, eliminating module components.
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
Support: SpezialForschungsBereich F1301 of the Austrian FWF
|
|
22
|
+
|
|
23
|
+
PROCEDURES:
|
|
24
|
+
findifs_example(); contains a guided explanation of our approach
|
|
25
|
+
decoef(P,n); decompose polynomial P into summands with respect to the number n
|
|
26
|
+
difpoly2tex(S,P[,Q]); present the difference scheme in the nodal form
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
exp2pt(P[,L]); convert a polynomial M into the TeX format, in nodal form
|
|
30
|
+
texcoef(n); converts the number n into TeX
|
|
31
|
+
npar(n); search for 'n' among the parameters and returns its number
|
|
32
|
+
magnitude(P); compute the square of the magnitude of a complex expression
|
|
33
|
+
replace(s,what,with); replace in s all the substrings with a given string
|
|
34
|
+
xchange(w,a,b); exchange two substrings in a given string
|
|
35
|
+
|
|
36
|
+
SEE ALSO: latex_lib, finitediff_lib
|
|
37
|
+
";
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
LIB "latex.lib";
|
|
41
|
+
LIB "polylib.lib";
|
|
42
|
+
|
|
43
|
+
proc tst_findif()
|
|
44
|
+
{
|
|
45
|
+
example decoef;
|
|
46
|
+
example difpoly2tex;
|
|
47
|
+
example exp2pt;
|
|
48
|
+
example texcoef;
|
|
49
|
+
example npar;
|
|
50
|
+
example magnitude;
|
|
51
|
+
example replace;
|
|
52
|
+
example xchange;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// static procs:
|
|
56
|
+
// par2tex(s); convert special characters to TeX in s
|
|
57
|
+
// mon2pt(P[,L]); convert a monomial M into the TeX format, in nodal form
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
// 1. GLOBAL ASSUME: in the ring we have first Tx, then Tt: [FIXED, not needed anymore]!
|
|
61
|
+
// 2. map vars other than Tx,Tt to parameters instead or just ignore them [?]
|
|
62
|
+
// 3. clear the things with brackets
|
|
63
|
+
// 4. todo: content resp lcmZ, gcdZ
|
|
64
|
+
|
|
65
|
+
proc xchange(string where, string a, string b)
|
|
66
|
+
"USAGE: xchange(w,a,b); w,a,b strings
|
|
67
|
+
RETURN: string
|
|
68
|
+
PURPOSE: exchanges substring 'a' with a substring 'b' in the string w
|
|
69
|
+
NOTE:
|
|
70
|
+
EXAMPLE: example xchange; shows examples
|
|
71
|
+
"{
|
|
72
|
+
// replaces a<->b in where
|
|
73
|
+
// assume they are of the same size [? seems to work]
|
|
74
|
+
string s = "H";
|
|
75
|
+
string t;
|
|
76
|
+
t = replace(where,a,s);
|
|
77
|
+
t = replace(t,b,a);
|
|
78
|
+
t = replace(t,s,b);
|
|
79
|
+
return(t);
|
|
80
|
+
}
|
|
81
|
+
example
|
|
82
|
+
{
|
|
83
|
+
" EXAMPLE:"; echo=2;
|
|
84
|
+
ring r = (0,dt,dh,A),Tt,dp;
|
|
85
|
+
poly p = (Tt*dt+dh+1)^2+2*A;
|
|
86
|
+
string s = texpoly("",p);
|
|
87
|
+
s;
|
|
88
|
+
string t = xchange(s,"dh","dt");
|
|
89
|
+
t;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
static proc par2tex(string s)
|
|
93
|
+
"USAGE: par2tex(s); s a string
|
|
94
|
+
RETURN: string
|
|
95
|
+
PURPOSE: converts special characters to TeX in s
|
|
96
|
+
NOTE: the convention is the following:
|
|
97
|
+
'Tx' goes to 'T_x',
|
|
98
|
+
'dx' to '\\tri x' (the same for dt, dy, dz),
|
|
99
|
+
'theta', 'ro', 'A', 'V' are converted to greek letters.
|
|
100
|
+
EXAMPLE: example par2tex; shows examples
|
|
101
|
+
"{
|
|
102
|
+
// can be done with the help of latex_lib
|
|
103
|
+
|
|
104
|
+
// s is a tex string with a poly
|
|
105
|
+
// replace theta with \theta
|
|
106
|
+
// A with \lambda
|
|
107
|
+
// dt with \tri t
|
|
108
|
+
// dh with \tri h
|
|
109
|
+
// Tx with T_x, Ty with T_y
|
|
110
|
+
// Tt with T_t
|
|
111
|
+
// V with \nu
|
|
112
|
+
// ro with \rho
|
|
113
|
+
// dx with \tri x
|
|
114
|
+
// dy with \tri y
|
|
115
|
+
string t = s;
|
|
116
|
+
t = replace(t,"Tt","T_t");
|
|
117
|
+
t = replace(t,"Tx","T_x");
|
|
118
|
+
t = replace(t,"Ty","T_y");
|
|
119
|
+
t = replace(t,"dt","\\tri t");
|
|
120
|
+
t = replace(t,"dh","\\tri h");
|
|
121
|
+
t = replace(t,"dx","\\tri x");
|
|
122
|
+
t = replace(t,"dy","\\tri y");
|
|
123
|
+
t = replace(t,"theta","\\theta");
|
|
124
|
+
t = replace(t,"A","\\lambda");
|
|
125
|
+
t = replace(t,"V","\\nu");
|
|
126
|
+
t = replace(t,"ro","\\rho");
|
|
127
|
+
return(t);
|
|
128
|
+
}
|
|
129
|
+
example
|
|
130
|
+
{
|
|
131
|
+
" EXAMPLE:"; echo=2;
|
|
132
|
+
ring r = (0,dt,theta,A),Tt,dp;
|
|
133
|
+
poly p = (Tt*dt+theta+1)^2+2*A;
|
|
134
|
+
string s = texfactorize("",p);
|
|
135
|
+
s;
|
|
136
|
+
par2tex(s);
|
|
137
|
+
string T = texfactorize("",p*(-theta*A));
|
|
138
|
+
par2tex(T);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
proc replace(string s, string what, string with)
|
|
142
|
+
"USAGE: replace(s,what,with); s,what,with strings
|
|
143
|
+
RETURN: string
|
|
144
|
+
PURPOSE: replaces in 's' all the substrings 'what' with substring 'with'
|
|
145
|
+
NOTE:
|
|
146
|
+
EXAMPLE: example replace; shows examples
|
|
147
|
+
"{
|
|
148
|
+
// clear: replace in s, "what" with "with"
|
|
149
|
+
int ss = size(s);
|
|
150
|
+
int cn = find(s,what);
|
|
151
|
+
if ( (cn==0) || (cn>ss))
|
|
152
|
+
{
|
|
153
|
+
return(s);
|
|
154
|
+
}
|
|
155
|
+
int gn = 0; // global counter
|
|
156
|
+
int sw = size(what);
|
|
157
|
+
int swith = size(with);
|
|
158
|
+
string out="";
|
|
159
|
+
string tmp;
|
|
160
|
+
gn = 0;
|
|
161
|
+
while(cn!=0)
|
|
162
|
+
{
|
|
163
|
+
// "cn:"; cn;
|
|
164
|
+
// "gn"; gn;
|
|
165
|
+
tmp = "";
|
|
166
|
+
if (cn>gn)
|
|
167
|
+
{
|
|
168
|
+
tmp = s[gn..cn-1];
|
|
169
|
+
}
|
|
170
|
+
// "tmp:";tmp;
|
|
171
|
+
// out = out+tmp+" "+with;
|
|
172
|
+
out = out+tmp+with;
|
|
173
|
+
// "out:";out;
|
|
174
|
+
gn = cn + sw;
|
|
175
|
+
if (gn>ss)
|
|
176
|
+
{
|
|
177
|
+
// ( (gn>ss) || ((sw>1) && (gn >= ss)) )
|
|
178
|
+
// no need to append smth
|
|
179
|
+
return(out);
|
|
180
|
+
}
|
|
181
|
+
// if (gn == ss)
|
|
182
|
+
// {
|
|
183
|
+
|
|
184
|
+
// }
|
|
185
|
+
cn = find(s,what,gn);
|
|
186
|
+
}
|
|
187
|
+
// and now, append the rest of s
|
|
188
|
+
// out = out + " "+ s[gn..ss];
|
|
189
|
+
out = out + s[gn..ss];
|
|
190
|
+
return(out);
|
|
191
|
+
}
|
|
192
|
+
example
|
|
193
|
+
{
|
|
194
|
+
" EXAMPLE:"; echo=2;
|
|
195
|
+
ring r = (0,dt,theta),Tt,dp;
|
|
196
|
+
poly p = (Tt*dt+theta+1)^2+2;
|
|
197
|
+
string s = texfactorize("",p);
|
|
198
|
+
s;
|
|
199
|
+
s = replace(s,"Tt","T_t"); s;
|
|
200
|
+
s = replace(s,"dt","\\tri t"); s;
|
|
201
|
+
s = replace(s,"theta","\\theta"); s;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
proc exp2pt(poly P, list #)
|
|
205
|
+
"USAGE: exp2pt(P[,L]); P poly, L an optional list of strings
|
|
206
|
+
RETURN: string
|
|
207
|
+
PURPOSE: convert a polynomial M into the TeX format, in nodal form
|
|
208
|
+
ASSUME: coefficients must not be fractional
|
|
209
|
+
NOTE: an optional list L contains a string, which will replace the default
|
|
210
|
+
value 'u' for the discretized function
|
|
211
|
+
EXAMPLE: example exp2pt; shows examples
|
|
212
|
+
"{
|
|
213
|
+
// given poly in vars [now Tx,Tt are fixed],
|
|
214
|
+
// create Tex expression for points of lattice
|
|
215
|
+
// coeffs must not be fractional
|
|
216
|
+
string varnm = "u";
|
|
217
|
+
if (size(#) > 0)
|
|
218
|
+
{
|
|
219
|
+
if (typeof(#[1])=="string")
|
|
220
|
+
{
|
|
221
|
+
varnm = string(#[1]);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// varnm;
|
|
225
|
+
string rz,mz;
|
|
226
|
+
while (P!=0)
|
|
227
|
+
{
|
|
228
|
+
mz = mon2pt(P,varnm);
|
|
229
|
+
if (mz[1]=="-")
|
|
230
|
+
{
|
|
231
|
+
rz = rz+mz;
|
|
232
|
+
}
|
|
233
|
+
else
|
|
234
|
+
{
|
|
235
|
+
rz = rz + "+" + mz;
|
|
236
|
+
}
|
|
237
|
+
P = P-lead(P);
|
|
238
|
+
}
|
|
239
|
+
rz = rz[2..size(rz)];
|
|
240
|
+
return(rz);
|
|
241
|
+
}
|
|
242
|
+
example
|
|
243
|
+
{
|
|
244
|
+
" EXAMPLE:"; echo=2;
|
|
245
|
+
ring r = (0,dh,dt),(Tx,Tt),dp;
|
|
246
|
+
poly M = (4*dh*Tx^2+1)*(Tt-1)^2;
|
|
247
|
+
print(exp2pt(M));
|
|
248
|
+
print(exp2pt(M,"F"));
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
static proc mon2pt(poly M, string V)
|
|
252
|
+
"USAGE: mon2pt(M,V); M poly, V a string
|
|
253
|
+
RETURN: string
|
|
254
|
+
PURPOSE: convert a monomial M into the TeX format, nodal form
|
|
255
|
+
EXAMPLE: example mon2pt; shows examples
|
|
256
|
+
"{
|
|
257
|
+
// searches for Tx, then Tt
|
|
258
|
+
// monomial to the lattice point conversion
|
|
259
|
+
// c*X^a*Y^b --> c*U^{n+a}_{j+b}
|
|
260
|
+
number cM = leadcoef(M);
|
|
261
|
+
intvec e = leadexp(M);
|
|
262
|
+
// int a = e[2]; // convention: first Tx, then Tt
|
|
263
|
+
// int b = e[1];
|
|
264
|
+
int i;
|
|
265
|
+
int a , b, c = 0,0,0;
|
|
266
|
+
int ia,ib,ic = 0,0,0;
|
|
267
|
+
int nv = nvars(basering);
|
|
268
|
+
string s;
|
|
269
|
+
for (i=1; i<=nv ; i++)
|
|
270
|
+
{
|
|
271
|
+
s = string(var(i));
|
|
272
|
+
if (s=="Tt") { a = e[i]; ia = i;}
|
|
273
|
+
if (s=="Tx") { b = e[i]; ib = i;}
|
|
274
|
+
if (s=="Ty") { c = e[i]; ic = i;}
|
|
275
|
+
}
|
|
276
|
+
// if (ia==0) {"Error:Tt not found!"; return("");}
|
|
277
|
+
// if (ib==0) {"Error:Tx not found!"; return("");}
|
|
278
|
+
// if (ic==0) {"Error:Ty not found!"; return("");}
|
|
279
|
+
// string tc = texobj("",c); // why not texpoly?
|
|
280
|
+
string tc = texcoef(cM);
|
|
281
|
+
string rs;
|
|
282
|
+
if (cM==-1)
|
|
283
|
+
{
|
|
284
|
+
rs = "-";
|
|
285
|
+
}
|
|
286
|
+
if (cM^2 != 1)
|
|
287
|
+
{
|
|
288
|
+
// we don't need 1 or -1 as coeffs
|
|
289
|
+
// rs = clTex(tc)+" ";
|
|
290
|
+
// rs = par2tex(rmDol(tc))+" ";
|
|
291
|
+
rs = par2tex(tc)+" ";
|
|
292
|
+
}
|
|
293
|
+
// a = 0 or b = 0
|
|
294
|
+
rs = rs + V +"^{n";
|
|
295
|
+
if (a!=0)
|
|
296
|
+
{
|
|
297
|
+
rs = rs +"+"+string(a);
|
|
298
|
+
}
|
|
299
|
+
rs = rs +"}_{j";
|
|
300
|
+
if (b!=0)
|
|
301
|
+
{
|
|
302
|
+
rs = rs +"+"+string(b);
|
|
303
|
+
}
|
|
304
|
+
if (c!=0)
|
|
305
|
+
{
|
|
306
|
+
rs = rs + ",k+";
|
|
307
|
+
rs = rs + string(c);
|
|
308
|
+
}
|
|
309
|
+
rs = rs +"}";
|
|
310
|
+
return(rs);
|
|
311
|
+
}
|
|
312
|
+
example
|
|
313
|
+
{
|
|
314
|
+
"EXAMPLE:"; echo=2;
|
|
315
|
+
ring r = (0,dh,dt),(Tx,Tt),dp;
|
|
316
|
+
poly M = (4*dh^2-dt)*Tx^3*Tt;
|
|
317
|
+
print(mon2pt(M,"u"));
|
|
318
|
+
poly N = ((dh-dt)/(dh+dt))*Tx^2*Tt^2;
|
|
319
|
+
print(mon2pt(N,"f"));
|
|
320
|
+
ring r2 = (0,dh,dt),(Tx,Ty,Tt),dp;
|
|
321
|
+
poly M = (4*dh^2-dt)*Tx^3*Ty^2*Tt;
|
|
322
|
+
print(mon2pt(M,"u"));
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
proc npar(number n)
|
|
326
|
+
"USAGE: npar(n); n a number
|
|
327
|
+
RETURN: int
|
|
328
|
+
PURPOSE: searches for 'n' among the parameters and returns its number
|
|
329
|
+
EXAMPLE: example npar; shows examples
|
|
330
|
+
"{
|
|
331
|
+
// searches for n amongst parameters
|
|
332
|
+
// and returns its number
|
|
333
|
+
int i,j=0,0;
|
|
334
|
+
list L = ringlist(basering);
|
|
335
|
+
list M = L[1][2]; // pars
|
|
336
|
+
string sn = string(n);
|
|
337
|
+
sn = sn[2..size(sn)-1];
|
|
338
|
+
for (i=1; i<=size(M);i++)
|
|
339
|
+
{
|
|
340
|
+
if (M[i] == sn)
|
|
341
|
+
{
|
|
342
|
+
j = i;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
if (j==0)
|
|
346
|
+
{
|
|
347
|
+
"Incorrect parameter";
|
|
348
|
+
}
|
|
349
|
+
return(j);
|
|
350
|
+
}
|
|
351
|
+
example
|
|
352
|
+
{
|
|
353
|
+
"EXAMPLE:"; echo=2;
|
|
354
|
+
ring r = (0,dh,dt,theta,A),t,dp;
|
|
355
|
+
npar(dh);
|
|
356
|
+
number T = theta;
|
|
357
|
+
npar(T);
|
|
358
|
+
npar(dh^2);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
proc decoef(poly P, number n)
|
|
362
|
+
"USAGE: decoef(P,n); P a poly, n a number
|
|
363
|
+
RETURN: ideal
|
|
364
|
+
PURPOSE: decompose polynomial P into summands with respect
|
|
365
|
+
to the presence of the number n in the coefficients
|
|
366
|
+
NOTE: n is usually a parameter with no power
|
|
367
|
+
EXAMPLE: example decoef; shows examples
|
|
368
|
+
"{
|
|
369
|
+
// decomposes polynomial into summands
|
|
370
|
+
// w.r.t. the presence of a number n in coeffs
|
|
371
|
+
// returns ideal
|
|
372
|
+
def br = basering;
|
|
373
|
+
int i,j=0,0;
|
|
374
|
+
int pos = npar(n);
|
|
375
|
+
if ((pos==0) || (P==0))
|
|
376
|
+
{
|
|
377
|
+
return(0);
|
|
378
|
+
}
|
|
379
|
+
pos = pos + nvars(basering);
|
|
380
|
+
// map all pars except to vars, provided no things are in denominator
|
|
381
|
+
number con = content(P);
|
|
382
|
+
con = numerator(con);
|
|
383
|
+
P = cleardenom(P); //destroys content!
|
|
384
|
+
P = con*P; // restore the numerator part of the content
|
|
385
|
+
list M = ringlist(basering);
|
|
386
|
+
list L = M[1..4];
|
|
387
|
+
list Pars = L[1][2];
|
|
388
|
+
list Vars = L[2] + Pars;
|
|
389
|
+
L[1] = L[1][1]; // characteristic
|
|
390
|
+
L[2] = Vars;
|
|
391
|
+
// for non-comm things: don't need nc but graded algebra
|
|
392
|
+
// list templ;
|
|
393
|
+
// L[5] = templ;
|
|
394
|
+
// L[6] = templ;
|
|
395
|
+
def @R = ring(L);
|
|
396
|
+
setring @R;
|
|
397
|
+
poly P = imap(br,P);
|
|
398
|
+
poly P0 = subst(P,var(pos),0);
|
|
399
|
+
poly P1 = P - P0;
|
|
400
|
+
ideal I = P0,P1;
|
|
401
|
+
setring br;
|
|
402
|
+
ideal I = imap(@R,I);
|
|
403
|
+
kill @R;
|
|
404
|
+
// check: P0+P1==P
|
|
405
|
+
poly Q = I[1]+I[2];
|
|
406
|
+
if (P!=Q)
|
|
407
|
+
{
|
|
408
|
+
"Warning: problem in decoef";
|
|
409
|
+
}
|
|
410
|
+
return(I);
|
|
411
|
+
// subtract the pure part from orig and check if n is remained there
|
|
412
|
+
}
|
|
413
|
+
example
|
|
414
|
+
{
|
|
415
|
+
" EXAMPLE:"; echo=2;
|
|
416
|
+
ring r = (0,dh,dt),(Tx,Tt),dp;
|
|
417
|
+
poly P = (4*dh^2-dt)*Tx^3*Tt + dt*dh*Tt^2 + dh*Tt;
|
|
418
|
+
decoef(P,dt);
|
|
419
|
+
decoef(P,dh);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
proc texcoef(number n)
|
|
423
|
+
"USAGE: texcoef(n); n a number
|
|
424
|
+
RETURN: string
|
|
425
|
+
PURPOSE: converts the number n into TeX format
|
|
426
|
+
NOTE: if n is a polynomial, texcoef adds extra brackets and performs some space substitutions
|
|
427
|
+
EXAMPLE: example texcoef; shows examples
|
|
428
|
+
"{
|
|
429
|
+
// makes tex from n
|
|
430
|
+
// and uses substitutions
|
|
431
|
+
// if n is a polynomial, adds brackets
|
|
432
|
+
number D = denominator(n);
|
|
433
|
+
int DenIsOne = 0;
|
|
434
|
+
if ( D==number(1) )
|
|
435
|
+
{
|
|
436
|
+
DenIsOne = 1;
|
|
437
|
+
}
|
|
438
|
+
string sd = texpoly("",D);
|
|
439
|
+
sd = rmDol(sd);
|
|
440
|
+
sd = par2tex(sd);
|
|
441
|
+
number N = numerator(n);
|
|
442
|
+
string sn = texpoly("",N);
|
|
443
|
+
sn = rmDol(sn);
|
|
444
|
+
sn = par2tex(sn);
|
|
445
|
+
string sout="";
|
|
446
|
+
int i;
|
|
447
|
+
int NisPoly = 0;
|
|
448
|
+
if (DenIsOne)
|
|
449
|
+
{
|
|
450
|
+
sout = sn;
|
|
451
|
+
for(i=1; i<=size(sout); i++)
|
|
452
|
+
{
|
|
453
|
+
if ( (sout[i]=="+") || (sout[i]=="-") )
|
|
454
|
+
{
|
|
455
|
+
NisPoly = 1;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
if (NisPoly)
|
|
459
|
+
{
|
|
460
|
+
sout = "("+sout+")";
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
else
|
|
464
|
+
{
|
|
465
|
+
sout = "\\frac{"+sn+"}{"+sd+"}";
|
|
466
|
+
}
|
|
467
|
+
return(sout);
|
|
468
|
+
}
|
|
469
|
+
example
|
|
470
|
+
{
|
|
471
|
+
" EXAMPLE:"; echo=2;
|
|
472
|
+
ring r = (0,dh,dt),(Tx,Tt),dp;
|
|
473
|
+
number n1,n2,n3 = dt/(4*dh^2-dt),(dt+dh)^2, 1/dh;
|
|
474
|
+
n1; texcoef(n1);
|
|
475
|
+
n2; texcoef(n2);
|
|
476
|
+
n3; texcoef(n3);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
static proc rmDol(string s)
|
|
480
|
+
{
|
|
481
|
+
// removes $s and _no_ (s on appearance
|
|
482
|
+
int i = size(s);
|
|
483
|
+
if (s[1] == "$") { s = s[2..i]; i--;}
|
|
484
|
+
if (s[1] == "(") { s = s[2..i]; i--;}
|
|
485
|
+
if (s[i] == "$") { s = s[1..i-1]; i--;}
|
|
486
|
+
if (s[i] == ")") { s = s[1..i-1];}
|
|
487
|
+
return(s);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
proc difpoly2tex(ideal S, list P, list #)
|
|
491
|
+
"USAGE: difpoly2tex(S,P[,Q]); S an ideal, P and optional Q are lists
|
|
492
|
+
RETURN: string
|
|
493
|
+
PURPOSE: present the difference scheme in the nodal form
|
|
494
|
+
ASSUME: ideal S is the result of @code{decoef} procedure
|
|
495
|
+
NOTE: a list P may be empty or may contain parameters, which will not
|
|
496
|
+
appear in denominators
|
|
497
|
+
@* an optional list Q represents the part of the scheme, depending
|
|
498
|
+
on other function, than the major part
|
|
499
|
+
EXAMPLE: example difpoly2tex; shows examples
|
|
500
|
+
"
|
|
501
|
+
{
|
|
502
|
+
// S = sum s_i = orig diff poly or
|
|
503
|
+
// the result of decoef
|
|
504
|
+
// P = list of pars (numbers) not to be divided with, may be empty
|
|
505
|
+
// # is an optional list of polys, repr. the part dep. on "f", not on "u"
|
|
506
|
+
// S = simplify(S,2); // destroys the leadcoef
|
|
507
|
+
// rescan S and remove 0s from it
|
|
508
|
+
int i;
|
|
509
|
+
ideal T;
|
|
510
|
+
int ss = ncols(S);
|
|
511
|
+
int j=1;
|
|
512
|
+
for(i=1; i<=ss; i++)
|
|
513
|
+
{
|
|
514
|
+
if (S[i]!=0)
|
|
515
|
+
{
|
|
516
|
+
T[j]=S[i];
|
|
517
|
+
j++;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
S = T;
|
|
521
|
+
ss = j-1;
|
|
522
|
+
int GotF = 1;
|
|
523
|
+
list F;
|
|
524
|
+
if (size(#)>0)
|
|
525
|
+
{
|
|
526
|
+
F = #;
|
|
527
|
+
if ( (size(F)==1) && (F[1]==0) )
|
|
528
|
+
{
|
|
529
|
+
GotF = 0;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
else
|
|
533
|
+
{
|
|
534
|
+
GotF = 0;
|
|
535
|
+
}
|
|
536
|
+
int sf = size(F);
|
|
537
|
+
|
|
538
|
+
ideal SC;
|
|
539
|
+
int sp = size(P);
|
|
540
|
+
intvec np;
|
|
541
|
+
int GotP = 1;
|
|
542
|
+
if (sp==0)
|
|
543
|
+
{
|
|
544
|
+
GotP = 0;
|
|
545
|
+
}
|
|
546
|
+
if (sp==1)
|
|
547
|
+
{
|
|
548
|
+
if (P[1]==0)
|
|
549
|
+
{
|
|
550
|
+
GotP = 0;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
if (GotP)
|
|
554
|
+
{
|
|
555
|
+
for (i=1; i<=sp; i++)
|
|
556
|
+
{
|
|
557
|
+
np[i] = npar(P[i])+ nvars(basering);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
for (i=1; i<=ss; i++)
|
|
561
|
+
{
|
|
562
|
+
SC[i] = leadcoef(S[i]);
|
|
563
|
+
}
|
|
564
|
+
if (GotF)
|
|
565
|
+
{
|
|
566
|
+
for (i=1; i<=sf; i++)
|
|
567
|
+
{
|
|
568
|
+
SC[ss+i] = leadcoef(F[i]);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
def br = basering;
|
|
572
|
+
// map all pars except to vars, provided no things are in denominator
|
|
573
|
+
list M = ringlist(basering);
|
|
574
|
+
list L = M[1..4]; // erase nc part
|
|
575
|
+
list Pars = L[1][2];
|
|
576
|
+
list Vars = L[2] + Pars;
|
|
577
|
+
L[1] = L[1][1]; // characteristic
|
|
578
|
+
L[2] = Vars;
|
|
579
|
+
|
|
580
|
+
def @R = ring(L);
|
|
581
|
+
setring @R;
|
|
582
|
+
ideal SC = imap(br,SC);
|
|
583
|
+
if (GotP)
|
|
584
|
+
{
|
|
585
|
+
for (i=1; i<=sp; i++)
|
|
586
|
+
{
|
|
587
|
+
SC = subst(SC,var(np[i]),1);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
poly q=1;
|
|
591
|
+
q = lcm(q,SC);
|
|
592
|
+
setring br;
|
|
593
|
+
poly q = imap(@R,q);
|
|
594
|
+
number lq = leadcoef(q);
|
|
595
|
+
// lq;
|
|
596
|
+
number tmp;
|
|
597
|
+
string sout="";
|
|
598
|
+
string vname = "u";
|
|
599
|
+
for (i=1; i<=ss; i++)
|
|
600
|
+
{
|
|
601
|
+
tmp = leadcoef(S[i]);
|
|
602
|
+
S[i] = S[i]/tmp;
|
|
603
|
+
tmp = tmp/lq;
|
|
604
|
+
sout = sout +"+ "+texcoef(tmp)+"\\cdot ("+exp2pt(S[i])+")";
|
|
605
|
+
}
|
|
606
|
+
if (GotF)
|
|
607
|
+
{
|
|
608
|
+
vname = "p"; //"f";
|
|
609
|
+
for (i=1; i<=sf; i++)
|
|
610
|
+
{
|
|
611
|
+
tmp = leadcoef(F[i]);
|
|
612
|
+
F[i] = F[i]/tmp;
|
|
613
|
+
tmp = tmp/lq;
|
|
614
|
+
sout = sout +"+ "+texcoef(tmp)+"\\cdot ("+exp2pt(F[i],vname)+")";
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
sout = sout[3..size(sout)]; //rm first +
|
|
618
|
+
return(sout);
|
|
619
|
+
}
|
|
620
|
+
example
|
|
621
|
+
{
|
|
622
|
+
"EXAMPLE:"; echo=2;
|
|
623
|
+
ring r = (0,dh,dt,V),(Tx,Tt),dp;
|
|
624
|
+
poly M = (4*dh*Tx+dt)^2*(Tt-1) + V*Tt*Tx;
|
|
625
|
+
ideal I = decoef(M,dt);
|
|
626
|
+
list L; L[1] = V;
|
|
627
|
+
difpoly2tex(I,L);
|
|
628
|
+
poly G = V*dh^2*(Tt-Tx)^2;
|
|
629
|
+
difpoly2tex(I,L,G);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
proc magnitude(poly P)
|
|
634
|
+
"USAGE: magnitude(P); P a poly
|
|
635
|
+
RETURN: poly
|
|
636
|
+
PURPOSE: compute the square of the magnitude of a complex expression
|
|
637
|
+
ASSUME: i is the variable of a basering
|
|
638
|
+
EXAMPLE: example magnitude; shows examples
|
|
639
|
+
"
|
|
640
|
+
{
|
|
641
|
+
// check whether i is present among the vars
|
|
642
|
+
list L = ringlist(basering)[2]; // vars
|
|
643
|
+
int j; int cnt = 0;
|
|
644
|
+
for(j=size(L);j>0;j--)
|
|
645
|
+
{
|
|
646
|
+
if (L[j] == "i")
|
|
647
|
+
{
|
|
648
|
+
cnt = 1; break;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
if (!cnt)
|
|
652
|
+
{
|
|
653
|
+
ERROR("a variable called i is expected in basering");
|
|
654
|
+
}
|
|
655
|
+
// i is present, check that i^2+1=0;
|
|
656
|
+
// if (NF(i^2+1,std(0)) != 0)
|
|
657
|
+
// {
|
|
658
|
+
// "Warning: i^2+1=0 does not hold. Reduce the output manually";
|
|
659
|
+
// }
|
|
660
|
+
poly re = subst(P,i,0);
|
|
661
|
+
poly im = (P - re)/i;
|
|
662
|
+
return(re^2+im^2);
|
|
663
|
+
}
|
|
664
|
+
example
|
|
665
|
+
{
|
|
666
|
+
"EXAMPLE:"; echo=2;
|
|
667
|
+
ring r = (0,d),(g,i,sin,cos),dp;
|
|
668
|
+
poly P = d*i*sin - g*cos +d^2*i;
|
|
669
|
+
NF( magnitude(P), std(i^2+1) );
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
static proc clTex(string s)
|
|
674
|
+
// removes beginning and ending $'s
|
|
675
|
+
{
|
|
676
|
+
string t;
|
|
677
|
+
if (size(s)>2)
|
|
678
|
+
{
|
|
679
|
+
// why -3?
|
|
680
|
+
t = s[2..(size(s)-3)];
|
|
681
|
+
}
|
|
682
|
+
return(t);
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
static proc simfrac(poly up, poly down)
|
|
686
|
+
{
|
|
687
|
+
// simplifies a fraction up/down
|
|
688
|
+
// into the form up/down = RT[1] + RT[2]/down
|
|
689
|
+
list LL = division(up,down);
|
|
690
|
+
list RT;
|
|
691
|
+
RT[1] = LL[1][1,1]; // integer part
|
|
692
|
+
RT[2] = L[2][1]; // new numerator
|
|
693
|
+
return(RT);
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
proc findifs_example()
|
|
697
|
+
"USAGE: findifs_example();
|
|
698
|
+
RETURN: nothing (demo)
|
|
699
|
+
PURPOSE: demonstration of our approach and this library
|
|
700
|
+
EXAMPLE: example findifs_example; shows examples
|
|
701
|
+
"
|
|
702
|
+
{
|
|
703
|
+
|
|
704
|
+
"* Equation: u_tt - A^2 u_xx -B^2 u_yy = 0; A,B are constants";
|
|
705
|
+
"* we employ three central differences";
|
|
706
|
+
"* the vector we act on is (u_xx, u_yy, u_tt, u)^T";
|
|
707
|
+
"* Set up the ring: ";
|
|
708
|
+
"ring r = (0,A,B,dt,dx,dy),(Tx,Ty,Tt),(c,dp);";
|
|
709
|
+
ring r = (0,A,B,dt,dx,dy),(Tx,Ty,Tt),(c,dp);
|
|
710
|
+
"* Set up the matrix with equation and approximations: ";
|
|
711
|
+
"matrix M[4][4] =";
|
|
712
|
+
" // direct equation:";
|
|
713
|
+
" -A^2, -B^2, 1, 0,";
|
|
714
|
+
" // central difference u_tt";
|
|
715
|
+
" 0, 0, -dt^2*Tt, (Tt-1)^2,";
|
|
716
|
+
" // central difference u_xx";
|
|
717
|
+
" -dx^2*Tx, 0, 0, (Tx-1)^2,";
|
|
718
|
+
" // central difference u_yy";
|
|
719
|
+
" 0, -dy^2*Ty, 0, (Ty-1)^2;";
|
|
720
|
+
matrix M[4][4] =
|
|
721
|
+
// direct equation:
|
|
722
|
+
-A^2, -B^2, 1, 0,
|
|
723
|
+
// central difference u_tt
|
|
724
|
+
0, 0, -dt^2*Tt, (Tt-1)^2,
|
|
725
|
+
// central difference u_xx
|
|
726
|
+
-dx^2*Tx, 0, 0, (Tx-1)^2,
|
|
727
|
+
// central difference u_yy
|
|
728
|
+
0, -dy^2*Ty, 0, (Ty-1)^2;
|
|
729
|
+
//=========================================
|
|
730
|
+
// CHECK THE CORRECTNESS OF EQUATIONS AS INPUT:
|
|
731
|
+
ring rX = (0,A,B,dt,dx,dy,Tx,Ty,Tt),(Uxx, Uyy,Utt, U),(c,Dp);
|
|
732
|
+
matrix M = imap(r,M);
|
|
733
|
+
vector X = [Uxx, Uyy, Utt, U];
|
|
734
|
+
"* Print the differential form of equations: ";
|
|
735
|
+
print(M*X);
|
|
736
|
+
// END CHECK
|
|
737
|
+
//=========================================
|
|
738
|
+
setring r;
|
|
739
|
+
"* Perform the elimination of module components:";
|
|
740
|
+
" module R = transpose(M);";
|
|
741
|
+
" module S = std(R);";
|
|
742
|
+
module R = transpose(M);
|
|
743
|
+
module S = std(R);
|
|
744
|
+
" * See the result of Groebner bases: generators are columns";
|
|
745
|
+
" print(S);";
|
|
746
|
+
print(S);
|
|
747
|
+
" * So, only the first column has its nonzero element in the last component";
|
|
748
|
+
" * Hence, this polynomial is the scheme";
|
|
749
|
+
" poly p = S[4,1];" ;
|
|
750
|
+
poly p = S[4,1]; // by elimination of module components
|
|
751
|
+
" print(p); ";
|
|
752
|
+
print(p);
|
|
753
|
+
list L; L[1]=A;L[2] = B;
|
|
754
|
+
ideal I = decoef(p,dt); // make splitting w.r.t. the appearance of dt
|
|
755
|
+
"* Create the nodal of the scheme in TeX format: ";
|
|
756
|
+
" ideal I = decoef(p,dt);";
|
|
757
|
+
" difpoly2tex(I,L);";
|
|
758
|
+
difpoly2tex(I,L); // the nodal form of the scheme in TeX
|
|
759
|
+
"* Preparations for the semi-factorized form: ";
|
|
760
|
+
poly pi1 = subst(I[2],B,0);
|
|
761
|
+
poly pi2 = I[2] - pi1;
|
|
762
|
+
" poly pi1 = subst(I[2],B,0);";
|
|
763
|
+
" poly pi2 = I[2] - pi1;";
|
|
764
|
+
"* Show the semi-factorized form of the scheme: 1st summand";
|
|
765
|
+
" factorize(I[1]); ";
|
|
766
|
+
factorize(I[1]); // semi-factorized form of the scheme: 1st summand
|
|
767
|
+
"* Show the semi-factorized form of the scheme: 2nd summand";
|
|
768
|
+
" factorize(pi1);";
|
|
769
|
+
factorize(pi1); // semi-factorized form of the scheme: 2nd summand
|
|
770
|
+
"* Show the semi-factorized form of the scheme: 3rd summand";
|
|
771
|
+
" factorize(pi1);";
|
|
772
|
+
factorize(pi2); // semi-factorized form of the scheme: 3rd summand
|
|
773
|
+
}
|
|
774
|
+
example
|
|
775
|
+
{
|
|
776
|
+
"EXAMPLE:"; echo=1;
|
|
777
|
+
findifs_example();
|
|
778
|
+
}
|