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 intprog.lib 4.2.1.3 Dec_2021 "; // $Id: 9e7345cc99ddc8bbfb8c8e044e0740aaa0defe24 $
|
|
3
|
+
category="Commutative Algebra";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: intprog.lib Integer Programming with Groebner Basis Methods
|
|
6
|
+
AUTHOR: Christine Theis, email: ctheis@math.uni-sb.de
|
|
7
|
+
|
|
8
|
+
PROCEDURES:
|
|
9
|
+
solve_IP(..); procedures for solving Integer Programming problems
|
|
10
|
+
";
|
|
11
|
+
|
|
12
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
13
|
+
static proc solve_IP_1(intmat A, intvec bx, intvec c, string alg)
|
|
14
|
+
{
|
|
15
|
+
intvec v;
|
|
16
|
+
// to be returned
|
|
17
|
+
|
|
18
|
+
// check arguments as far as necessary
|
|
19
|
+
// other inconsistencies are detected by the external program
|
|
20
|
+
if(size(c)!=ncols(A))
|
|
21
|
+
{
|
|
22
|
+
"ERROR: The number of matrix columns does not equal the size of the cost vector.";
|
|
23
|
+
return(v);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// create first temporary file with which the external program is
|
|
27
|
+
// called
|
|
28
|
+
|
|
29
|
+
int process=system("pid");
|
|
30
|
+
string matrixfile="temp_MATRIX"+string(process);
|
|
31
|
+
link MATRIX=":w "+matrixfile;
|
|
32
|
+
open(MATRIX);
|
|
33
|
+
|
|
34
|
+
write(MATRIX,"MATRIX","columns:",ncols(A),"cost vector:");
|
|
35
|
+
int i,j;
|
|
36
|
+
for(j=1;j<=ncols(A);j++)
|
|
37
|
+
{
|
|
38
|
+
write(MATRIX,c[j]);
|
|
39
|
+
}
|
|
40
|
+
write(MATRIX,"rows:",nrows(A),"matrix:");
|
|
41
|
+
for(i=1;i<=nrows(A);i++)
|
|
42
|
+
{
|
|
43
|
+
for(j=1;j<=ncols(A);j++)
|
|
44
|
+
{
|
|
45
|
+
write(MATRIX,A[i,j]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// search for positive row space vector, if required by the
|
|
50
|
+
// algorithm
|
|
51
|
+
int found=0;
|
|
52
|
+
if((alg=="blr") || (alg=="hs"))
|
|
53
|
+
{
|
|
54
|
+
for(i=1;i<=nrows(A);i++)
|
|
55
|
+
{
|
|
56
|
+
found=i;
|
|
57
|
+
for(j=1;j<=ncols(A);j++)
|
|
58
|
+
{
|
|
59
|
+
if(A[i,j]<=0)
|
|
60
|
+
{
|
|
61
|
+
found=0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if(found>0)
|
|
65
|
+
{
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if(found==0)
|
|
70
|
+
{
|
|
71
|
+
"ERROR: The chosen algorithm needs a positive vector in the row space of the matrix.";
|
|
72
|
+
close(MATRIX);
|
|
73
|
+
system("sh","rm -f "+matrixfile);
|
|
74
|
+
return(v);
|
|
75
|
+
}
|
|
76
|
+
write(MATRIX,"positive row space vector:");
|
|
77
|
+
for(j=1;j<=ncols(A);j++)
|
|
78
|
+
{
|
|
79
|
+
write(MATRIX,A[found,j]);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
close(MATRIX);
|
|
83
|
+
|
|
84
|
+
// create second temporary file for the external program
|
|
85
|
+
|
|
86
|
+
string problemfile="temp_PROBLEM"+string(process);
|
|
87
|
+
link PROBLEM=":w "+problemfile;
|
|
88
|
+
open(PROBLEM);
|
|
89
|
+
|
|
90
|
+
write(PROBLEM,"PROBLEM","vector size:",size(bx),"number of instances:",1,"right hand or initial solution vectors:");
|
|
91
|
+
for(i=1;i<=size(bx);i++)
|
|
92
|
+
{
|
|
93
|
+
write(PROBLEM,bx[i]);
|
|
94
|
+
}
|
|
95
|
+
close(PROBLEM);
|
|
96
|
+
|
|
97
|
+
// call external program
|
|
98
|
+
if (status(system("SingularBin")+"solve_IP","exists")=="yes")
|
|
99
|
+
{
|
|
100
|
+
int dummy=system("sh",system("SingularBin")+"solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
|
|
101
|
+
}
|
|
102
|
+
else
|
|
103
|
+
{
|
|
104
|
+
int dummy=system("sh","solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// read solution from created file
|
|
108
|
+
link SOLUTION=":r "+matrixfile+".sol."+alg;
|
|
109
|
+
string solution=read(SOLUTION);
|
|
110
|
+
int pos;
|
|
111
|
+
string s;
|
|
112
|
+
if(alg=="ct" || alg=="pct")
|
|
113
|
+
{
|
|
114
|
+
pos=find(solution,"NO");
|
|
115
|
+
if(pos!=0)
|
|
116
|
+
{
|
|
117
|
+
"not solvable";
|
|
118
|
+
}
|
|
119
|
+
else
|
|
120
|
+
{
|
|
121
|
+
pos=find(solution,"YES");
|
|
122
|
+
pos=find(solution,":",pos);
|
|
123
|
+
pos++;
|
|
124
|
+
for(j=1;j<=ncols(A);j++)
|
|
125
|
+
{
|
|
126
|
+
while(solution[pos]==" " || solution[pos]==newline)
|
|
127
|
+
{
|
|
128
|
+
pos++;
|
|
129
|
+
}
|
|
130
|
+
s="";
|
|
131
|
+
while(solution[pos]!=" " && solution[pos]!=newline)
|
|
132
|
+
{
|
|
133
|
+
s=s+solution[pos];
|
|
134
|
+
pos++;
|
|
135
|
+
}
|
|
136
|
+
execute("v[j]="+s+";");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else
|
|
141
|
+
{
|
|
142
|
+
pos=find(solution,"optimal");
|
|
143
|
+
pos=find(solution,":",pos);
|
|
144
|
+
pos++;
|
|
145
|
+
for(j=1;j<=ncols(A);j++)
|
|
146
|
+
{
|
|
147
|
+
while(solution[pos]==" " || solution[pos]==newline)
|
|
148
|
+
{
|
|
149
|
+
pos++;
|
|
150
|
+
}
|
|
151
|
+
s="";
|
|
152
|
+
while(solution[pos]!=" " && solution[pos]!=newline)
|
|
153
|
+
{
|
|
154
|
+
s=s+solution[pos];
|
|
155
|
+
pos++;
|
|
156
|
+
}
|
|
157
|
+
execute("v[j]="+s+";");
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// delete all created files
|
|
162
|
+
dummy=system("sh","rm -f "+matrixfile);
|
|
163
|
+
dummy=system("sh","rm -f "+matrixfile+".GB."+alg);
|
|
164
|
+
dummy=system("sh","rm -f "+problemfile);
|
|
165
|
+
dummy=system("sh","rm -f "+matrixfile+".sol."+alg);
|
|
166
|
+
|
|
167
|
+
return(v);
|
|
168
|
+
}
|
|
169
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
170
|
+
static proc solve_IP_2(intmat A, list bx, intvec c, string alg)
|
|
171
|
+
{
|
|
172
|
+
list l;;
|
|
173
|
+
// to be returned
|
|
174
|
+
|
|
175
|
+
// check arguments as far as necessary
|
|
176
|
+
// other inconsistencies are detected by the external program
|
|
177
|
+
if(size(c)!=ncols(A))
|
|
178
|
+
{
|
|
179
|
+
"ERROR: The number of matrix columns does not equal the size of the cost vector.";
|
|
180
|
+
return(l);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
int k;
|
|
184
|
+
for(k=2;k<=size(bx);k++)
|
|
185
|
+
{
|
|
186
|
+
if(size(bx[k])!=size(bx[1]))
|
|
187
|
+
{
|
|
188
|
+
"ERROR: The size of all right-hand vectors must be equal.";
|
|
189
|
+
return(l);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// create first temporary file with which the external program is
|
|
194
|
+
// called
|
|
195
|
+
|
|
196
|
+
int process=system("pid");
|
|
197
|
+
string matrixfile="temp_MATRIX"+string(process);
|
|
198
|
+
link MATRIX=":w "+matrixfile;
|
|
199
|
+
open(MATRIX);
|
|
200
|
+
|
|
201
|
+
write(MATRIX,"MATRIX","columns:",ncols(A),"cost vector:");
|
|
202
|
+
int i,j;
|
|
203
|
+
for(j=1;j<=ncols(A);j++)
|
|
204
|
+
{
|
|
205
|
+
write(MATRIX,c[j]);
|
|
206
|
+
}
|
|
207
|
+
write(MATRIX,"rows:",nrows(A),"matrix:");
|
|
208
|
+
for(i=1;i<=nrows(A);i++)
|
|
209
|
+
{
|
|
210
|
+
for(j=1;j<=ncols(A);j++)
|
|
211
|
+
{
|
|
212
|
+
write(MATRIX,A[i,j]);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// search for positive row space vector, if required by the
|
|
217
|
+
// algorithm
|
|
218
|
+
int found=0;
|
|
219
|
+
if((alg=="blr") || (alg=="hs"))
|
|
220
|
+
{
|
|
221
|
+
for(i=1;i<=nrows(A);i++)
|
|
222
|
+
{
|
|
223
|
+
found=i;
|
|
224
|
+
for(j=1;j<=ncols(A);j++)
|
|
225
|
+
{
|
|
226
|
+
if(A[i,j]<=0)
|
|
227
|
+
{
|
|
228
|
+
found=0;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if(found>0)
|
|
232
|
+
{
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if(found==0)
|
|
237
|
+
{
|
|
238
|
+
"ERROR: The chosen algorithm needs a positive vector in the row space of the matrix.";
|
|
239
|
+
close(MATRIX);
|
|
240
|
+
system("sh","rm -f "+matrixfile);
|
|
241
|
+
return(l);
|
|
242
|
+
}
|
|
243
|
+
write(MATRIX,"positive row space vector:");
|
|
244
|
+
for(j=1;j<=ncols(A);j++)
|
|
245
|
+
{
|
|
246
|
+
write(MATRIX,A[found,j]);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
close(MATRIX);
|
|
250
|
+
|
|
251
|
+
// create second temporary file for the external program
|
|
252
|
+
|
|
253
|
+
string problemfile="temp_PROBLEM"+string(process);
|
|
254
|
+
link PROBLEM=":w "+problemfile;
|
|
255
|
+
open(PROBLEM);
|
|
256
|
+
|
|
257
|
+
write(PROBLEM,"PROBLEM","vector size:",size(bx[1]),"number of instances:",size(bx),"right hand or initial solution vectors:");
|
|
258
|
+
for(k=1;k<=size(bx);k++)
|
|
259
|
+
{
|
|
260
|
+
for(i=1;i<=size(bx[1]);i++)
|
|
261
|
+
{
|
|
262
|
+
write(PROBLEM,bx[k][i]);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
close(PROBLEM);
|
|
266
|
+
|
|
267
|
+
// call external program
|
|
268
|
+
if (status(system("SingularBin")+"solve_IP","exists")=="yes")
|
|
269
|
+
{
|
|
270
|
+
int dummy=system("sh",system("SingularBin")+"solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
|
|
271
|
+
}
|
|
272
|
+
else
|
|
273
|
+
{
|
|
274
|
+
int dummy=system("sh","solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// read solution from created file
|
|
278
|
+
link SOLUTION=":r "+matrixfile+".sol."+alg;
|
|
279
|
+
string solution=read(SOLUTION);
|
|
280
|
+
intvec v;
|
|
281
|
+
int pos,pos1,pos2;
|
|
282
|
+
string s;
|
|
283
|
+
if(alg=="ct" || alg=="pct")
|
|
284
|
+
{
|
|
285
|
+
pos=1;
|
|
286
|
+
for(k=1;k<=size(bx);k++)
|
|
287
|
+
{
|
|
288
|
+
pos1=find(solution,"NO",pos);
|
|
289
|
+
pos2=find(solution,"YES",pos);
|
|
290
|
+
if(pos1!=0 && (pos1<pos2 || pos2==0))
|
|
291
|
+
// first problem not solvable
|
|
292
|
+
{
|
|
293
|
+
pos=find(solution,":",pos1);
|
|
294
|
+
l=insert(l,"not solvable",size(l));
|
|
295
|
+
}
|
|
296
|
+
else
|
|
297
|
+
// first problem solvable
|
|
298
|
+
{
|
|
299
|
+
pos=find(solution,":",pos2);
|
|
300
|
+
pos++;
|
|
301
|
+
for(j=1;j<=ncols(A);j++)
|
|
302
|
+
{
|
|
303
|
+
while(solution[pos]==" " || solution[pos]==newline)
|
|
304
|
+
{
|
|
305
|
+
pos++;
|
|
306
|
+
}
|
|
307
|
+
s="";
|
|
308
|
+
while(solution[pos]!=" " && solution[pos]!=newline)
|
|
309
|
+
{
|
|
310
|
+
s=s+solution[pos];
|
|
311
|
+
pos++;
|
|
312
|
+
}
|
|
313
|
+
execute("v[j]="+s+";");
|
|
314
|
+
}
|
|
315
|
+
l=insert(l,v,size(l));
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
else
|
|
320
|
+
{
|
|
321
|
+
pos=1;
|
|
322
|
+
for(k=1;k<=size(bx);k++)
|
|
323
|
+
{
|
|
324
|
+
pos=find(solution,"optimal",pos);
|
|
325
|
+
pos=find(solution,":",pos);
|
|
326
|
+
pos++;
|
|
327
|
+
for(j=1;j<=ncols(A);j++)
|
|
328
|
+
{
|
|
329
|
+
while(solution[pos]==" " || solution[pos]==newline)
|
|
330
|
+
{
|
|
331
|
+
pos++;
|
|
332
|
+
}
|
|
333
|
+
s="";
|
|
334
|
+
while(solution[pos]!=" " && solution[pos]!=newline)
|
|
335
|
+
{
|
|
336
|
+
s=s+solution[pos];
|
|
337
|
+
pos++;
|
|
338
|
+
}
|
|
339
|
+
execute("v[j]="+s+";");
|
|
340
|
+
}
|
|
341
|
+
l=insert(l,v,size(l));
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// delete all created files
|
|
346
|
+
dummy=system("sh","rm -f "+matrixfile);
|
|
347
|
+
dummy=system("sh","rm -f "+matrixfile+".GB."+alg);
|
|
348
|
+
dummy=system("sh","rm -f "+problemfile);
|
|
349
|
+
dummy=system("sh","rm -f "+matrixfile+".sol."+alg);
|
|
350
|
+
|
|
351
|
+
return(l);
|
|
352
|
+
}
|
|
353
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
354
|
+
|
|
355
|
+
static proc solve_IP_3(intmat A, intvec bx, intvec c, string alg, intvec prsv)
|
|
356
|
+
{
|
|
357
|
+
intvec v;
|
|
358
|
+
// to be returned
|
|
359
|
+
|
|
360
|
+
// check arguments as far as necessary
|
|
361
|
+
// other inconsistencies are detected by the external program
|
|
362
|
+
if(size(c)!=ncols(A))
|
|
363
|
+
{
|
|
364
|
+
"ERROR: The number of matrix columns does not equal the size of the cost vector.";
|
|
365
|
+
return(v);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
if(size(prsv)!=ncols(A))
|
|
369
|
+
{
|
|
370
|
+
"ERROR: The number of matrix columns does not equal the size of the positive row space vector.";
|
|
371
|
+
return(v);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// create first temporary file with which the external program is
|
|
375
|
+
// called
|
|
376
|
+
|
|
377
|
+
int process=system("pid");
|
|
378
|
+
string matrixfile="temp_MATRIX"+string(process);
|
|
379
|
+
link MATRIX=":w "+matrixfile;
|
|
380
|
+
open(MATRIX);
|
|
381
|
+
|
|
382
|
+
write(MATRIX,"MATRIX","columns:",ncols(A),"cost vector:");
|
|
383
|
+
int i,j;
|
|
384
|
+
for(j=1;j<=ncols(A);j++)
|
|
385
|
+
{
|
|
386
|
+
write(MATRIX,c[j]);
|
|
387
|
+
}
|
|
388
|
+
write(MATRIX,"rows:",nrows(A),"matrix:");
|
|
389
|
+
for(i=1;i<=nrows(A);i++)
|
|
390
|
+
{
|
|
391
|
+
for(j=1;j<=ncols(A);j++)
|
|
392
|
+
{
|
|
393
|
+
write(MATRIX,A[i,j]);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// enter positive row space vector, if required by the algorithm
|
|
398
|
+
if((alg=="blr") || (alg=="hs"))
|
|
399
|
+
{
|
|
400
|
+
write(MATRIX,"positive row space vector:");
|
|
401
|
+
for(j=1;j<=ncols(A);j++)
|
|
402
|
+
{
|
|
403
|
+
write(MATRIX,prsv[j]);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
close(MATRIX);
|
|
407
|
+
|
|
408
|
+
// create second temporary file for the external program
|
|
409
|
+
|
|
410
|
+
string problemfile="temp_PROBLEM"+string(process);
|
|
411
|
+
link PROBLEM=":w "+problemfile;
|
|
412
|
+
open(PROBLEM);
|
|
413
|
+
|
|
414
|
+
write(PROBLEM,"PROBLEM","vector size:",size(bx),"number of instances:",1,"right hand or initial solution vectors:");
|
|
415
|
+
for(i=1;i<=size(bx);i++)
|
|
416
|
+
{
|
|
417
|
+
write(PROBLEM,bx[i]);
|
|
418
|
+
}
|
|
419
|
+
close(PROBLEM);
|
|
420
|
+
|
|
421
|
+
// call external program
|
|
422
|
+
if (status(system("SingularBin")+"solve_IP","exists")=="yes")
|
|
423
|
+
{
|
|
424
|
+
int dummy=system("sh",system("SingularBin")+"solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
|
|
425
|
+
}
|
|
426
|
+
else
|
|
427
|
+
{
|
|
428
|
+
int dummy=system("sh","solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// read solution from created file
|
|
432
|
+
link SOLUTION=":r "+matrixfile+".sol."+alg;
|
|
433
|
+
string solution=read(SOLUTION);
|
|
434
|
+
int pos;
|
|
435
|
+
string s;
|
|
436
|
+
if(alg=="ct" || alg=="pct")
|
|
437
|
+
{
|
|
438
|
+
pos=find(solution,"NO");
|
|
439
|
+
if(pos!=0)
|
|
440
|
+
{
|
|
441
|
+
"not solvable";
|
|
442
|
+
}
|
|
443
|
+
else
|
|
444
|
+
{
|
|
445
|
+
pos=find(solution,"YES");
|
|
446
|
+
pos=find(solution,":",pos);
|
|
447
|
+
pos++;
|
|
448
|
+
for(j=1;j<=ncols(A);j++)
|
|
449
|
+
{
|
|
450
|
+
while(solution[pos]==" " || solution[pos]==newline)
|
|
451
|
+
{
|
|
452
|
+
pos++;
|
|
453
|
+
}
|
|
454
|
+
s="";
|
|
455
|
+
while(solution[pos]!=" " && solution[pos]!=newline)
|
|
456
|
+
{
|
|
457
|
+
s=s+solution[pos];
|
|
458
|
+
pos++;
|
|
459
|
+
}
|
|
460
|
+
execute("v[j]="+s+";");
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
else
|
|
465
|
+
{
|
|
466
|
+
pos=find(solution,"optimal");
|
|
467
|
+
pos=find(solution,":",pos);
|
|
468
|
+
pos++;
|
|
469
|
+
for(j=1;j<=ncols(A);j++)
|
|
470
|
+
{
|
|
471
|
+
while(solution[pos]==" " || solution[pos]==newline)
|
|
472
|
+
{
|
|
473
|
+
pos++;
|
|
474
|
+
}
|
|
475
|
+
s="";
|
|
476
|
+
while(solution[pos]!=" " && solution[pos]!=newline)
|
|
477
|
+
{
|
|
478
|
+
s=s+solution[pos];
|
|
479
|
+
pos++;
|
|
480
|
+
}
|
|
481
|
+
execute("v[j]="+s+";");
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
// delete all created files
|
|
486
|
+
dummy=system("sh","rm -f "+matrixfile);
|
|
487
|
+
dummy=system("sh","rm -f "+matrixfile+".GB."+alg);
|
|
488
|
+
dummy=system("sh","rm -f "+problemfile);
|
|
489
|
+
dummy=system("sh","rm -f "+matrixfile+".sol."+alg);
|
|
490
|
+
|
|
491
|
+
return(v);
|
|
492
|
+
}
|
|
493
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
494
|
+
|
|
495
|
+
static proc solve_IP_4(intmat A, list bx, intvec c, string alg, intvec prsv)
|
|
496
|
+
{
|
|
497
|
+
list l;
|
|
498
|
+
// to be returned
|
|
499
|
+
|
|
500
|
+
// check arguments as far as necessary
|
|
501
|
+
// other inconsistencies are detected by the external program
|
|
502
|
+
if(size(c)!=ncols(A))
|
|
503
|
+
{
|
|
504
|
+
"ERROR: The number of matrix columns does not equal the size of the cost vector.";
|
|
505
|
+
return(l);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
if(size(prsv)!=ncols(A))
|
|
509
|
+
{
|
|
510
|
+
"ERROR: The number of matrix columns does not equal the size of the positive row space vector";
|
|
511
|
+
return(v);
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
int k;
|
|
515
|
+
for(k=2;k<=size(bx);k++)
|
|
516
|
+
{
|
|
517
|
+
if(size(bx[k])!=size(bx[1]))
|
|
518
|
+
{
|
|
519
|
+
"ERROR: The size of all right-hand vectors must be equal.";
|
|
520
|
+
return(l);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
// create first temporary file with which the external program is
|
|
525
|
+
// called
|
|
526
|
+
|
|
527
|
+
int process=system("pid");
|
|
528
|
+
string matrixfile="temp_MATRIX"+string(process);
|
|
529
|
+
link MATRIX=":w "+matrixfile;
|
|
530
|
+
open(MATRIX);
|
|
531
|
+
|
|
532
|
+
write(MATRIX,"MATRIX","columns:",ncols(A),"cost vector:");
|
|
533
|
+
int i,j;
|
|
534
|
+
for(j=1;j<=ncols(A);j++)
|
|
535
|
+
{
|
|
536
|
+
write(MATRIX,c[j]);
|
|
537
|
+
}
|
|
538
|
+
write(MATRIX,"rows:",nrows(A),"matrix:");
|
|
539
|
+
for(i=1;i<=nrows(A);i++)
|
|
540
|
+
{
|
|
541
|
+
for(j=1;j<=ncols(A);j++)
|
|
542
|
+
{
|
|
543
|
+
write(MATRIX,A[i,j]);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
// enter positive row space vector if required by the algorithm
|
|
548
|
+
if((alg=="blr") || (alg=="hs"))
|
|
549
|
+
{
|
|
550
|
+
write(MATRIX,"positive row space vector:");
|
|
551
|
+
for(j=1;j<=ncols(A);j++)
|
|
552
|
+
{
|
|
553
|
+
write(MATRIX,prsv[j]);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
close(MATRIX);
|
|
557
|
+
|
|
558
|
+
// create second temporary file for the external program
|
|
559
|
+
|
|
560
|
+
string problemfile="temp_PROBLEM"+string(process);
|
|
561
|
+
link PROBLEM=":w "+problemfile;
|
|
562
|
+
open(PROBLEM);
|
|
563
|
+
|
|
564
|
+
write(PROBLEM,"PROBLEM","vector size:",size(bx[1]),"number of instances:",size(bx),"right hand or initial solution vectors:");
|
|
565
|
+
for(k=1;k<=size(bx);k++)
|
|
566
|
+
{
|
|
567
|
+
for(i=1;i<=size(bx[1]);i++)
|
|
568
|
+
{
|
|
569
|
+
write(PROBLEM,bx[k][i]);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
close(PROBLEM);
|
|
573
|
+
|
|
574
|
+
// call external program
|
|
575
|
+
if (status(system("SingularBin")+"solve_IP","exists")=="yes")
|
|
576
|
+
{
|
|
577
|
+
int dummy=system("sh",system("SingularBin")+"solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
|
|
578
|
+
}
|
|
579
|
+
else
|
|
580
|
+
{
|
|
581
|
+
int dummy=system("sh","solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
// read solution from created file
|
|
585
|
+
link SOLUTION=":r "+matrixfile+".sol."+alg;
|
|
586
|
+
string solution=read(SOLUTION);
|
|
587
|
+
intvec v;
|
|
588
|
+
int pos,pos1,pos2;
|
|
589
|
+
string s;
|
|
590
|
+
if(alg=="ct" || alg=="pct")
|
|
591
|
+
{
|
|
592
|
+
pos=1;
|
|
593
|
+
for(k=1;k<=size(bx);k++)
|
|
594
|
+
{
|
|
595
|
+
pos1=find(solution,"NO",pos);
|
|
596
|
+
pos2=find(solution,"YES",pos);
|
|
597
|
+
if(pos1!=0 && (pos1<pos2 || pos2==0))
|
|
598
|
+
// first problem not solvable
|
|
599
|
+
{
|
|
600
|
+
pos=find(solution,":",pos1);
|
|
601
|
+
l=insert(l,"not solvable",size(l));
|
|
602
|
+
}
|
|
603
|
+
else
|
|
604
|
+
// first problem solvable
|
|
605
|
+
{
|
|
606
|
+
pos=find(solution,":",pos2);
|
|
607
|
+
pos++;
|
|
608
|
+
for(j=1;j<=ncols(A);j++)
|
|
609
|
+
{
|
|
610
|
+
while(solution[pos]==" " || solution[pos]==newline)
|
|
611
|
+
{
|
|
612
|
+
pos++;
|
|
613
|
+
}
|
|
614
|
+
s="";
|
|
615
|
+
while(solution[pos]!=" " && solution[pos]!=newline)
|
|
616
|
+
{
|
|
617
|
+
s=s+solution[pos];
|
|
618
|
+
pos++;
|
|
619
|
+
}
|
|
620
|
+
execute("v[j]="+s+";");
|
|
621
|
+
}
|
|
622
|
+
l=insert(l,v,size(l));
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
else
|
|
627
|
+
{
|
|
628
|
+
pos=1;
|
|
629
|
+
for(k=1;k<=size(bx);k++)
|
|
630
|
+
{
|
|
631
|
+
pos=find(solution,"optimal",pos);
|
|
632
|
+
pos=find(solution,":",pos);
|
|
633
|
+
pos++;
|
|
634
|
+
for(j=1;j<=ncols(A);j++)
|
|
635
|
+
{
|
|
636
|
+
while(solution[pos]==" " || solution[pos]==newline)
|
|
637
|
+
{
|
|
638
|
+
pos++;
|
|
639
|
+
}
|
|
640
|
+
s="";
|
|
641
|
+
while(solution[pos]!=" " && solution[pos]!=newline)
|
|
642
|
+
{
|
|
643
|
+
s=s+solution[pos];
|
|
644
|
+
pos++;
|
|
645
|
+
}
|
|
646
|
+
execute("v[j]="+s+";");
|
|
647
|
+
}
|
|
648
|
+
l=insert(l,v,size(l));
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
// delete all created files
|
|
653
|
+
dummy=system("sh","rm -f "+matrixfile);
|
|
654
|
+
dummy=system("sh","rm -f "+matrixfile+".GB."+alg);
|
|
655
|
+
dummy=system("sh","rm -f "+problemfile);
|
|
656
|
+
dummy=system("sh","rm -f "+matrixfile+".sol."+alg);
|
|
657
|
+
|
|
658
|
+
return(l);
|
|
659
|
+
}
|
|
660
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
661
|
+
|
|
662
|
+
proc solve_IP
|
|
663
|
+
"USAGE: solve_IP(A,bx,c,alg); A intmat, bx intvec, c intvec, alg string.@*
|
|
664
|
+
solve_IP(A,bx,c,alg); A intmat, bx list of intvec, c intvec,
|
|
665
|
+
alg string.@*
|
|
666
|
+
solve_IP(A,bx,c,alg,prsv); A intmat, bx intvec, c intvec,
|
|
667
|
+
alg string, prsv intvec.@*
|
|
668
|
+
solve_IP(A,bx,c,alg,prsv); A intmat, bx list of intvec, c intvec,
|
|
669
|
+
alg string, prsv intvec.
|
|
670
|
+
RETURN: same type as bx: solution of the associated integer programming
|
|
671
|
+
problem(s) as explained in
|
|
672
|
+
@texinfo
|
|
673
|
+
@ref{Toric ideals and integer programming}.
|
|
674
|
+
@end texinfo
|
|
675
|
+
NOTE: This procedure returns the solution(s) of the given IP-problem(s)
|
|
676
|
+
or the message `not solvable'.
|
|
677
|
+
One may call the procedure with several different algorithms:
|
|
678
|
+
@*- the algorithm of Conti/Traverso (ct),
|
|
679
|
+
@*- the positive variant of the algorithm of Conti/Traverso (pct),
|
|
680
|
+
@*- the algorithm of Conti/Traverso using elimination (ect),
|
|
681
|
+
@*- the algorithm of Pottier (pt),
|
|
682
|
+
@*- an algorithm of Bigatti/La Scala/Robbiano (blr),
|
|
683
|
+
@*- the algorithm of Hosten/Sturmfels (hs),
|
|
684
|
+
@*- the algorithm of DiBiase/Urbanke (du).
|
|
685
|
+
@*The argument `alg' should be the abbreviation for an algorithm as
|
|
686
|
+
above: ct, pct, ect, pt, blr, hs or du.
|
|
687
|
+
|
|
688
|
+
`ct' allows computation of an optimal solution of the IP-problem
|
|
689
|
+
directly from the right-hand vector b.
|
|
690
|
+
The same is true for its `positive' variant `pct' which may only be
|
|
691
|
+
applied if A and b have nonnegative entries.
|
|
692
|
+
All other algorithms need initial solutions of the IP-problem.
|
|
693
|
+
|
|
694
|
+
If `alg' is chosen to be `ct' or `pct', bx is read as the right hand
|
|
695
|
+
vector b of the system Ax=b. b should then be an intvec of size m
|
|
696
|
+
where m is the number of rows of A.
|
|
697
|
+
Furthermore, bx and A should be nonnegative if `pct' is used.
|
|
698
|
+
If `alg' is chosen to be `ect',`pt',`blr',`hs' or `du',
|
|
699
|
+
bx is read as an initial solution x of the system Ax=b.
|
|
700
|
+
bx should then be a nonnegative intvec of size n where n is the
|
|
701
|
+
number of columns of A.
|
|
702
|
+
|
|
703
|
+
If `alg' is chosen to be `blr' or `hs', the algorithm needs a vector
|
|
704
|
+
with positive coefficients in the row space of A.
|
|
705
|
+
If no row of A contains only positive entries, one has to use the
|
|
706
|
+
versions of solve_IP which take such a vector prsv as an argument.
|
|
707
|
+
|
|
708
|
+
solve_IP may also be called with a list bx of intvecs instead of a
|
|
709
|
+
single intvec.
|
|
710
|
+
SEE ALSO: intprog_lib, toric_lib, Integer programming
|
|
711
|
+
EXAMPLE: example solve_IP; shows an example
|
|
712
|
+
"
|
|
713
|
+
{
|
|
714
|
+
if(size(#)==4)
|
|
715
|
+
{
|
|
716
|
+
if(typeof(#[2])=="intvec")
|
|
717
|
+
{
|
|
718
|
+
return(solve_IP_1(#[1],#[2],#[3],#[4]));
|
|
719
|
+
}
|
|
720
|
+
else
|
|
721
|
+
{
|
|
722
|
+
return(solve_IP_2(#[1],#[2],#[3],#[4]));
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
else
|
|
726
|
+
{
|
|
727
|
+
if(typeof(#[2])=="intvec")
|
|
728
|
+
{
|
|
729
|
+
return(solve_IP_3(#[1],#[2],#[3],#[4],#[5]));
|
|
730
|
+
}
|
|
731
|
+
else
|
|
732
|
+
{
|
|
733
|
+
return(solve_IP_4(#[1],#[2],#[3],#[4],#[5]));
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
example
|
|
741
|
+
{ "EXAMPLE"; echo=2;
|
|
742
|
+
// 1. call with single right-hand vector
|
|
743
|
+
intmat A[2][3]=1,1,0,0,1,1;
|
|
744
|
+
intvec b1=1,1;
|
|
745
|
+
intvec c=2,2,1;
|
|
746
|
+
intvec solution_vector=solve_IP(A,b1,c,"pct");
|
|
747
|
+
solution_vector;"";
|
|
748
|
+
|
|
749
|
+
// 2. call with list of right-hand vectors
|
|
750
|
+
intvec b2=-1,1;
|
|
751
|
+
list l=b1,b2;
|
|
752
|
+
l;
|
|
753
|
+
list solution_list=solve_IP(A,l,c,"ct");
|
|
754
|
+
solution_list;"";
|
|
755
|
+
|
|
756
|
+
// 3. call with single initial solution vector
|
|
757
|
+
A=2,1,-1,-1,1,2;
|
|
758
|
+
b1=3,4,5;
|
|
759
|
+
solve_IP(A,b1,c,"du");"";
|
|
760
|
+
|
|
761
|
+
// 4. call with single initial solution vector
|
|
762
|
+
// and algorithm needing a positive row space vector
|
|
763
|
+
solution_vector=solve_IP(A,b1,c,"hs");"";
|
|
764
|
+
|
|
765
|
+
// 5. call with single initial solution vector
|
|
766
|
+
// and positive row space vector
|
|
767
|
+
intvec prsv=1,2,1;
|
|
768
|
+
solution_vector=solve_IP(A,b1,c,"hs",prsv);
|
|
769
|
+
solution_vector;"";
|
|
770
|
+
|
|
771
|
+
// 6. call with list of initial solution vectors
|
|
772
|
+
// and positive row space vector
|
|
773
|
+
b2=7,8,0;
|
|
774
|
+
l=b1,b2;
|
|
775
|
+
l;
|
|
776
|
+
solution_list=solve_IP(A,l,c,"blr",prsv);
|
|
777
|
+
solution_list;
|
|
778
|
+
}
|