├── .github └── workflows │ └── msolve.yml ├── .gitignore ├── AUTHORS ├── COPYING ├── INSTALL ├── Makefile.am ├── README.md ├── autogen.sh ├── configure.ac ├── doc ├── biblio.bib ├── examples │ ├── elim2_char1073741827.sh │ ├── elim_char1073741827.ms │ ├── elim_char1073741827.sh │ ├── empty_char0.ms │ ├── empty_char0.sh │ ├── grevlex_char1073741827.ms │ ├── grevlex_char1073741827.sh │ ├── grevlex_lm_char1073741827.sh │ ├── hypersurface_char0.ms │ ├── hypersurface_char0.sh │ ├── param_and_reals_char0.sh │ ├── param_char0.ms │ ├── param_char0.sh │ ├── param_char65521.ms │ ├── param_char65521.sh │ ├── param_simple.ms │ ├── param_simple.sh │ ├── reals_dim0.ms │ ├── reals_dim0.sh │ ├── reals_dim0_prec256.sh │ ├── saturate_char1073741827.ms │ ├── saturate_char1073741827.sh │ ├── simple_char0.ms │ ├── simple_char0.sh │ ├── simple_char65521.ms │ └── simple_char65521.sh ├── macros.tex └── msolve-tutorial.tex ├── input_files ├── F4SAT-31.ms ├── F4SAT-byone-31.ms ├── bug-2nd-prime-bad.ms ├── bug-empty-tracer.ms ├── bug_68.ms ├── cp_d_3_n_4_p_2.ms ├── cyclic5-16.ms ├── cyclic5-31.ms ├── cyclic5-qq.ms ├── eco10-31.ms ├── eco11-31.ms ├── eco6-16.ms ├── eco6-31.ms ├── eco6-qq.ms ├── elim-31.ms ├── elim-qq.ms ├── f4sat-field-char.ms ├── f4sat-is-saturated-check.ms ├── f4sat-zero-input.ms ├── groebner-g2.ms ├── henrion5-qq.ms ├── input-overflow-16.ms ├── kat6-31.ms ├── kat7-qq.ms ├── kat8-qq-truncate.ms ├── line_endings │ ├── in1_dos.ms │ ├── in1_unix.ms │ ├── in2_dos_noeol.ms │ ├── in2_unix.ms │ ├── in3_dos.ms │ ├── in3_unix.ms │ ├── in4_dos.ms │ └── in4_unix.ms ├── linear-qq.ms ├── maxbitsize-bug.ms ├── mq_2_1.ms ├── multy-16.ms ├── multy-31.ms ├── multy-qq.ms ├── nf-16.ms ├── nf-31.ms ├── nf-8.ms ├── nf-lm-bug.ms ├── nonradical_radicalshape-31.ms ├── nonradical_radicalshape-no-square-31.ms ├── nonradical_radicalshape-no-square-qq.ms ├── nonradical_radicalshape-qq.ms ├── nonradical_shape-31.ms ├── nonradical_shape-qq.ms ├── one-16.ms ├── one-31.ms ├── one-qq.ms ├── radical_shape-31.ms ├── radical_shape-qq.ms ├── realroot-extraction-exact-root.ms ├── realroot1.ms ├── reals_dim0-chgvar.ms ├── reals_dim0-extract.ms ├── reals_dim0-swapvar.ms ├── reals_dim0.ms ├── test-lifting2.ms └── xy-qq.ms ├── interfaces ├── msolve-to-julia-file-interface.txt ├── msolve-to-maple-file-interface.mpl └── msolve-to-sage-file-interface.sage ├── m4 ├── ax_check_compile_flag.m4 ├── ax_count_cpus.m4 ├── ax_cpu_vendor.m4 ├── ax_ext.m4 ├── ax_gcc_builtin.m4 ├── ax_gcc_x86_avx_xgetbv.m4 ├── ax_gcc_x86_cpuid.m4 └── ax_openmp.m4 ├── msolve.pc.in ├── output_files ├── F4SAT-31.res ├── F4SAT-byone-31.res ├── bug-2nd-prime-bad.res ├── bug-empty-tracer.res ├── bug_68.res ├── cp_d_3_n_4_p_2.res ├── cyclic5-16.res ├── cyclic5-31.res ├── cyclic5-qq.g2.e1.res ├── cyclic5-qq.g2.e2.res ├── cyclic5-qq.g2.res ├── cyclic5-qq.res ├── eco10-31.res ├── eco11-31.res ├── eco6-16.res ├── eco6-31.res ├── eco6-qq.res ├── elim-31.e2.res ├── elim-31.res ├── elim-qq.e2.res ├── elim-qq.res ├── f4sat-field-char.res ├── f4sat-is-saturated-check.res ├── f4sat-zero-input.res ├── groebner-g2.g2.res ├── henrion5-qq.g2.e1.res ├── henrion5-qq.g2.e2.res ├── henrion5-qq.g2.res ├── henrion5-qq.res ├── input-overflow-16.res ├── kat6-31.res ├── kat7-qq.res ├── kat8-qq-truncate.res ├── linear-qq.res ├── maxbitsize-bug.res ├── mq_2_1.res ├── multy-16.res ├── multy-31.res ├── multy-qq.res ├── nf-16.res ├── nf-31.res ├── nf-8.res ├── nf-lm-bug.res ├── nonradical_radicalshape-31.res ├── nonradical_radicalshape-no-square-31.c0.res ├── nonradical_radicalshape-no-square-qq.p3.res ├── nonradical_radicalshape-no-square-qq.res ├── nonradical_radicalshape-qq.p3.res ├── nonradical_radicalshape-qq.res ├── nonradical_shape-31.res ├── nonradical_shape-qq.p1024.res ├── nonradical_shape-qq.res ├── one-16.res ├── one-31.res ├── one-qq.g2.res ├── one-qq.res ├── radical_shape-31.res ├── radical_shape-qq.res ├── realroot-extraction-exact-root.p256.res ├── realroot-extraction-exact-root.res ├── realroot1.p256.res ├── realroot1.res ├── reals_dim0-chgvar.p256.res ├── reals_dim0-chgvar.res ├── reals_dim0-extract.p256.res ├── reals_dim0-extract.res ├── reals_dim0-swapvar.p256.res ├── reals_dim0-swapvar.res ├── reals_dim0.p256.res ├── reals_dim0.res ├── test-lifting2.res └── xy-qq.res ├── src ├── crt │ ├── longlong.h │ ├── mpq_reconstruct.c │ ├── mpz_CRT_ui.c │ └── ulong_extras.h ├── fglm │ ├── Makefile.am │ ├── berlekamp_massey.c │ ├── data_fglm.c │ ├── fglm.h │ ├── fglm_core.c │ ├── inner-product.c │ ├── libfglm.h │ ├── linalg-fglm.c │ └── matrix-mult.c ├── msolve │ ├── Makefile.am │ ├── duplicate.c │ ├── hilbert.c │ ├── iofiles.c │ ├── libmsolve.c │ ├── lifting-gb.c │ ├── lifting.c │ ├── linear.c │ ├── main.c │ ├── msolve-data.c │ ├── msolve-data.h │ ├── msolve.c │ ├── msolve.h │ └── primes.c ├── neogb │ ├── Makefile.am │ ├── basis.c │ ├── basis.h │ ├── convert.c │ ├── data.c │ ├── data.h │ ├── engine.c │ ├── engine.h │ ├── f4.c │ ├── f4.h │ ├── f4sat.c │ ├── f4sat.h │ ├── gb.c │ ├── hash.c │ ├── hash.h │ ├── io.c │ ├── io.h │ ├── la.h │ ├── la_ff_16.c │ ├── la_ff_32.c │ ├── la_ff_8.c │ ├── la_qq.c │ ├── libneogb.h │ ├── meta_data.c │ ├── meta_data.h │ ├── modular.c │ ├── modular.h │ ├── nf.c │ ├── nf.h │ ├── order.c │ ├── sba.c │ ├── sba.h │ ├── sort_r.h │ ├── symbol.c │ ├── test-driver │ ├── tools.c │ ├── tools.h │ ├── update.c │ └── update.h ├── upolmat │ ├── nmod_mat_extra.h │ ├── nmod_mat_left_nullspace.c │ ├── nmod_mat_permute_rows.c │ ├── nmod_mat_poly.h │ ├── nmod_mat_poly_arith.c │ ├── nmod_mat_poly_io.c │ ├── nmod_mat_poly_mbasis.c │ ├── nmod_mat_poly_mem.c │ ├── nmod_mat_poly_set_from.c │ ├── nmod_mat_poly_shift.c │ ├── nmod_poly_mat_pmbasis.c │ ├── nmod_poly_mat_pmbasis.h │ ├── nmod_poly_mat_utils.c │ └── nmod_poly_mat_utils.h └── usolve │ ├── Makefile.am │ ├── bisection.h │ ├── data_usolve.c │ ├── debug.c │ ├── debug.h │ ├── descartes.c │ ├── descartes.h │ ├── evaluate.c │ ├── evaluate.h │ ├── libusolve.h │ ├── print_usolve.c │ ├── print_usolve.h │ ├── refine.c │ ├── refine.h │ ├── taylor_shift.c │ ├── taylor_shift.h │ ├── tests.c │ ├── univmultiply.c │ ├── univmultiply.h │ ├── usolve.c │ └── utils.c └── test ├── diff ├── diff_F4SAT-31.sh ├── diff_F4SAT-byone-31.sh ├── diff_bug_2nd_prime_bad.sh ├── diff_bug_68.sh ├── diff_bug_empty_tracer.sh ├── diff_cp_d_3_n_4_p_2.sh ├── diff_cyclic5-16.sh ├── diff_cyclic5-31.sh ├── diff_cyclic5-qq.sh ├── diff_eco10-31.sh ├── diff_eco6-16.sh ├── diff_eco6-31.sh ├── diff_eco6-qq.sh ├── diff_elim-31.sh ├── diff_elim-qq.sh ├── diff_f4sat-field-char.sh ├── diff_f4sat-is-saturated-check.sh ├── diff_f4sat-zero-input.sh ├── diff_groebner-g2.sh ├── diff_henrion5-qq.sh ├── diff_input-overflow-16.sh ├── diff_kat6-31.sh ├── diff_kat7-qq.sh ├── diff_linear-qq.sh ├── diff_maxbitsize-bug.sh ├── diff_mq_2_1.sh ├── diff_multy-16.sh ├── diff_multy-31.sh ├── diff_multy-qq.sh ├── diff_nf_16.sh ├── diff_nf_31.sh ├── diff_nf_8.sh ├── diff_nf_lm_bug.sh ├── diff_nonradical_radicalshape-31.sh ├── diff_nonradical_radicalshape-no-square-31.sh ├── diff_nonradical_radicalshape-no-square-qq.sh ├── diff_nonradical_radicalshape-qq.sh ├── diff_nonradical_shape-31.sh ├── diff_nonradical_shape-qq.sh ├── diff_one-16.sh ├── diff_one-31.sh ├── diff_one-qq.sh ├── diff_radical_shape-31.sh ├── diff_radical_shape-qq.sh ├── diff_realroot-extraction-exact-root.sh ├── diff_realroot1.sh ├── diff_reals_dim0-chgvar.sh ├── diff_reals_dim0-extract.sh ├── diff_reals_dim0-swapvar.sh ├── diff_reals_dim0.sh ├── diff_source-groebner.sh ├── diff_source.sh ├── diff_test-lifting2.sh ├── diff_truncate_gb.sh └── diff_xy-qq.sh ├── fglm ├── build_matrixn_nonradical_radicalshape-31.c ├── build_matrixn_nonradical_shape-31.c └── build_matrixn_radical_shape-31.c ├── msolve └── line_endings_support.c ├── neogb └── io │ └── validate_input_data.c └── scripts ├── fglm_build_matrixn.mpl ├── nonradical_radicalshape-31.mpl ├── nonradical_shape-31.mpl └── radical_shape-31.mpl /.github/workflows/msolve.yml: -------------------------------------------------------------------------------- 1 | name: msolve CI 2 | 3 | on: 4 | push: 5 | branches: [ "master" ] 6 | pull_request: 7 | branches: [ "master" ] 8 | 9 | jobs: 10 | build: 11 | runs-on: ${{ matrix.os }} 12 | timeout-minutes: 10 13 | strategy: 14 | fail-fast: false 15 | matrix: 16 | os: 17 | - ubuntu-latest 18 | - macos-latest 19 | steps: 20 | - uses: actions/checkout@v3 21 | - name: "Install dependencies" 22 | run: | 23 | if [ "$RUNNER_OS" == "Linux" ]; then 24 | # sharutils is for uudecode 25 | sudo apt install libgmp-dev libflint-dev libmpfr-dev libntl-dev 26 | elif [ "$RUNNER_OS" == "macOS" ]; then 27 | brew install autoconf automake libtool gmp flint mpfr ntl 28 | else 29 | echo "$RUNNER_OS not supported" 30 | exit 1 31 | fi 32 | - name: autogen 33 | run: ./autogen.sh 34 | - name: configure 35 | run: | 36 | if [ "$RUNNER_OS" == "Linux" ]; then 37 | ./configure 38 | elif [ "$RUNNER_OS" == "macOS" ]; then 39 | ./configure LDFLAGS="-L$(brew --prefix)/lib/" CFLAGS="-g -O2 -I$(brew --prefix)/include/" 40 | else 41 | echo "$RUNNER_OS not supported" 42 | exit 1 43 | fi 44 | - name: make 45 | run: make 46 | - name: make check 47 | run: make check 48 | - name: make distcheck 49 | run: | 50 | if [ "$RUNNER_OS" == "Linux" ]; then 51 | make distcheck 52 | elif [ "$RUNNER_OS" == "macOS" ]; then 53 | make distcheck LDFLAGS="-L$(brew --prefix)/lib/" CFLAGS="-g -O2 -I$(brew --prefix)/include/" 54 | else 55 | echo "$RUNNER_OS not supported" 56 | exit 1 57 | fi 58 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.a 2 | *.o 3 | *.so 4 | *.lo 5 | *.la 6 | *.log 7 | *.trs 8 | *~ 9 | *.libs 10 | *.in 11 | *.m4 12 | *Makefile 13 | *Makefile.in 14 | *.deps 15 | *.dirstamp 16 | aclocal.m4 17 | ar-lib 18 | autom4te.cache/ 19 | autoscan.log 20 | compile 21 | config.guess 22 | config.h 23 | config.h.in 24 | config.log 25 | config.status 26 | config.sub 27 | configure 28 | configure.ac.bak 29 | configure.scan 30 | depcomp 31 | install-sh 32 | libtool 33 | ltmain.sh 34 | missing 35 | stamp-h1 36 | msolve.pc 37 | /msolve 38 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Jérémy Berthomieu (Sorbonne Université) 2 | Christian Eder (TU Kaiserslautern) 3 | Mohab Safey El Din (Sorbonne Université) 4 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | If you are working with the git repository 2 | ========================================== 3 | You will need to have autotools installed on your system. 4 | 1. Run `./autogen.sh` which generates configure and the Makefiles. 5 | 2. Run `./configure` (possibly with options, see `./configure -h` for 6 | more information). 7 | 3. Run `make` (possibly with CFLAGS and LDFLAGS adjusted). 8 | 4. Run `make check`. 9 | 5. Run `make install` in order to globally install the library and the binary 10 | of msolve. 11 | 12 | If you are working on a distribution (downloaded *.tar.gz) 13 | ========================================================== 14 | 1. Run `./configure` (possibly with options, see `./configure -help` for more 15 | information). 16 | 2. Run `make` (possibly with CFLAGS and LDFLAGS adjusted). 17 | 3. Run `make check`. 18 | 4. Run `make install` in order to globally install the library and the binary 19 | of msolve. 20 | 21 | NOTE TO MAC OS users 22 | ==================== 23 | To build a static binary file, you may need to run `./configure --enable-static`. 24 | 25 | You may also need to proceed slightly differently by modifying the `Makefile` file as follows 26 | - add to the `LIBS` variable the `-fopenmp` option 27 | ``` 28 | LIBS = -lflint -lmpfr -lgmp -lm -fopenmp 29 | ``` 30 | - change the `CC` variable to your actual `gcc` compiler, e.g. 31 | ``` 32 | CC = gcc-11 33 | ``` 34 | since `gcc` seems to be linked to `clang`. 35 | 36 | If you want to generate a distribution 37 | ====================================== 38 | Run `make dist`. 39 | 40 | If you want to generate a static binary 41 | ======================================= 42 | Add `-all-static` to your LDFLAGS as follows `make LDFLAGS="-all-static"`. 43 | -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | autoreconf -fiv 3 | -------------------------------------------------------------------------------- /doc/examples/elim2_char1073741827.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -e 2 -g 2 -f elim_char1073741827.ms -o elim2_char1073741827.res 4 | -------------------------------------------------------------------------------- /doc/examples/elim_char1073741827.ms: -------------------------------------------------------------------------------- 1 | t, w, x, y, z 2 | 1073741827 3 | w^4, 4 | x^4, 5 | w*y^3+1073741826*x*z^3, 6 | t*z+1073741826 7 | -------------------------------------------------------------------------------- /doc/examples/elim_char1073741827.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -e 1 -g 2 -f elim_char1073741827.ms -o elim_char1073741827.res 4 | -------------------------------------------------------------------------------- /doc/examples/empty_char0.ms: -------------------------------------------------------------------------------- 1 | x, y 2 | 0 3 | x*y-1, 4 | x -------------------------------------------------------------------------------- /doc/examples/empty_char0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -f empty_char0.ms -o empty_char0.res 4 | -------------------------------------------------------------------------------- /doc/examples/grevlex_char1073741827.ms: -------------------------------------------------------------------------------- 1 | z1, z2, z3 2 | 1073741827 3 | 7*z1*z2+5*z2*z3+z3^2+z1+5*z3+10, 4 | 7*z3^2-27*z1^2-15*z2^2+59*z3+3*z1, 5 | 8*z1^2+13*z1*z3+10*z3^2+z2+z1 -------------------------------------------------------------------------------- /doc/examples/grevlex_char1073741827.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -g 2 -f grevlex_char1073741827.ms -o grevlex_char1073741827.res 4 | -------------------------------------------------------------------------------- /doc/examples/grevlex_lm_char1073741827.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -g 1 -f grevlex_char1073741827.ms -o grevlex_lm_char1073741827.res 4 | -------------------------------------------------------------------------------- /doc/examples/hypersurface_char0.ms: -------------------------------------------------------------------------------- 1 | x, y, z 2 | 0 3 | x^2-y^2, 4 | x-y -------------------------------------------------------------------------------- /doc/examples/hypersurface_char0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -f hypersurface_char0.ms -o hypersurface_char0.res 4 | -------------------------------------------------------------------------------- /doc/examples/param_and_reals_char0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -P 1 -f param_char0.ms -o param_and_reals_char0.res 4 | -------------------------------------------------------------------------------- /doc/examples/param_char0.ms: -------------------------------------------------------------------------------- 1 | z1, z2, z3 2 | 0 3 | z1^2-z2^2+z3^2-4, 4 | z1*z2+2*z2*z3-3*z3*z1-1, 5 | z1+2*z2+3*z3-1 6 | -------------------------------------------------------------------------------- /doc/examples/param_char0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -P 2 -f param_char0.ms -o param_char0.res 4 | -------------------------------------------------------------------------------- /doc/examples/param_char65521.ms: -------------------------------------------------------------------------------- 1 | z1, z2, z3 2 | 65521 3 | z1^2-z2^2+z3^2-4, 4 | z1*z2+2*z2*z3-3*z3*z1-1, 5 | z1+2*z2+3*z3-1 6 | -------------------------------------------------------------------------------- /doc/examples/param_char65521.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -P 2 -f param_char65521.ms -o param_char65521.res 4 | -------------------------------------------------------------------------------- /doc/examples/param_simple.ms: -------------------------------------------------------------------------------- 1 | z1, z2 2 | 0 3 | z1^2+z2^2-1, 4 | z1^2-z2^2 5 | -------------------------------------------------------------------------------- /doc/examples/param_simple.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -P 2 -f param_simple.ms -o param_simple.res 4 | -------------------------------------------------------------------------------- /doc/examples/reals_dim0.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 0 3 | x+2*y+2*z-1, 4 | x^2+2*y^2+2*z^2-x, 5 | 2*x*y+2*y*z-y -------------------------------------------------------------------------------- /doc/examples/reals_dim0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -f reals_dim0.ms -o reals_dim0.res 4 | -------------------------------------------------------------------------------- /doc/examples/reals_dim0_prec256.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -p 256 -f reals_dim0.ms -o reals_dim0_prec256.res 4 | -------------------------------------------------------------------------------- /doc/examples/saturate_char1073741827.ms: -------------------------------------------------------------------------------- 1 | w, x, y, z 2 | 1073741827 3 | w^4, 4 | x^4, 5 | 1073741826*x*z^3+w*y^3, 6 | z 7 | -------------------------------------------------------------------------------- /doc/examples/saturate_char1073741827.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -S -g 2 -f saturate_char1073741827.ms -o saturate_char1073741827.res 4 | -------------------------------------------------------------------------------- /doc/examples/simple_char0.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 0 3 | x+2*y+2*z-1, 4 | x^2+2*y^2+2*z^2-x, 5 | 2*x*y+2*y*z-y -------------------------------------------------------------------------------- /doc/examples/simple_char0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -f simple_char0.ms -o simple_char0.res 4 | -------------------------------------------------------------------------------- /doc/examples/simple_char65521.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 65521 3 | x+2*y+2*z-1, 4 | x^2+2*y^2+2*z^2-x, 5 | 2*x*y+2*y*z-y -------------------------------------------------------------------------------- /doc/examples/simple_char65521.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../../msolve -f simple_char65521.ms -o simple_char65521.res 4 | -------------------------------------------------------------------------------- /doc/macros.tex: -------------------------------------------------------------------------------- 1 | \def\e{{\bm{e}}} 2 | \def\s{{\bm{s}}} 3 | \def\x{{\bm{x}}} 4 | \def\y{{\bm{y}}} 5 | \def\z{{\bm{z}}} 6 | 7 | \def\X{{\bm{X}}} 8 | \def\Y{{\bm{Y}}} 9 | 10 | \def\Z{\mathbb{Z}} 11 | \def\K{\mathbb{K}} 12 | \def\N{\mathbb{N}} 13 | \def\P{\mathbb{P}} 14 | \def\Q{\mathbb{Q}} 15 | \def\R{\mathbb{R}} 16 | \def\C{\mathbb{C}} 17 | \def\A{\mathbb{A}} 18 | 19 | \def\bbF{{\mathbb{F}}} 20 | \def\F{{\bm{F}}} 21 | \def\f{{\bm{f}}} 22 | \def\g{{\bm{g}}} 23 | 24 | 25 | \def\balpha{\bm{\alpha}} 26 | 27 | \def\jac{{\mathrm{jac}}} 28 | \newcommand{\se}{\mathrm{SE}(3)} 29 | \newcommand{\confg}{\mathcal{C}} 30 | \newcommand{\pl}{\mathrm{Pl}} 31 | \newcommand{\bs}{\backslash} 32 | 33 | \def\alert#1{{\textcolor{red}{#1}}} 34 | 35 | \def\hlight#1{\textcolor{Blue}{{#1}}} 36 | \def\alert#1{\textcolor{red}{({\bf todo: #1})}} 37 | \def\anrinput#1{}%{\textcolor{red}{{#1}}} 38 | %\def\anrinput#1{\textcolor{red}{{#1}}} 39 | \def\paris#1{\textcolor{Olive}{#1}} 40 | \def\ls2n#1{\textcolor{DarkGreen}{#1}} 41 | \def\jku#1{\textcolor{magenta}{#1}} 42 | %\def\irobot#1{\textcolor{Violet}{#1}} 43 | \def\mohab#1{\textcolor{Brown}{#1}} 44 | 45 | \def\ACRONYM{\color{darkgoldenrod}{\texttt{msolve} -- A library for solving multivariate polynomial systems}} 46 | \def\msolve{{\textsc{msolve}}\xspace} 47 | 48 | 49 | \newcommand\msolveinput[1]{\begin{tcolorbox}\verbatiminput{#1}\end{tcolorbox}} 50 | 51 | %%% Local Variables: 52 | %%% mode: latex 53 | %%% TeX-master: "msolve-tutorial" 54 | %%% End: 55 | -------------------------------------------------------------------------------- /input_files/F4SAT-31.ms: -------------------------------------------------------------------------------- 1 | w, x, y, z 2 | 1073741827 3 | w^4, 4 | x^4, 5 | w*y^3-x*z^3, 6 | z 7 | -------------------------------------------------------------------------------- /input_files/F4SAT-byone-31.ms: -------------------------------------------------------------------------------- 1 | w, x, y, z 2 | 1073741827 3 | w^4, 4 | x^4, 5 | w*y^3-x*z^3, 6 | 1 7 | -------------------------------------------------------------------------------- /input_files/bug_68.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 257 3 | 0, 4 | x*x+y*y+z*z, 5 | x+y+z, 6 | x+y*z 7 | -------------------------------------------------------------------------------- /input_files/cyclic5-16.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5 2 | 65521 3 | x1+x2+x3+x4+x5, 4 | x1*x2+x1*x5+x2*x3+x3*x4+x4*x5, 5 | x1*x2*x3+x1*x2*x5+x1*x4*x5+x2*x3*x4+x3*x4*x5, 6 | x1*x2*x3*x4+x1*x2*x3*x5+x1*x2*x4*x5+x1*x3*x4*x5+x2*x3*x4*x5, 7 | x1*x2*x3*x4*x5-1 8 | -------------------------------------------------------------------------------- /input_files/cyclic5-31.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5 2 | 1073741827 3 | x1+x2+x3+x4+x5, 4 | x1*x2+x1*x5+x2*x3+x3*x4+x4*x5, 5 | x1*x2*x3+x1*x2*x5+x1*x4*x5+x2*x3*x4+x3*x4*x5, 6 | x1*x2*x3*x4+x1*x2*x3*x5+x1*x2*x4*x5+x1*x3*x4*x5+x2*x3*x4*x5, 7 | x1*x2*x3*x4*x5-1 8 | -------------------------------------------------------------------------------- /input_files/cyclic5-qq.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5 2 | 0 3 | x1+x2+x3+x4+x5, 4 | x1*x2+x1*x5+x2*x3+x3*x4+x4*x5, 5 | x1*x2*x3+x1*x2*x5+x1*x4*x5+x2*x3*x4+x3*x4*x5, 6 | x1*x2*x3*x4+x1*x2*x3*x5+x1*x2*x4*x5+x1*x3*x4*x5+x2*x3*x4*x5, 7 | x1*x2*x3*x4*x5-1 8 | -------------------------------------------------------------------------------- /input_files/eco10-31.ms: -------------------------------------------------------------------------------- 1 | x0,x1,x2,x3,x4,x5,x6,x7,x8,x9 2 | 1073741827 3 | x0*x1*x9+x1*x2*x9+x2*x3*x9+x3*x4*x9+x4*x5*x9+x5*x6*x9+x6*x7*x9+x7*x8*x9+x0*x9-1, 4 | x0*x2*x9+x1*x3*x9+x2*x4*x9+x3*x5*x9+x4*x6*x9+x5*x7*x9+x6*x8*x9+x1*x9-2, 5 | x0*x3*x9+x1*x4*x9+x2*x5*x9+x3*x6*x9+x4*x7*x9+x5*x8*x9+x2*x9-3, 6 | x0*x4*x9+x1*x5*x9+x2*x6*x9+x3*x7*x9+x4*x8*x9+x3*x9-4, 7 | x0*x5*x9+x1*x6*x9+x2*x7*x9+x3*x8*x9+x4*x9-5, 8 | x0*x6*x9+x1*x7*x9+x2*x8*x9+x5*x9-6, 9 | x0*x7*x9+x1*x8*x9+x6*x9-7, 10 | x0*x8*x9+x7*x9-8, 11 | x8*x9-9, 12 | x0+x1+x2+x3+x4+x5+x6+x7+x8+1 13 | -------------------------------------------------------------------------------- /input_files/eco11-31.ms: -------------------------------------------------------------------------------- 1 | x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 2 | 1073741827 3 | x0*x1*x10+x1*x2*x10+x2*x3*x10+x3*x4*x10+x4*x5*x10+x5*x6*x10+x6*x7*x10+x7*x8*x10+x8*x9*x10+x0*x10-1, 4 | x0*x2*x10+x1*x3*x10+x2*x4*x10+x3*x5*x10+x4*x6*x10+x5*x7*x10+x6*x8*x10+x7*x9*x10+x1*x10-2, 5 | x0*x3*x10+x1*x4*x10+x2*x5*x10+x3*x6*x10+x4*x7*x10+x5*x8*x10+x6*x9*x10+x2*x10-3, 6 | x0*x4*x10+x1*x5*x10+x2*x6*x10+x3*x7*x10+x4*x8*x10+x5*x9*x10+x3*x10-4, 7 | x0*x5*x10+x1*x6*x10+x2*x7*x10+x3*x8*x10+x4*x9*x10+x4*x10-5, 8 | x0*x6*x10+x1*x7*x10+x2*x8*x10+x3*x9*x10+x5*x10-6, 9 | x0*x7*x10+x1*x8*x10+x2*x9*x10+x6*x10-7, 10 | x0*x8*x10+x1*x9*x10+x7*x10-8, 11 | x0*x9*x10+x8*x10-9, 12 | x9*x10-10, 13 | x0+x1+x2+x3+x4+x5+x6+x7+x8+x9+1 14 | -------------------------------------------------------------------------------- /input_files/eco6-16.ms: -------------------------------------------------------------------------------- 1 | x0,x1,x2,x3,x4,x5 2 | 65521 3 | x0*x1*x5+x1*x2*x5+x2*x3*x5+x3*x4*x5+x0*x5-1, 4 | x0*x2*x5+x1*x3*x5+x2*x4*x5+x1*x5-2, 5 | x0*x3*x5+x1*x4*x5+x2*x5-3, 6 | x0*x4*x5+x3*x5-4, 7 | x4*x5-5, 8 | x0+x1+x2+x3+x4+1 9 | -------------------------------------------------------------------------------- /input_files/eco6-31.ms: -------------------------------------------------------------------------------- 1 | x0,x1,x2,x3,x4,x5 2 | 1073741827 3 | x0*x1*x5+x1*x2*x5+x2*x3*x5+x3*x4*x5+x0*x5-1, 4 | x0*x2*x5+x1*x3*x5+x2*x4*x5+x1*x5-2, 5 | x0*x3*x5+x1*x4*x5+x2*x5-3, 6 | x0*x4*x5+x3*x5-4, 7 | x4*x5-5, 8 | x0+x1+x2+x3+x4+1 9 | -------------------------------------------------------------------------------- /input_files/eco6-qq.ms: -------------------------------------------------------------------------------- 1 | x0,x1,x2,x3,x4,x5 2 | 0 3 | x0*x1*x5+x1*x2*x5+x2*x3*x5+x3*x4*x5+x0*x5-1, 4 | x0*x2*x5+x1*x3*x5+x2*x4*x5+x1*x5-2, 5 | x0*x3*x5+x1*x4*x5+x2*x5-3, 6 | x0*x4*x5+x3*x5-4, 7 | x4*x5-5, 8 | x0+x1+x2+x3+x4+1 9 | -------------------------------------------------------------------------------- /input_files/elim-31.ms: -------------------------------------------------------------------------------- 1 | t, w, x, y, z 2 | 1073741827 3 | w^4, 4 | x^4, 5 | w*y^3-x*z^3, 6 | t*z-1 7 | -------------------------------------------------------------------------------- /input_files/elim-qq.ms: -------------------------------------------------------------------------------- 1 | t, w, x, y, z 2 | 0 3 | w^4, 4 | x^4, 5 | w*y^3-x*z^3, 6 | t*z-1 7 | -------------------------------------------------------------------------------- /input_files/f4sat-field-char.ms: -------------------------------------------------------------------------------- 1 | x, y 2 | 1073741831 3 | 2*x+3*y, 4 | x 5 | -------------------------------------------------------------------------------- /input_files/f4sat-zero-input.ms: -------------------------------------------------------------------------------- 1 | x, y 2 | 1073741831 3 | 2*x+3*y, 4 | 0 5 | -------------------------------------------------------------------------------- /input_files/henrion5-qq.ms: -------------------------------------------------------------------------------- 1 | f1,f2,f3,f4,f5 2 | 0 3 | 2*f1*f2*f3*f4*f5-9823275, 4 | 21/5*f1*f2*f4*f5+16/5*f1*f3*f4*f5+9/5*f2*f3*f4*f5+24/5*f1*f2*f3*f5+5*f4*f3*f1*f2-4465125, 5 | 14/5*f4*f5*f1+14/5*f4*f5*f2+8/5*f3*f4*f5+18/5*f1*f2*f5+24/5*f1*f3*f5+18/5*f2*f3*f5+4*f3*f1*f2+6*f1*f2*f4+6*f3*f4*f1+4*f2*f3*f4-441486, 6 | 7/5*f4*f5+12/5*f5*f1+12/5*f5*f2+12/5*f5*f3+3*f1*f2+4*f3*f1+4*f4*f1+3*f2*f3+4*f4*f2+3*f3*f4-15498, 7 | 6/5*f5+2*f4+2*f3+2*f2+2*f1-215 8 | -------------------------------------------------------------------------------- /input_files/input-overflow-16.ms: -------------------------------------------------------------------------------- 1 | y,x 2 | 65519 3 | x^2+128333*x*y-12*y, 4 | y^2-x 5 | -------------------------------------------------------------------------------- /input_files/kat6-31.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5,x6 2 | 1073741827 3 | x1+2*x2+2*x3+2*x4+2*x5+2*x6-1, 4 | x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2+2*x6^2-x1, 5 | 2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5+2*x5*x6-x2, 6 | x2^2+2*x1*x3+2*x2*x4+2*x3*x5+2*x4*x6-x3, 7 | 2*x2*x3+2*x1*x4+2*x2*x5+2*x3*x6-x4, 8 | x3^2+2*x2*x4+2*x1*x5+2*x2*x6-x5 9 | -------------------------------------------------------------------------------- /input_files/kat7-qq.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5,x6,x7 2 | 0 3 | x1+2*x2+2*x3+2*x4+2*x5+2*x6+2*x7-1, 4 | x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2+2*x6^2+2*x7^2-x1, 5 | 2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5+2*x5*x6+2*x6*x7-x2, 6 | x2^2+2*x1*x3+2*x2*x4+2*x3*x5+2*x4*x6+2*x5*x7-x3, 7 | 2*x2*x3+2*x1*x4+2*x2*x5+2*x3*x6+2*x4*x7-x4, 8 | x3^2+2*x2*x4+2*x1*x5+2*x2*x6+2*x3*x7-x5, 9 | 2*x3*x4+2*x2*x5+2*x1*x6+2*x2*x7-x6 10 | -------------------------------------------------------------------------------- /input_files/kat8-qq-truncate.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5,x6,x7,x8 2 | 0 3 | x1+2*x2+2*x3+2*x4+2*x5+2*x6+2*x7+2*x8-1, 4 | x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2+2*x6^2+2*x7^2+2*x8^2-x1, 5 | 2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5+2*x5*x6+2*x6*x7+2*x7*x8-x2, 6 | x2^2+2*x1*x3+2*x2*x4+2*x3*x5+2*x4*x6+2*x5*x7+2*x6*x8-x3, 7 | 2*x2*x3+2*x1*x4+2*x2*x5+2*x3*x6+2*x4*x7+2*x5*x8-x4, 8 | x3^2+2*x2*x4+2*x1*x5+2*x2*x6+2*x3*x7+2*x4*x8-x5, 9 | 2*x3*x4+2*x2*x5+2*x1*x6+2*x2*x7+2*x3*x8-x6, 10 | x4^2+2*x3*x5+2*x2*x6+2*x1*x7+2*x2*x8-x7 11 | -------------------------------------------------------------------------------- /input_files/line_endings/in1_dos.ms: -------------------------------------------------------------------------------- 1 | x0, x1, x2, x3 2 | 0 3 | x0^2+x2^2-1, 4 | x1^2+x3^2-1, 5 | x0*x1+x2*x3, 6 | x0*x3+x1*x2-1 7 | -------------------------------------------------------------------------------- /input_files/line_endings/in1_unix.ms: -------------------------------------------------------------------------------- 1 | x0, x1, x2, x3 2 | 0 3 | x0^2+x2^2-1, 4 | x1^2+x3^2-1, 5 | x0*x1+x2*x3, 6 | x0*x3+x1*x2-1 7 | -------------------------------------------------------------------------------- /input_files/line_endings/in2_dos_noeol.ms: -------------------------------------------------------------------------------- 1 | x0, x1, x2, x3 2 | 0 3 | -1+x0^2+x2^2, 4 | -1+x1^2+x3^2, 5 | x0*x1+x2*x3, 6 | -1+x0*x3+x1*x2 -------------------------------------------------------------------------------- /input_files/line_endings/in2_unix.ms: -------------------------------------------------------------------------------- 1 | x0, x1, x2, x3 2 | 0 3 | -1+x0^2+x2^2, 4 | -1+x1^2+x3^2, 5 | x0*x1+x2*x3, 6 | -1+x0*x3+x1*x2 7 | -------------------------------------------------------------------------------- /input_files/line_endings/in3_dos.ms: -------------------------------------------------------------------------------- 1 | x0, x2, x1, x3 2 | 0 3 | -1+x0^2+x2^2, 4 | -1+x1^2+x3^2, 5 | x0*x1+x2*x3, 6 | -1+x0*x3+x1*x2 -------------------------------------------------------------------------------- /input_files/line_endings/in3_unix.ms: -------------------------------------------------------------------------------- 1 | x0, x2, x1, x3 2 | 0 3 | -1+x0^2+x2^2, 4 | -1+x1^2+x3^2, 5 | x0*x1+x2*x3, 6 | -1+x0*x3+x1*x2 7 | -------------------------------------------------------------------------------- /input_files/line_endings/in4_dos.ms: -------------------------------------------------------------------------------- 1 | x1,x2 2 | 0 3 | x1^2-x1, 4 | x2^2-x2 5 | -------------------------------------------------------------------------------- /input_files/line_endings/in4_unix.ms: -------------------------------------------------------------------------------- 1 | x1,x2 2 | 0 3 | x1^2-x1, 4 | x2^2-x2 5 | -------------------------------------------------------------------------------- /input_files/linear-qq.ms: -------------------------------------------------------------------------------- 1 | x1,x2 2 | 0 3 | x1+1267650600228229401496703205376, 4 | x2+1267650600228229401496703205376 5 | -------------------------------------------------------------------------------- /input_files/maxbitsize-bug.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5 2 | 0 3 | x1^3*x3-x1^3, 4 | x1^4, 5 | x1^2*x2*x4-x1^2*x2, 6 | x2^2, 7 | x4^3-1 8 | -------------------------------------------------------------------------------- /input_files/mq_2_1.ms: -------------------------------------------------------------------------------- 1 | x 2 | 251 3 | -68*x^2+34*x-107, 4 | 104*x^2+122*x+72 5 | -------------------------------------------------------------------------------- /input_files/multy-16.ms: -------------------------------------------------------------------------------- 1 | x,y 2 | 65521 3 | x-y^2, 4 | y^3-y 5 | -------------------------------------------------------------------------------- /input_files/multy-31.ms: -------------------------------------------------------------------------------- 1 | x,y 2 | 1073741827 3 | x-y^2, 4 | y^3-y 5 | -------------------------------------------------------------------------------- /input_files/multy-qq.ms: -------------------------------------------------------------------------------- 1 | x,y 2 | 0 3 | x-y^2, 4 | y^3-y 5 | -------------------------------------------------------------------------------- /input_files/nf-16.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5 2 | 65521 3 | x1+2*x2+2*x3+2*x4+2*x5-1, 4 | x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2-x1, 5 | 2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5-x2, 6 | x2^2+2*x1*x3+2*x2*x4+2*x3*x5-x3, 7 | 2*x2*x3+2*x1*x4+2*x2*x5-x4 8 | -------------------------------------------------------------------------------- /input_files/nf-31.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5 2 | 1073741827 3 | x1+2*x2+2*x3+2*x4+2*x5-1, 4 | x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2-x1, 5 | 2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5-x2, 6 | x2^2+2*x1*x3+2*x2*x4+2*x3*x5-x3, 7 | 2*x2*x3+2*x1*x4+2*x2*x5-x4 8 | -------------------------------------------------------------------------------- /input_files/nf-8.ms: -------------------------------------------------------------------------------- 1 | x1,x2,x3,x4,x5 2 | 101 3 | x1+2*x2+2*x3+2*x4+2*x5-1, 4 | x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2-x1, 5 | 2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5-x2, 6 | x2^2+2*x1*x3+2*x2*x4+2*x3*x5-x3, 7 | 2*x2*x3+2*x1*x4+2*x2*x5-x4 8 | -------------------------------------------------------------------------------- /input_files/nf-lm-bug.ms: -------------------------------------------------------------------------------- 1 | a,b,c 2 | 101 3 | -1+c+b, 4 | -1+b+c*a+2*a*b, 5 | -1+c+b+a^3, 6 | -1+b+c*a+2*a^3, 7 | 5+c*b+c^2*a 8 | -------------------------------------------------------------------------------- /input_files/nonradical_radicalshape-31.ms: -------------------------------------------------------------------------------- 1 | x, y 2 | 1073741827 3 | 20958084*x^2+7224084*x*y+622521*y^2, 4 | 6651834*x^2+5619123*x*y+770853*y^2, 5 | 2111209*x^2+2839162*x*y+954529*y^2 6 | -------------------------------------------------------------------------------- /input_files/nonradical_radicalshape-no-square-31.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 1073741827 3 | 5184*x^2+5328*x*y-3312*x*z+1369*y^2-1702*y*z+529*z^2+12528*x+6438*y-4002*z+7569, 4 | 1936*x^2+2552*x*y+8624*x*z+841*y^2+5684*y*z+9604*z^2-2024*x-1334*y-4508*z+529, 5 | 100*x^2-1220*x*y-160*x*z+3721*y^2+976*y*z+64*z^2-580*x+3538*y+464*z+841 6 | -------------------------------------------------------------------------------- /input_files/nonradical_radicalshape-no-square-qq.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 0 3 | 5184*x^2+5328*x*y-3312*x*z+1369*y^2-1702*y*z+529*z^2+12528*x+6438*y-4002*z+7569, 4 | 1936*x^2+2552*x*y+8624*x*z+841*y^2+5684*y*z+9604*z^2-2024*x-1334*y-4508*z+529, 5 | 100*x^2-1220*x*y-160*x*z+3721*y^2+976*y*z+64*z^2-580*x+3538*y+464*z+841 6 | -------------------------------------------------------------------------------- /input_files/nonradical_radicalshape-qq.ms: -------------------------------------------------------------------------------- 1 | x, y 2 | 0 3 | y^4-2*y^2+1, 4 | x*y^2+3*y^3-2*x*y-6*y^2+x+3*y, 5 | 9*y^3+x^2-6*x*y-9*y^2+9*y 6 | -------------------------------------------------------------------------------- /input_files/nonradical_shape-31.ms: -------------------------------------------------------------------------------- 1 | x1, x2, x3, x4 2 | 1073741831 3 | 570511439*x4^11+353378708*x4^10+599390609*x4^9+1049120212*x4^8+826752179*x4^7+19533939*x4^6+45047444*x4^5+448227342*x4^4+74356583*x4^3+17844919*x4^2+627145600*x4+372416000, 4 | 735241234*x4^10+884961191*x4^9+136721026*x4^8+198304612*x4^7+640439652*x4^6+417177801*x4^5+836782561*x4^4+537655879*x4^3+147944788*x4^2+x1+702680360*x4+540721923, 5 | 904966252*x4^10+698412071*x4^9+618307600*x4^8+511091141*x4^7+316773880*x4^6+366222184*x4^5+961264978*x4^4+76338300*x4^3+25585315*x4^2+x2+855028007*x4+347706282, 6 | 290319951*x4^10+366206486*x4^9+405889704*x4^8+213561267*x4^7+999862911*x4^6+838518850*x4^5+772320120*x4^4+264387201*x4^3+893645500*x4^2+2*x3+291291731*x4+117559519 7 | -------------------------------------------------------------------------------- /input_files/nonradical_shape-qq.ms: -------------------------------------------------------------------------------- 1 | x1, x2, x3, x4 2 | 0 3 | x4^18+48/5*x4^17+984/25*x4^16+12082/125*x4^15+99576/625*x4^14+104832/625*x4^13+55671/625*x4^12-6336/125*x4^11-88416/625*x4^10-83284/625*x4^9-22848/625*x4^8+23136/625*x4^7+7091/125*x4^6+13104/625*x4^5-1944/625*x4^4-7398/625*x4^3-1944/625*x4^2+729/625, 4 | 97*x4^17-73*x4^16-4*x4^15-83*x4^14-10*x4^13+62*x4^12-82*x4^11+80*x4^10-44*x4^9+71*x4^8-17*x4^7-75*x4^6-10*x4^5-7*x4^4-40*x4^3+42*x4^2+1451*x3-50*x4+23, 5 | 75*x4^17-92*x4^16+6*x4^15+74*x4^14+72*x4^13+37*x4^12-23*x4^11+87*x4^10+44*x4^9+29*x4^8+98*x4^7-23*x4^6+10*x4^5-61*x4^4-8*x4^3-29*x4^2+95*x4+4784*x2+11, 6 | -49*x4^17-47*x4^16+40*x4^15-81*x4^14+91*x4^13+68*x4^12-10*x4^11+31*x4^10-51*x4^9+77*x4^8+95*x4^7+x4^6+x4^5+55*x4^4-28*x4^3+16*x4^2+30*x4+4784*x1-27 7 | -------------------------------------------------------------------------------- /input_files/one-16.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 65521 3 | -62*x^2+97*y^2-73*y*z-56*y+87, 4 | -44*x*y+71*x*z-17*y*z+62*x-82*y+80*z, 5 | 37*x^2-23*x*y+87*x*z+74*y+72*z+6, 6 | -47*x^2+40*y^2-81*y*z+91*z^2+11*x-49*z 7 | -------------------------------------------------------------------------------- /input_files/one-31.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 1073741827 3 | -62*x^2+97*y^2-73*y*z-56*y+87, 4 | -44*x*y+71*x*z-17*y*z+62*x-82*y+80*z, 5 | 37*x^2-23*x*y+87*x*z+74*y+72*z+6, 6 | -47*x^2+40*y^2-81*y*z+91*z^2+11*x-49*z 7 | -------------------------------------------------------------------------------- /input_files/one-qq.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 0 3 | -62*x^2+97*y^2-73*y*z-56*y+87, 4 | -44*x*y+71*x*z-17*y*z+62*x-82*y+80*z, 5 | 37*x^2-23*x*y+87*x*z+74*y+72*z+6, 6 | -47*x^2+40*y^2-81*y*z+91*z^2+11*x-49*z 7 | -------------------------------------------------------------------------------- /input_files/radical_shape-31.ms: -------------------------------------------------------------------------------- 1 | x, y, z 2 | 1073741827 3 | 1073741825*z^3+1073741824*z^2+x+1073741822*z+1073741820, 4 | 1073741826*z^3+z^2+y+1073741826*z+1, 5 | z^4+1073741826*z^3+1073741826*z^2+1073741826*z+1073741826 6 | -------------------------------------------------------------------------------- /input_files/radical_shape-qq.ms: -------------------------------------------------------------------------------- 1 | x, y, z 2 | 0 3 | -2*z^3-3*z^2+x-5*z-7, 4 | -z^3+z^2+y-z+1, 5 | z^4-z^3-z^2-*z-1 6 | -------------------------------------------------------------------------------- /input_files/realroot-extraction-exact-root.ms: -------------------------------------------------------------------------------- 1 | x,y 2 | 0 3 | x^2 - 140*x*y - y^3 + 4900*y^2, 4 | 1427247692705959881058285969449495136382746624*y-1 5 | 6 | -------------------------------------------------------------------------------- /input_files/realroot1.ms: -------------------------------------------------------------------------------- 1 | z1, z2, z3, z4 2 | 0 3 | -4*z2^2*z4+95*z3*z4^2-79*z4^3-63*z2^2-95*z4^2+88*z4-1142, 4 | -42*z2^3+63*z2*z4^2-50*z4^3-14*z2^2-58*z4^2-29*z2-3711, 5 | -32*z2^3-98*z2^2*z3-89*z2*z3^2+24*z2*z4^2-96*z2-75*z3-3814, 6 | -429049853758163107186368799942587076079339706258956588087153966199096448962353503257659977541340909686081019461967553627320124249982290238285876768194691072*z2^3-1313965177134374515758254449824172920492977850418054551016909021484732874947207603726583681220356535913623122102275632983667880515570763854750497602596241408*z2^2*z3-1193294905764891141862088224840320305345663558032723010617396968491236998676545680935366812536854405064412835378597258525984095570263244725232594761541484544*z2*z3^2+321787390318622330389776599956940307059504779694217441065365474649322336721765127443244983156005682264560764596475665220490093187486717678714407576146018304*z2*z4^2-13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096*z1-1287149561274489321559106399827761228238019118776869764261461898597289346887060509772979932624022729058243058385902660881960372749946870714857630304584073216*z2-1005585594745694782468051874865438459560952436544429503329267108279132302255516023260140572362517757076752389363986453814031541210895992745982523675456307200*z3-51137379444801065337775331343157097130206301239739388342637663346354808010700508169522348573208569673209781507123257797956217309044764217775697937309204742143 7 | -------------------------------------------------------------------------------- /input_files/reals_dim0-chgvar.ms: -------------------------------------------------------------------------------- 1 | x1, x2, x3, x4 2 | 0 3 | -82*x3^3+37*x1*x4^2-96*x2*x4^2-8*x3^2-18*x1*x4+24*x4+49, 4 | 94*x1*x2^2+5*x2^2*x3+65*x2*x3*x4-16*x2*x4-11*x3*x4-72*x3-46, 5 | -47*x1*x2^2-28*x1^2*x3+34*x3^3-4*x3^2*x4+77*x1^2-60*x4^2+30, 6 | -33*x1*x2*x3-51*x1^2*x4+81*x2*x3*x4-27*x1^2+11*x2*x3+72*x3*x4+38 7 | -------------------------------------------------------------------------------- /input_files/reals_dim0-extract.ms: -------------------------------------------------------------------------------- 1 | x2, x3, x4 2 | 0 3 | 44*x2+89*x3+68*x4-399618188733716626755, 4 | 3541593292951995450990310372960*x3*x4^2+1945129239286751919414305247933037053312*x4^3+3934465960412942563221192837274463643877*x3^2-6160384484930804102826761583954813432864*x3*x4-14762938525851362040635945282536216653225156172528*x4^2-17666114162036664830285741944402853632429598662969829575790*x3+32424589106336347293933964960245539105941703052309739807584*x4-20927023795060259240401449899122357771276530794982866322399620183619, 5 | 885398323237998862747577593240*x3^2*x4-371541540088480703708350440616422807936*x4^3+1124617427400488171147647847820165445509*x3^2-3975519936251969185573941899244038227535359168728*x3*x4+854461547485243485091044709341730710308917715344*x4^2-5049635722096270294004840036858123777397405290362075411390*x3+4558815958060872500465546554808567124687618955848218381488*x4-5981725576062516117963907776340935076861123347164376399984701081203, 6 | 1216575129605833071064193540279629438242146963993362985294582671957885980422454881835547115520*x4^4-4480500074571222313461555550712328368478449324345890778229459806572786794031983323350*x3^3-5372173954435183355088559628849345823155944031307709946071853400935489844311854146212545484772651069824*x4^3+22713740521808162164164180829866365958885583624671058550325299785238915119989762815716533374386433218081*x3^2-9489540297202917593677549708586512211517715743137735970905260369269382833871244373867826060613624806672*x3*x4-3563398928159630847623779222986927849787492959782077342771003089845964248341475319116250198783932511984444965104*x4^2-11655753253219351337720027224622864114870131373108685141705703481733099567481843693026714651122073866543186374503677319940*x3+21393103651766611559095232296713879192326027965132012305652410479982360923795463524953347611948214651100282124375207293232*x4-13807237060788378542558162238655020068560522341195360845715840601185210051406775057881320256432349651588185157915974174346980800267, 7 | 2355716318826789088133648105529234624559076850806531776682055778067694294626606068157110687538211998908287040*x3^4-21154766027597930471377985068881332385907613229037238142385845656049100703749601452133252571427174055073119676303738096046457270*x3^3+5693822871463639181738363427864105154276053853135459997012363302951175976834964701245703391123217290835514705731560224652357270570751616*x4^3+47493422882526153952229605915906163768870143110401084649433436484971000346929405906617908893060067216428804267324311359227071610195121667304273281*x3^2+29052374790540607257545484155858879075243694508505348720831034973286577963836991006969926120424764470459282759894196721851917150431515248*x3*x4-119113119110180707186956342406300503521825138293780371590482893174678212683385897632485036593318360621562939134936094969092408901424478069625584*x4^2+189259162591860961639132830552894016037545162132363887076626104804918344668448901817491345405101816996231360871573576737430233749712133464915400862905202780*x3-140847856610967984418935201431274546929773957976597013105952773638398095845813724050068279605696677829816073315808746734913188934775649098348920318887478608*x4+157548860512296762335337030624565599318584348749022914263956180460928503551381043646998661863636457765077563948485097142138116423690425291173851514232817535769030613 8 | -------------------------------------------------------------------------------- /input_files/reals_dim0-swapvar.ms: -------------------------------------------------------------------------------- 1 | x, y, z 2 | 0 3 | x-1, 4 | y^2-4, 5 | z-3 6 | -------------------------------------------------------------------------------- /input_files/reals_dim0.ms: -------------------------------------------------------------------------------- 1 | x,y,z 2 | 0 3 | x+2*y+2*z-1, 4 | x^2+2*y^2+2*z^2-x, 5 | 2*x*y+2*y*z-y 6 | -------------------------------------------------------------------------------- /input_files/xy-qq.ms: -------------------------------------------------------------------------------- 1 | x,y 2 | 0 3 | x, 4 | y 5 | -------------------------------------------------------------------------------- /interfaces/msolve-to-julia-file-interface.txt: -------------------------------------------------------------------------------- 1 | msolve and its functionality is available in Julia via the package 2 | AlgebraicSolving.jl. Running your Julia REPL apply the following steps: 3 | 4 | using Pkg 5 | 6 | Pkg.add("AlgebraicSolving") # for stable version 7 | or 8 | Pkg.develop("AlgebraicSolving") # for developer version 9 | 10 | Moreover, msolve functionality is available via the Computer 11 | Algebra System OSCAR in Julia. Running your Julia REPL apply 12 | the following steps: 13 | 14 | using Pkg 15 | 16 | Pkg.add("Oscar") # for stable version 17 | or 18 | Pkg.develop("Oscar") # for developer version 19 | -------------------------------------------------------------------------------- /m4/ax_check_compile_flag.m4: -------------------------------------------------------------------------------- 1 | # =========================================================================== 2 | # https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html 3 | # =========================================================================== 4 | # 5 | # SYNOPSIS 6 | # 7 | # AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) 8 | # 9 | # DESCRIPTION 10 | # 11 | # Check whether the given FLAG works with the current language's compiler 12 | # or gives an error. (Warnings, however, are ignored) 13 | # 14 | # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on 15 | # success/failure. 16 | # 17 | # If EXTRA-FLAGS is defined, it is added to the current language's default 18 | # flags (e.g. CFLAGS) when the check is done. The check is thus made with 19 | # the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to 20 | # force the compiler to issue an error when a bad flag is given. 21 | # 22 | # INPUT gives an alternative input source to AC_COMPILE_IFELSE. 23 | # 24 | # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this 25 | # macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. 26 | # 27 | # LICENSE 28 | # 29 | # Copyright (c) 2008 Guido U. Draheim 30 | # Copyright (c) 2011 Maarten Bosmans 31 | # 32 | # Copying and distribution of this file, with or without modification, are 33 | # permitted in any medium without royalty provided the copyright notice 34 | # and this notice are preserved. This file is offered as-is, without any 35 | # warranty. 36 | 37 | #serial 6 38 | 39 | AC_DEFUN([AX_CHECK_COMPILE_FLAG], 40 | [AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF 41 | AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl 42 | AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ 43 | ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS 44 | _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" 45 | AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], 46 | [AS_VAR_SET(CACHEVAR,[yes])], 47 | [AS_VAR_SET(CACHEVAR,[no])]) 48 | _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) 49 | AS_VAR_IF(CACHEVAR,yes, 50 | [m4_default([$2], :)], 51 | [m4_default([$3], :)]) 52 | AS_VAR_POPDEF([CACHEVAR])dnl 53 | ])dnl AX_CHECK_COMPILE_FLAGS 54 | -------------------------------------------------------------------------------- /m4/ax_count_cpus.m4: -------------------------------------------------------------------------------- 1 | # =========================================================================== 2 | # http://www.gnu.org/software/autoconf-archive/ax_count_cpus.html 3 | # =========================================================================== 4 | # 5 | # SYNOPSIS 6 | # 7 | # AX_COUNT_CPUS 8 | # 9 | # DESCRIPTION 10 | # 11 | # Attempt to count the number of processors present on the machine. If the 12 | # detection fails, then a value of 1 is assumed. 13 | # 14 | # The value is placed in the CPU_COUNT variable. 15 | # 16 | # LICENSE 17 | # 18 | # Copyright (c) 2014 Karlson2k (Evgeny Grin) 19 | # Copyright (c) 2012 Brian Aker 20 | # Copyright (c) 2008 Michael Paul Bailey 21 | # Copyright (c) 2008 Christophe Tournayre 22 | # 23 | # Copying and distribution of this file, with or without modification, are 24 | # permitted in any medium without royalty provided the copyright notice 25 | # and this notice are preserved. This file is offered as-is, without any 26 | # warranty. 27 | 28 | #serial 11 29 | 30 | AC_DEFUN([AX_COUNT_CPUS],[ 31 | AC_REQUIRE([AC_CANONICAL_HOST]) 32 | AC_REQUIRE([AC_PROG_EGREP]) 33 | AC_MSG_CHECKING([the number of available CPUs]) 34 | CPU_COUNT="0" 35 | 36 | AS_CASE([$host_os],[ 37 | *darwin*],[ 38 | AS_IF([test -x /usr/sbin/sysctl],[ 39 | sysctl_a=`/usr/sbin/sysctl -a 2>/dev/null| grep -c hw.cpu` 40 | AS_IF([test sysctl_a],[ 41 | CPU_COUNT=`/usr/sbin/sysctl -n hw.ncpu` 42 | ]) 43 | ])],[ 44 | *linux*],[ 45 | AS_IF([test "x$CPU_COUNT" = "x0" -a -e /proc/cpuinfo],[ 46 | AS_IF([test "x$CPU_COUNT" = "x0" -a -e /proc/cpuinfo],[ 47 | CPU_COUNT=`$EGREP -c '^processor' /proc/cpuinfo` 48 | ]) 49 | ])],[ 50 | *mingw*],[ 51 | AS_IF([test -n "$NUMBER_OF_PROCESSORS"],[ 52 | CPU_COUNT="$NUMBER_OF_PROCESSORS" 53 | ])],[ 54 | *cygwin*],[ 55 | AS_IF([test -n "$NUMBER_OF_PROCESSORS"],[ 56 | CPU_COUNT="$NUMBER_OF_PROCESSORS" 57 | ]) 58 | ]) 59 | 60 | AS_IF([test "x$CPU_COUNT" = "x0"],[ 61 | CPU_COUNT="1" 62 | AC_MSG_RESULT( [unable to detect (assuming 1)] ) 63 | AC_DEFINE_UNQUOTED(NUMBER_OF_CPUS, ${CPU_COUNT},[Number of CPUs, test failed, set to one.]) 64 | ],[ 65 | AC_MSG_RESULT( $CPU_COUNT ) 66 | AC_DEFINE_UNQUOTED(NUMBER_OF_CPUS, ${CPU_COUNT},[Number of CPUs.]) 67 | ]) 68 | ]) 69 | -------------------------------------------------------------------------------- /m4/ax_cpu_vendor.m4: -------------------------------------------------------------------------------- 1 | # =========================================================================== 2 | # http://www.gnu.org/software/autoconf-archive/ax_cpu_vendor.html 3 | # =========================================================================== 4 | # 5 | # SYNOPSIS 6 | # 7 | # AX_CPU_VENDOR 8 | # 9 | # DESCRIPTION 10 | # 11 | # Find your CPU's vendor by requesting cpuid and define "ax_cpu_vendor" 12 | # accordingly. This macro depends on AX_GCC_X86_CPUID. 13 | # 14 | # LICENSE 15 | # 16 | # Copyright (c) 2008 Christophe Tournayre 17 | # 18 | # Copying and distribution of this file, with or without modification, are 19 | # permitted in any medium without royalty provided the copyright notice 20 | # and this notice are preserved. This file is offered as-is, without any 21 | # warranty. 22 | 23 | #serial 7 24 | 25 | AC_DEFUN([AX_CPU_VENDOR], 26 | [ 27 | AC_REQUIRE([AX_GCC_X86_CPUID]) 28 | AX_GCC_X86_CPUID(0x0) 29 | 30 | AC_CACHE_CHECK(for the processor vendor, ax_cpu_vendor, 31 | [ 32 | vendor=`echo $ax_cv_gcc_x86_cpuid_0x0 | cut -d ":" -f 2` 33 | 34 | case $vendor in 35 | 756e6547*) 36 | ax_cpu_vendor="Intel" 37 | ;; 38 | 68747541*) 39 | ax_cpu_vendor="AMD" 40 | ;; 41 | 69727943*) 42 | ax_cpu_vendor="Cyrix" 43 | ;; 44 | 746e6543*) 45 | ax_cpu_vendor="IDT" 46 | ;; 47 | 646f6547*) 48 | ax_cpu_vendor="Natsemi Geode" 49 | ;; 50 | 52697365*) 51 | ax_cpu_vendor="Rise" 52 | ;; 53 | 65736952*) 54 | ax_cpu_vendor="Rise" 55 | ;; 56 | 20536953*) 57 | ax_cpu_vendor="SiS" 58 | ;; 59 | *) 60 | ax_cpu_vendor="Unknown" 61 | ;; 62 | esac 63 | ]) 64 | ]) 65 | -------------------------------------------------------------------------------- /msolve.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: msolve 7 | URL: https://msolve.lip6.fr/ 8 | Description: C library for solving multivariate polynomial systems 9 | Version: @PACKAGE_VERSION@ 10 | Libs: -L${libdir} -lmsolve -lflint -lmpfr -lgmp 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /output_files/F4SAT-31.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 1073741827 4 | #variable order: w, x, y, z 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 6 elements sorted by increasing leading monomials 7 | #--- 8 | [1*w^1*y^3+1073741826*x^1*z^3, 9 | 1*x^4, 10 | 1*w^1*x^3, 11 | 1*w^2*x^2, 12 | 1*w^3*x^1, 13 | 1*w^4]: 14 | -------------------------------------------------------------------------------- /output_files/F4SAT-byone-31.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 1073741827 4 | #variable order: w, x, y, z 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 6 elements sorted by increasing leading monomials 7 | #--- 8 | [1*w^1*y^3+1073741826*x^1*z^3, 9 | 1*x^4, 10 | 1*w^4, 11 | 1*w^3*x^1*z^3, 12 | 1*w^2*x^2*z^6, 13 | 1*w^1*x^3*z^9]: 14 | -------------------------------------------------------------------------------- /output_files/bug_68.res: -------------------------------------------------------------------------------- 1 | [1, 3, -1, []]: 2 | -------------------------------------------------------------------------------- /output_files/cyclic5-16.res: -------------------------------------------------------------------------------- 1 | [0, [65521, 2 | 6, 3 | 70, 4 | ['x1', 'x2', 'x3', 'x4', 'x5', 'A'], 5 | [1,2,3,4,5,1], 6 | [1, 7 | [[70, 8 | [29283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54706, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[66, 13 | [0, 28714, 0, 0, 0, 0, 55665, 0, 0, 0, 0, 58261, 0, 0, 0, 0, 8202, 0, 0, 0, 0, 27827, 0, 0, 0, 0, 19529, 0, 0, 0, 0, 19553, 0, 0, 0, 0, 64648, 0, 0, 0, 0, 25504, 0, 0, 0, 0, 17534, 0, 0, 0, 0, 9427, 0, 0, 0, 0, 57135, 0, 0, 0, 0, 26938, 0, 0, 0, 0, 59017]]], 14 | [[66, 15 | [0, 40853, 0, 0, 0, 0, 24738, 0, 0, 0, 0, 14520, 0, 0, 0, 0, 64311, 0, 0, 0, 0, 9867, 0, 0, 0, 0, 64466, 0, 0, 0, 0, 26415, 0, 0, 0, 0, 16657, 0, 0, 0, 0, 14513, 0, 0, 0, 0, 51619, 0, 0, 0, 0, 46667, 0, 0, 0, 0, 60717, 0, 0, 0, 0, 11645, 0, 0, 0, 0, 20457]]], 16 | [[66, 17 | [0, 0, 0, 0, 0, 0, 35757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37615]]], 18 | [[66, 19 | [0, 24668, 0, 0, 0, 0, 24738, 0, 0, 0, 0, 51001, 0, 0, 0, 0, 64311, 0, 0, 0, 0, 55654, 0, 0, 0, 0, 64466, 0, 0, 0, 0, 39106, 0, 0, 0, 0, 16657, 0, 0, 0, 0, 51008, 0, 0, 0, 0, 51619, 0, 0, 0, 0, 18854, 0, 0, 0, 0, 60717, 0, 0, 0, 0, 53876, 0, 0, 0, 0, 20457]]], 20 | [[66, 21 | [0, 36807, 0, 0, 0, 0, 55665, 0, 0, 0, 0, 7260, 0, 0, 0, 0, 8202, 0, 0, 0, 0, 37694, 0, 0, 0, 0, 19529, 0, 0, 0, 0, 45968, 0, 0, 0, 0, 64648, 0, 0, 0, 0, 40017, 0, 0, 0, 0, 17534, 0, 0, 0, 0, 56094, 0, 0, 0, 0, 57135, 0, 0, 0, 0, 38583, 0, 0, 0, 0, 59017]]] 22 | ]]]]]: 23 | -------------------------------------------------------------------------------- /output_files/cyclic5-31.res: -------------------------------------------------------------------------------- 1 | [0, [1073741827, 2 | 6, 3 | 70, 4 | ['x1', 'x2', 'x3', 'x4', 'x5', 'A'], 5 | [1,2,3,4,5,1], 6 | [1, 7 | [[70, 8 | [308747814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 808107260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 845555599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415451392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 603228419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 948314122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 847647356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[66, 13 | [0, 45076426, 0, 0, 0, 0, 163184606, 0, 0, 0, 0, 325716875, 0, 0, 0, 0, 365753131, 0, 0, 0, 0, 687926172, 0, 0, 0, 0, 632448445, 0, 0, 0, 0, 1036872027, 0, 0, 0, 0, 836316061, 0, 0, 0, 0, 795697403, 0, 0, 0, 0, 64188697, 0, 0, 0, 0, 376684831, 0, 0, 0, 0, 776215800, 0, 0, 0, 0, 493421957, 0, 0, 0, 0, 720848328]]], 14 | [[66, 15 | [0, 446718061, 0, 0, 0, 0, 970767649, 0, 0, 0, 0, 422308077, 0, 0, 0, 0, 833207112, 0, 0, 0, 0, 771631310, 0, 0, 0, 0, 752167623, 0, 0, 0, 0, 73739600, 0, 0, 0, 0, 930367931, 0, 0, 0, 0, 556088848, 0, 0, 0, 0, 636298741, 0, 0, 0, 0, 320372165, 0, 0, 0, 0, 300928470, 0, 0, 0, 0, 86897913, 0, 0, 0, 0, 213486874]]], 16 | [[66, 17 | [0, 0, 0, 0, 0, 0, 953320971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 823304995, 0, 0, 0, 0, 0, 0, 0, 0, 0, 451993345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 761599324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 746508778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066936941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278813250]]], 18 | [[66, 19 | [0, 627023766, 0, 0, 0, 0, 970767649, 0, 0, 0, 0, 651433750, 0, 0, 0, 0, 833207112, 0, 0, 0, 0, 302110517, 0, 0, 0, 0, 752167623, 0, 0, 0, 0, 1000002227, 0, 0, 0, 0, 930367931, 0, 0, 0, 0, 517652979, 0, 0, 0, 0, 636298741, 0, 0, 0, 0, 753369662, 0, 0, 0, 0, 300928470, 0, 0, 0, 0, 986843914, 0, 0, 0, 0, 213486874]]], 20 | [[66, 21 | [0, 1028665401, 0, 0, 0, 0, 163184606, 0, 0, 0, 0, 748024952, 0, 0, 0, 0, 365753131, 0, 0, 0, 0, 385815655, 0, 0, 0, 0, 632448445, 0, 0, 0, 0, 36869800, 0, 0, 0, 0, 836316061, 0, 0, 0, 0, 278044424, 0, 0, 0, 0, 64188697, 0, 0, 0, 0, 697056996, 0, 0, 0, 0, 776215800, 0, 0, 0, 0, 580319870, 0, 0, 0, 0, 720848328]]] 22 | ]]]]]: 23 | -------------------------------------------------------------------------------- /output_files/cyclic5-qq.g2.e1.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 0 4 | #variable order: x2, x3, x4, x5 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 19 elements sorted by increasing leading monomials 7 | #--- 8 | [x2^2+x2*x4-x3*x4+2*x2*x5+x3*x5+x5^2, 9 | x3^3+x2*x3*x4-2*x2*x4^2-x3*x4^2-x4^3+3*x3^2*x5-2*x2*x4*x5-2*x3*x4*x5-3*x4^2*x5+3*x2*x5^2+3*x3*x5^2-2*x4*x5^2+2*x5^3, 10 | x2*x3^2-x2*x3*x4+x3^2*x4-x3^2*x5+x2*x4*x5+x3*x4*x5+x4^2*x5-x2*x5^2-2*x3*x5^2+x4*x5^2-x5^3, 11 | x4^4+14*x2*x3*x4*x5+6*x3^2*x4*x5-27*x2*x4^2*x5+2*x3*x4^2*x5-15*x4^3*x5-x2*x3*x5^2+7*x3^2*x5^2-10*x2*x4*x5^2-9*x3*x4*x5^2-33*x4^2*x5^2+24*x2*x5^3+33*x3*x5^3-14*x4*x5^3+22*x5^4, 12 | x3*x4^3-2*x2*x3*x4*x5-x3^2*x4*x5+5*x2*x4^2*x5+4*x4^3*x5-x2*x3*x5^2-2*x3^2*x5^2+2*x2*x4*x5^2+7*x4^2*x5^2-4*x2*x5^3-7*x3*x5^3+2*x4*x5^3-4*x5^4, 13 | x2*x4^3-5*x2*x3*x4*x5-2*x3^2*x4*x5+10*x2*x4^2*x5+x3*x4^2*x5+6*x4^3*x5-3*x3^2*x5^2+2*x2*x4*x5^2+2*x3*x4*x5^2+13*x4^2*x5^2-8*x2*x5^3-13*x3*x5^3+4*x4*x5^3-8*x5^4, 14 | x3^2*x4^2+x2*x3*x4*x5-2*x2*x4^2*x5+2*x3*x4^2*x5-x4^3*x5-2*x2*x4*x5^2-2*x3*x4*x5^2-2*x4^2*x5^2+3*x2*x5^3+2*x3*x5^3-2*x4*x5^3+2*x5^4, 15 | x2*x3*x4^2+x2*x3*x4*x5+x3^2*x4*x5-x2*x4^2*x5+x3*x4^2*x5-x4^3*x5-x2*x3*x5^2-x2*x4*x5^2-2*x4^2*x5^2+x2*x5^3+x3*x5^3-x4*x5^3+x5^4, 16 | 2*x2*x3*x4*x5^2+x3^2*x4*x5^2+2*x3*x4^2*x5^2-x2*x3*x5^3-2*x2*x4*x5^3-x3*x4*x5^3-x4^2*x5^3+x2*x5^4+x3*x5^4-2*x4*x5^4+x5^5-1, 17 | x2*x5^5-x3*x5^5-x2+x3, 18 | 15*x3*x4^2*x5^3+10*x4^3*x5^3-20*x2*x3*x5^4-20*x3^2*x5^4+5*x2*x4*x5^4-25*x3*x4*x5^4+30*x4^2*x5^4-23*x3*x5^5-3*x4*x5^5-4*x5^6+15*x2-7*x3+3*x4+24*x5, 19 | 3*x2*x4^2*x5^3+x4^3*x5^3+x2*x3*x5^4+x3^2*x5^4-x2*x4*x5^4+2*x3*x4*x5^4-2*x3*x5^5-x5^6-3*x2+2*x3-3*x5, 20 | 2*x3*x4*x5^5+x4^2*x5^5+8*x3*x5^6+x4*x5^6+3*x5^7-2*x3*x4-x4^2-8*x3*x5-x4*x5-3*x5^2, 21 | x3^2*x5^5+3*x3*x5^6+x5^7-x3^2-3*x3*x5-x5^2, 22 | 5*x4^3*x5^4+11*x4^2*x5^5+9*x3*x5^6+2*x4*x5^6+3*x5^7-10*x2*x3-10*x3^2+10*x2*x4-5*x3*x4+4*x4^2-24*x3*x5-2*x4*x5+7*x5^2, 23 | x5^8+42*x2*x3*x4+21*x3^2*x4-165*x2*x4^2+42*x3*x4^2-55*x4^3-76*x2*x3*x5-55*x3^2*x5+13*x2*x4*x5-131*x3*x4*x5-21*x4^2*x5+186*x2*x5^2+21*x3*x5^2-42*x4*x5^2+219*x5^3, 24 | x4*x5^7-110*x2*x3*x4-55*x3^2*x4+52*x2*x4^2+60*x3*x4^2+39*x4^3+29*x2*x3*x5-26*x3^2*x5-34*x2*x4*x5-102*x3*x4*x5+120*x4^2*x5+63*x2*x5^2-120*x3*x5^2+109*x4*x5^2-26*x5^3, 25 | x3*x5^7-16*x2*x3*x4-8*x3^2*x4+63*x2*x4^2-16*x3*x4^2+21*x4^3+29*x2*x3*x5+21*x3^2*x5-5*x2*x4*x5+50*x3*x4*x5+8*x4^2*x5-71*x2*x5^2-9*x3*x5^2+16*x4*x5^2-84*x5^3, 26 | x4^2*x5^6+28*x2*x3*x4+14*x3^2*x4-21*x2*x4^2-12*x3*x4^2-12*x4^3-11*x2*x3*x5+3*x3^2*x5+9*x2*x4*x5+17*x3*x4*x5-30*x4^2*x5-5*x2*x5^2+29*x3*x5^2-28*x4*x5^2+18*x5^3 27 | ]: 28 | -------------------------------------------------------------------------------- /output_files/cyclic5-qq.g2.e2.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 0 4 | #variable order: x3, x4, x5 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 15 elements sorted by increasing leading monomials 7 | #--- 8 | [x3^2*x4^2-x3^3*x5+3*x3*x4^2*x5-3*x3^2*x5^2+x4^2*x5^2-x3*x5^3, 9 | 2*x3^4-2*x3^3*x4+3*x3*x4^3+x4^4+2*x3^3*x5-5*x3^2*x4*x5+6*x3*x4^2*x5+3*x4^3*x5-7*x3^2*x5^2-5*x3*x4*x5^2+2*x3*x5^3-2*x4*x5^3+2*x5^4, 10 | 3*x3^3*x4*x5-4*x3*x4^3*x5-x4^4*x5-x3^3*x5^2+9*x3^2*x4*x5^2+6*x3*x4^2*x5^2-3*x4^3*x5^2-5*x3^2*x5^3+3*x3*x4*x5^3+6*x4^2*x5^3-9*x3*x5^4+x4*x5^4-3*x5^5-2, 11 | x4^5+x3*x4^3*x5-4*x4^4*x5-8*x3^3*x5^2+10*x3^2*x4*x5^2+30*x3*x4^2*x5^2-12*x4^3*x5^2-26*x3^2*x5^3+12*x3*x4*x5^3+27*x4^2*x5^3-27*x3*x5^4+8*x4*x5^4-8*x5^5-4, 12 | x3*x4^4+2*x4^4*x5+x3^3*x5^2-2*x3^2*x4*x5^2-6*x3*x4^2*x5^2+3*x4^3*x5^2+4*x3^2*x5^3-3*x3*x4*x5^3-6*x4^2*x5^3+6*x3*x5^4-2*x4*x5^4+2*x5^5, 13 | 11*x4^4*x5^2-10*x3^3*x5^3-6*x3^2*x4*x5^3+3*x3*x4^2*x5^3+14*x4^3*x5^3-14*x3^2*x5^4-14*x3*x4*x5^4-31*x4^2*x5^4+62*x3*x5^5-13*x4*x5^5+27*x5^6-31*x3+23*x4-21*x5, 14 | 11*x3*x4^3*x5^2+6*x3^3*x5^3-3*x3^2*x4*x5^3-15*x3*x4^2*x5^3+7*x4^3*x5^3+15*x3^2*x5^4-7*x3*x4*x5^4+x4^2*x5^4-2*x3*x5^5-x4*x5^5-3*x5^6+x3-5*x4-5*x5, 15 | 2*x3*x4*x5^5+x4^2*x5^5+8*x3*x5^6+x4*x5^6+3*x5^7-2*x3*x4-x4^2-8*x3*x5-x4*x5-3*x5^2, 16 | x3^2*x5^5+3*x3*x5^6+x5^7-x3^2-3*x3*x5-x5^2, 17 | 20*x3^3*x5^4-10*x3^2*x4*x5^4-50*x3*x4^2*x5^4+5*x4^3*x5^4-18*x4^2*x5^5-155*x3*x5^6+x4*x5^6-58*x5^7+50*x3^2-5*x3*x4+3*x4^2+170*x3*x5-21*x4*x5+68*x5^2, 18 | 132*x4^2*x5^6-15*x3*x5^7+31*x4*x5^7-13*x5^8+20*x3^3-10*x3^2*x4-50*x3*x4^2+5*x4^3+50*x3^2*x5-5*x3*x4*x5-147*x4^2*x5+30*x3*x5^2-51*x4*x5^2+23*x5^3, 19 | 33*x4^3*x5^5-1020*x3*x5^7-4*x4*x5^7-389*x5^8+40*x3^3-20*x3^2*x4-100*x3*x4^2-23*x4^3+100*x3^2*x5-10*x3*x4*x5-30*x4^2*x5+1050*x3*x5^2-36*x4*x5^2+409*x5^3, 20 | 4*x5^9-314*x3^3*x4-3*x3*x4^3+13*x4^4-42*x3^3*x5-777*x3^2*x4*x5-78*x3*x4^2*x5-71*x4^3*x5+65*x3^2*x5^2+71*x3*x4*x5^2-408*x4^2*x5^2+722*x3*x5^3+42*x4*x5^3+776*x5^4, 21 | 2*x4*x5^8-139*x3^3*x4+138*x3*x4^3+59*x4^4-191*x3^3*x5-311*x3^2*x4*x5+290*x3*x4^2*x5+75*x4^3*x5-349*x3^2*x5^2-75*x3*x4*x5^2-168*x4^2*x5^2+307*x3*x5^3+189*x4*x5^3+173*x5^4, 22 | 4*x3*x5^8+120*x3^3*x4+x3*x4^3-5*x4^4+16*x3^3*x5+297*x3^2*x4*x5+30*x3*x4^2*x5+27*x4^3*x5-25*x3^2*x5^2-27*x3*x4*x5^2+156*x4^2*x5^2-280*x3*x5^3-16*x4*x5^3-298*x5^4 23 | ]: 24 | -------------------------------------------------------------------------------- /output_files/cyclic5-qq.g2.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 0 4 | #variable order: x1, x2, x3, x4, x5 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 20 elements sorted by increasing leading monomials 7 | #--- 8 | [x1+x2+x3+x4+x5, 9 | x2^2+x2*x4-x3*x4+2*x2*x5+x3*x5+x5^2, 10 | x3^3+x2*x3*x4-2*x2*x4^2-x3*x4^2-x4^3+3*x3^2*x5-2*x2*x4*x5-2*x3*x4*x5-3*x4^2*x5+3*x2*x5^2+3*x3*x5^2-2*x4*x5^2+2*x5^3, 11 | x2*x3^2-x2*x3*x4+x3^2*x4-x3^2*x5+x2*x4*x5+x3*x4*x5+x4^2*x5-x2*x5^2-2*x3*x5^2+x4*x5^2-x5^3, 12 | x4^4+14*x2*x3*x4*x5+6*x3^2*x4*x5-27*x2*x4^2*x5+2*x3*x4^2*x5-15*x4^3*x5-x2*x3*x5^2+7*x3^2*x5^2-10*x2*x4*x5^2-9*x3*x4*x5^2-33*x4^2*x5^2+24*x2*x5^3+33*x3*x5^3-14*x4*x5^3+22*x5^4, 13 | x3*x4^3-2*x2*x3*x4*x5-x3^2*x4*x5+5*x2*x4^2*x5+4*x4^3*x5-x2*x3*x5^2-2*x3^2*x5^2+2*x2*x4*x5^2+7*x4^2*x5^2-4*x2*x5^3-7*x3*x5^3+2*x4*x5^3-4*x5^4, 14 | x2*x4^3-5*x2*x3*x4*x5-2*x3^2*x4*x5+10*x2*x4^2*x5+x3*x4^2*x5+6*x4^3*x5-3*x3^2*x5^2+2*x2*x4*x5^2+2*x3*x4*x5^2+13*x4^2*x5^2-8*x2*x5^3-13*x3*x5^3+4*x4*x5^3-8*x5^4, 15 | x3^2*x4^2+x2*x3*x4*x5-2*x2*x4^2*x5+2*x3*x4^2*x5-x4^3*x5-2*x2*x4*x5^2-2*x3*x4*x5^2-2*x4^2*x5^2+3*x2*x5^3+2*x3*x5^3-2*x4*x5^3+2*x5^4, 16 | x2*x3*x4^2+x2*x3*x4*x5+x3^2*x4*x5-x2*x4^2*x5+x3*x4^2*x5-x4^3*x5-x2*x3*x5^2-x2*x4*x5^2-2*x4^2*x5^2+x2*x5^3+x3*x5^3-x4*x5^3+x5^4, 17 | 2*x2*x3*x4*x5^2+x3^2*x4*x5^2+2*x3*x4^2*x5^2-x2*x3*x5^3-2*x2*x4*x5^3-x3*x4*x5^3-x4^2*x5^3+x2*x5^4+x3*x5^4-2*x4*x5^4+x5^5-1, 18 | x2*x5^5-x3*x5^5-x2+x3, 19 | 15*x3*x4^2*x5^3+10*x4^3*x5^3-20*x2*x3*x5^4-20*x3^2*x5^4+5*x2*x4*x5^4-25*x3*x4*x5^4+30*x4^2*x5^4-23*x3*x5^5-3*x4*x5^5-4*x5^6+15*x2-7*x3+3*x4+24*x5, 20 | 3*x2*x4^2*x5^3+x4^3*x5^3+x2*x3*x5^4+x3^2*x5^4-x2*x4*x5^4+2*x3*x4*x5^4-2*x3*x5^5-x5^6-3*x2+2*x3-3*x5, 21 | 2*x3*x4*x5^5+x4^2*x5^5+8*x3*x5^6+x4*x5^6+3*x5^7-2*x3*x4-x4^2-8*x3*x5-x4*x5-3*x5^2, 22 | x3^2*x5^5+3*x3*x5^6+x5^7-x3^2-3*x3*x5-x5^2, 23 | 5*x4^3*x5^4+11*x4^2*x5^5+9*x3*x5^6+2*x4*x5^6+3*x5^7-10*x2*x3-10*x3^2+10*x2*x4-5*x3*x4+4*x4^2-24*x3*x5-2*x4*x5+7*x5^2, 24 | x5^8+42*x2*x3*x4+21*x3^2*x4-165*x2*x4^2+42*x3*x4^2-55*x4^3-76*x2*x3*x5-55*x3^2*x5+13*x2*x4*x5-131*x3*x4*x5-21*x4^2*x5+186*x2*x5^2+21*x3*x5^2-42*x4*x5^2+219*x5^3, 25 | x4*x5^7-110*x2*x3*x4-55*x3^2*x4+52*x2*x4^2+60*x3*x4^2+39*x4^3+29*x2*x3*x5-26*x3^2*x5-34*x2*x4*x5-102*x3*x4*x5+120*x4^2*x5+63*x2*x5^2-120*x3*x5^2+109*x4*x5^2-26*x5^3, 26 | x3*x5^7-16*x2*x3*x4-8*x3^2*x4+63*x2*x4^2-16*x3*x4^2+21*x4^3+29*x2*x3*x5+21*x3^2*x5-5*x2*x4*x5+50*x3*x4*x5+8*x4^2*x5-71*x2*x5^2-9*x3*x5^2+16*x4*x5^2-84*x5^3, 27 | x4^2*x5^6+28*x2*x3*x4+14*x3^2*x4-21*x2*x4^2-12*x3*x4^2-12*x4^3-11*x2*x3*x5+3*x3^2*x5+9*x2*x4*x5+17*x3*x4*x5-30*x4^2*x5-5*x2*x5^2+29*x3*x5^2-28*x4*x5^2+18*x5^3 28 | ]: 29 | -------------------------------------------------------------------------------- /output_files/eco6-16.res: -------------------------------------------------------------------------------- 1 | [0, [65521, 2 | 6, 3 | 16, 4 | ['x0', 'x1', 'x2', 'x3', 'x4', 'x5'], 5 | [0, 0, 0, 0, 0, 1], 6 | [1, 7 | [[16, 8 | [30506, 34209, 60769, 6906, 62650, 63170, 37722, 48548, 13105, 33392, 56985, 61772, 52266, 221, 65269, 13, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[15, 13 | [40627, 22759, 61754, 5808, 50764, 35280, 16328, 23569, 7339, 48614, 28744, 29942, 26525, 33363, 62935, 30161]]], 14 | [[15, 15 | [52772, 39623, 2196, 10539, 37612, 28077, 8850, 106, 36099, 44221, 55832, 11383, 61982, 30395, 20068, 45547]]], 16 | [[15, 17 | [64150, 2997, 65243, 7158, 15495, 26997, 35217, 16690, 771, 8022, 338, 54715, 11049, 12161, 29158, 27161]]], 18 | [[15, 19 | [12804, 59375, 42755, 38217, 12809, 21111, 62748, 15362, 5271, 26170, 45800, 46583, 45015, 60746, 23531, 48691]]], 20 | [[15, 21 | [26211, 6288, 24615, 3799, 14362, 19577, 7899, 9794, 16041, 4015, 328, 53940, 51992, 59898, 60871, 45003]]] 22 | ]]]]]: 23 | -------------------------------------------------------------------------------- /output_files/eco6-31.res: -------------------------------------------------------------------------------- 1 | [0, [1073741827, 2 | 6, 3 | 16, 4 | ['x0', 'x1', 'x2', 'x3', 'x4', 'x5'], 5 | [0, 0, 0, 0, 0, 1], 6 | [1, 7 | [[16, 8 | [116551191, 962549754, 753588466, 10719471, 190974760, 765282692, 567973750, 1018883777, 51840216, 1071547505, 908758, 323856, 1073728572, 221, 1073741575, 13, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[15, 13 | [1064968736, 582989750, 404457098, 43259670, 829088325, 132052186, 110097713, 677147209, 718413546, 1046476465, 489110116, 728126771, 555411617, 608862845, 147498961, 500131217]]], 14 | [[15, 15 | [953527507, 368869699, 175546299, 237441203, 387239143, 745761742, 376923351, 397755393, 69035362, 944534046, 685973538, 835740024, 850554406, 33309552, 421259904, 356647852]]], 16 | [[15, 17 | [962212213, 788169507, 1046832894, 167834915, 932522946, 184709469, 356480472, 431836166, 778421171, 986217284, 263735991, 416739581, 54421248, 555607957, 1017628355, 807398585]]], 18 | [[15, 19 | [25768658, 184116400, 434060822, 1048655456, 512725296, 1050011818, 497483796, 542597233, 1021800046, 814313427, 718798674, 694517501, 917997445, 458061067, 1016807837, 353169673]]], 20 | [[15, 21 | [214748368, 223338298, 86586541, 650292410, 559649771, 34948439, 806498322, 98147653, 633555356, 503426086, 1063607162, 546101604, 842840765, 491642233, 618030424, 130136327]]] 22 | ]]]]]: 23 | -------------------------------------------------------------------------------- /output_files/eco6-qq.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 6, 3 | 16, 4 | ['x0', 'x1', 'x2', 'x3', 'x4', 'x5'], 5 | [0, 0, 0, 0, 0, 1], 6 | [1, 7 | [[16, [152587890625, 79345703125, -61523437500, 2158203125, -5177734375, 5060250000, 567973750, -54858050, 51840216, -2194322, 908758, 323856, -13255, 221, -252, 13, 1]], 8 | [15, [79345703125, -123046875000, 6474609375, -20710937500, 25301250000, 3407842500, -384006350, 414721728, -19748898, 9087580, 3562416, -159060, 2873, -3528, 195, 16]], 9 | [ 10 | [[15, [-836181640625, -159667968750, -532587890625, 1085937500, -92073750000, -50574907500, -1326628850, 259352028, -44287866, -88189916, -9778992, 214860, -58957, 5394, -501, -32]], 11 | 5], 12 | [[15, [-3491210937500, -1573242187500, 288164062500, -318132812500, 39771562500, -8297445000, 14208748900, 3267203148, -500034456, 93461644, 15495228, -807240, 14888, -19296, 1284, 88]], 13 | 5], 14 | [[15, [-1293945312500, -1500000000000, -641132812500, 870968750000, 99527812500, 54270030000, 4937653900, -2355725412, 404792064, 155214964, 7307868, -421440, -72472, 1524, 804, 28]], 15 | 5], 16 | [[15, [1910400390625, 3579345703125, 372099609375, 42365234375, 98693437500, 4657717500, -8658607850, -264866382, 296501454, -37802246, -3398652, 462660, 39833, 2889, -381, -17]], 17 | 5], 18 | [[15, [4107666015625, -961669921875, 545830078125, -699841796875, -19412812500, 16983817500, -11081197850, 1167645258, -255715686, -77246546, 8186628, -244140, 91073, -8151, -231, 13]], 19 | 5] 20 | ]]]]]: 21 | -------------------------------------------------------------------------------- /output_files/elim-31.e2.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 1073741827 4 | #variable order: t, w, x, y, z 5 | #monomial order: eliminating first 2 variables, blocks: graded reverse lexicographical 6 | #length of basis: 7 elements sorted by increasing leading monomials 7 | #--- 8 | [1*x^4, 9 | 1*w^1*y^3+1073741826*x^1*z^3, 10 | 1*w^1*x^3, 11 | 1*t^1*z^1+1073741826, 12 | 1*w^2*x^2, 13 | 1*w^3*x^1, 14 | 1*w^4]: 15 | -------------------------------------------------------------------------------- /output_files/elim-31.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 1073741827 4 | #variable order: t, w, x, y, z 5 | #monomial order: eliminating first variable, blocks: graded reverse lexicographical 6 | #length of basis: 7 elements sorted by increasing leading monomials 7 | #--- 8 | [1*w^1*y^3+1073741826*x^1*z^3, 9 | 1*x^4, 10 | 1*w^1*x^3, 11 | 1*w^2*x^2, 12 | 1*w^3*x^1, 13 | 1*w^4, 14 | 1*t^1*z^1+1073741826]: 15 | -------------------------------------------------------------------------------- /output_files/elim-qq.e2.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 0 4 | #variable order: x, y, z 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 1 element 7 | #--- 8 | [x^4 9 | ]: 10 | -------------------------------------------------------------------------------- /output_files/elim-qq.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 0 4 | #variable order: w, x, y, z 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 6 elements sorted by increasing leading monomials 7 | #--- 8 | [w*y^3-x*z^3, 9 | x^4, 10 | w*x^3, 11 | w^2*x^2, 12 | w^3*x, 13 | w^4 14 | ]: 15 | -------------------------------------------------------------------------------- /output_files/f4sat-field-char.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 1073741831 4 | #variable order: x, y 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 1 element 7 | #--- 8 | [1*x^1+536870917*y^1]: 9 | -------------------------------------------------------------------------------- /output_files/f4sat-is-saturated-check.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/algebraic-solving/msolve/c1890f8fd3d5f2b13754a441875bffe5c369168d/output_files/f4sat-is-saturated-check.res -------------------------------------------------------------------------------- /output_files/f4sat-zero-input.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/algebraic-solving/msolve/c1890f8fd3d5f2b13754a441875bffe5c369168d/output_files/f4sat-zero-input.res -------------------------------------------------------------------------------- /output_files/input-overflow-16.res: -------------------------------------------------------------------------------- 1 | [0, [65519, 2 | 2, 3 | 4, 4 | ['y', 'x'], 5 | [0, 1], 6 | [1, 7 | [[4, 8 | [0, 65375, 599, 21103, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[3, 13 | [0, 39978, 62904, 51433]]] 14 | ]]]]]: 15 | -------------------------------------------------------------------------------- /output_files/kat6-31.res: -------------------------------------------------------------------------------- 1 | [0, [1073741827, 2 | 6, 3 | 32, 4 | ['x1', 'x2', 'x3', 'x4', 'x5', 'x6'], 5 | [0, 0, 0, 0, 0, 1], 6 | [1, 7 | [[32, 8 | [0, 305313024, 425877696, 441817934, 1048560509, 896280192, 103165548, 866100570, 881789066, 117019049, 298010449, 739640425, 546473727, 821051238, 803499748, 678925363, 236650704, 869619437, 511300299, 994688984, 226363686, 275554777, 457284933, 504063416, 422512237, 187137815, 763317831, 176681200, 611614347, 617747344, 473142393, 37675150, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[31, 13 | [1073741826, 135200027, 303309998, 1010474949, 855264717, 284622213, 1015193218, 1001941651, 157682957, 366981127, 997084202, 112843258, 299643641, 732861002, 459038092, 1058946328, 904780998, 903053243, 955733229, 350886987, 503340552, 272980853, 914514770, 782023996, 681911430, 380182197, 785008187, 367872464, 950019599, 99103765, 611858126, 650769636]]], 14 | [[31, 15 | [0, 72383631, 67627534, 984247644, 840552191, 147407023, 435576954, 281894845, 748405377, 952791598, 745687351, 843391320, 571125957, 960455373, 817353032, 439135409, 191816458, 715772302, 357018661, 1061814754, 39660876, 832991532, 1057081960, 828795534, 368622185, 437214992, 853769875, 651539936, 437619982, 876301232, 930008500, 258775846]]], 16 | [[31, 17 | [0, 561569982, 164613167, 586257239, 981531943, 720509563, 92876848, 324405767, 1033540006, 594711203, 603364016, 282725444, 38414285, 1027805587, 412538255, 1046132356, 400474046, 590341335, 721346398, 61252735, 1028237959, 40441920, 360247302, 930749865, 675607806, 57908316, 460094088, 217736643, 590481071, 712988252, 501686397, 992506050]]], 18 | [[31, 19 | [0, 503272905, 660739003, 745903700, 661316402, 550594170, 372752605, 231578190, 308237836, 592232982, 592856772, 1027040452, 704253332, 721278227, 653351822, 522169477, 952757145, 325654121, 536234380, 990496782, 716437322, 861161314, 712997786, 570047944, 940799019, 1036631308, 13286819, 56926757, 268834442, 135310190, 250898123, 1073732849]]], 20 | [[31, 21 | [0, 405786210, 29107124, 936450337, 847063500, 49790878, 738680638, 271763113, 515329870, 361128221, 780775241, 1011646636, 146997346, 145255793, 34721499, 684315075, 150045506, 601060188, 591888514, 395346803, 111477221, 813269375, 633641048, 500620140, 895240756, 962508853, 964699692, 1037344086, 912409273, 910203011, 158961571, 570825918]]] 22 | ]]]]]: 23 | -------------------------------------------------------------------------------- /output_files/kat8-qq-truncate.res: -------------------------------------------------------------------------------- 1 | #Truncated reduced Groebner basis data 2 | #--- 3 | #field characteristic: 0 4 | #variable order: x1, x2, x3, x4, x5, x6, x7, x8 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 5 elements sorted by increasing leading monomials 7 | #--- 8 | [x1+2*x2+2*x3+2*x4+2*x5+2*x6+2*x7+2*x8-1, 9 | 15*x5^2+30*x4*x6+64*x5*x6+51*x6^2+30*x3*x7+64*x4*x7+102*x5*x7+144*x6*x7+95*x7^2+30*x2*x8+64*x3*x8+102*x4*x8+144*x5*x8+190*x6*x8+240*x7*x8+147*x8^2-x2-4*x3-9*x4-16*x5-25*x6-36*x7-49*x8, 10 | 30*x4*x5+30*x3*x6-34*x5*x6-36*x6^2+30*x2*x7-34*x4*x7-72*x5*x7-114*x6*x7-80*x7^2-60*x2*x8-94*x3*x8-132*x4*x8-174*x5*x8-220*x6*x8-270*x7*x8-192*x8^2+x2+4*x3+9*x4+16*x5+25*x6+36*x7+64*x8, 11 | x4^2+2*x3*x5+2*x2*x6-4*x2*x7-4*x3*x7-4*x4*x7-4*x5*x7-4*x6*x7-4*x7^2+2*x2*x8-4*x7*x8+x7, 12 | 2*x3*x4+2*x2*x5-4*x2*x6-4*x3*x6-4*x4*x6-4*x5*x6-4*x6^2+2*x2*x7-4*x6*x7+2*x3*x8-4*x6*x8+x6 13 | ]: 14 | -------------------------------------------------------------------------------- /output_files/linear-qq.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 2, 3 | 1, 4 | ['x1', 'x2'], 5 | [0, 1], 6 | [1, 7 | [[1, [1267650600228229401496703205376, 1]], 8 | [0, [1]], 9 | [ 10 | [[0, [1267650600228229401496703205376]], 11 | 1] 12 | ]]]]]: 13 | -------------------------------------------------------------------------------- /output_files/maxbitsize-bug.res: -------------------------------------------------------------------------------- 1 | [1, 5, -1, []]: 2 | -------------------------------------------------------------------------------- /output_files/mq_2_1.res: -------------------------------------------------------------------------------- 1 | [0, [251, 2 | 1, 3 | 1, 4 | ['x'], 5 | [1], 6 | [1, 7 | [[1, 8 | [159, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | ]]]]]: 13 | -------------------------------------------------------------------------------- /output_files/multy-16.res: -------------------------------------------------------------------------------- 1 | [0, [65521, 2 | 2, 3 | 3, 4 | ['x', 'y'], 5 | [0, 1], 6 | [1, 7 | [[3, 8 | [0, 65520, 0, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[2, 13 | [0, 0, 65520]]] 14 | ]]]]]: 15 | -------------------------------------------------------------------------------- /output_files/multy-31.res: -------------------------------------------------------------------------------- 1 | [0, [1073741827, 2 | 2, 3 | 3, 4 | ['x', 'y'], 5 | [0, 1], 6 | [1, 7 | [[3, 8 | [0, 1073741826, 0, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[2, 13 | [0, 0, 1073741826]]] 14 | ]]]]]: 15 | -------------------------------------------------------------------------------- /output_files/multy-qq.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 2, 3 | 3, 4 | ['x', 'y'], 5 | [0, 1], 6 | [1, 7 | [[3, [0, -1, 0, 1]], 8 | [2, [-1, 0, 3]], 9 | [ 10 | [[2, [0, 0, -2]], 11 | 1] 12 | ]]]]]: 13 | -------------------------------------------------------------------------------- /output_files/nf-16.res: -------------------------------------------------------------------------------- 1 | [39314*x3^2+13107*x2^1*x4^1+39319*x3^1*x4^1+39318*x4^2+13105*x2^1*x5^1+52422*x3^1*x5^1+39323*x4^1*x5^1+39318*x5^2+13104*x2^1+52416*x3^1+52415*x4^1+52415*x5^1, 2 | 26206*x3^2+52412*x2^1*x4^1+26200*x3^1*x4^1+26202*x4^2+52418*x2^1*x5^1+13101*x3^1*x5^1+26200*x4^1*x5^1+26206*x5^2+52417*x2^1+13105*x3^1+13106*x4^1+13105*x5^1]: 3 | -------------------------------------------------------------------------------- /output_files/nf-31.res: -------------------------------------------------------------------------------- 1 | [858993463*x3^2+644245099*x2^1*x4^1+858993468*x3^1*x4^1+858993467*x4^2+644245097*x2^1*x5^1+429496736*x3^1*x5^1+858993472*x4^1*x5^1+858993467*x5^2+644245096*x2^1+429496730*x3^1+429496729*x4^1+429496729*x5^1, 2 | 214748363*x3^2+429496726*x2^1*x4^1+214748357*x3^1*x4^1+214748359*x4^2+429496732*x2^1*x5^1+644245093*x3^1*x5^1+214748357*x4^1*x5^1+214748363*x5^2+429496731*x2^1+644245097*x3^1+644245098*x4^1+644245097*x5^1]: 3 | -------------------------------------------------------------------------------- /output_files/nf-8.res: -------------------------------------------------------------------------------- 1 | [62*x3^2+23*x2^1*x4^1+67*x3^1*x4^1+66*x4^2+21*x2^1*x5^1+86*x3^1*x5^1+71*x4^1*x5^1+66*x5^2+20*x2^1+80*x3^1+79*x4^1+79*x5^1, 2 | 38*x3^2+76*x2^1*x4^1+32*x3^1*x4^1+34*x4^2+82*x2^1*x5^1+17*x3^1*x5^1+32*x4^1*x5^1+38*x5^2+81*x2^1+21*x3^1+22*x4^1+21*x5^1]: 3 | -------------------------------------------------------------------------------- /output_files/nf-lm-bug.res: -------------------------------------------------------------------------------- 1 | [1*a^3, 2 | 2*a^3+2*a^1+99*c^1, 3 | 99*c^2+4*a^1+100*c^1+5]: 4 | -------------------------------------------------------------------------------- /output_files/nonradical_radicalshape-31.res: -------------------------------------------------------------------------------- 1 | [0, [1073741827, 2 | 3, 3 | 3, 4 | ['x', 'y', 'A'], 5 | [-33,97,92], 6 | [1, 7 | [[1, 8 | [0, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[-1, 13 | [0]]], 14 | [[-1, 15 | [0]]] 16 | ]]]]]: 17 | -------------------------------------------------------------------------------- /output_files/nonradical_radicalshape-no-square-31.c0.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/algebraic-solving/msolve/c1890f8fd3d5f2b13754a441875bffe5c369168d/output_files/nonradical_radicalshape-no-square-31.c0.res -------------------------------------------------------------------------------- /output_files/nonradical_radicalshape-no-square-qq.p3.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[-11 / 2^4, -5 / 2^3], [-11 / 2^4, -5 / 2^3], [11 / 2^4, 3 / 2^2]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/nonradical_radicalshape-no-square-qq.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 4, 3 | 8, 4 | ['x', 'y', 'z', 'A'], 5 | [7/864,75/864,-18/864,117/864], 6 | [1, 7 | [[1, [-1386893, 2391291]], 8 | [0, [2391291]], 9 | [ 10 | [[0, [1513476]], 11 | 1], 12 | [[0, [1610163]], 13 | 1], 14 | [[0, [-1717218]], 15 | 1] 16 | ]]]]]: 17 | -------------------------------------------------------------------------------- /output_files/nonradical_radicalshape-qq.p3.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[3, 3], [1, 1]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/nonradical_radicalshape-qq.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 2, 3 | 6, 4 | ['y', 'x'], 5 | [0, 1], 6 | [1, 7 | [[1, [-3, 1]], 8 | [0, [1]], 9 | [ 10 | [[0, [-1]], 11 | 1] 12 | ]]]]]: 13 | -------------------------------------------------------------------------------- /output_files/nonradical_shape-31.res: -------------------------------------------------------------------------------- 1 | [0, [1073741831, 2 | 5, 3 | 11, 4 | ['x1', 'x2', 'x3', 'x4', 'A'], 5 | [-33,97,92,98,-35], 6 | [1, 7 | [[8, 8 | [806088589, 773290875, 392047488, 448660708, 158395478, 796667501, 603542507, 839056289, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[7, 13 | [469066563, 872087359, 789792069, 653598341, 610549694, 461793855, 822207508, 424465292]]], 14 | [[7, 15 | [1012630728, 518320180, 397734047, 582252170, 175855446, 823918569, 370262236, 364408665]]], 16 | [[7, 17 | [490926065, 926842152, 356918246, 830759452, 836862130, 786699753, 119267664, 1014874695]]], 18 | [[7, 19 | [1028528857, 28102185, 545211281, 584060027, 779823490, 573635187, 521548435, 1853246]]] 20 | ]]]]]: 21 | -------------------------------------------------------------------------------- /output_files/nonradical_shape-qq.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 4, 3 | 18, 4 | ['x1', 'x2', 'x3', 'x4'], 5 | [0, 0, 0, 1], 6 | [1, 7 | [[4, [-9, 3, 8, 17, 5]], 8 | [3, [3, 16, 51, 20]], 9 | [ 10 | [[3, [-1482814286602093677141, 988542638259789810687, 988542578445336685687, 2471358263210272159703]], 11 | 729980468750000], 12 | [[3, [1232738891496063441669, -821825860583780645483, -821825947741983770483, -2054564712986826509027]], 13 | 145996093750000], 14 | [[3, [7296357631087314445713, -4864238186321243499466, -4864238670177444671341, -12160596416621204429554]], 15 | 221405029296875] 16 | ]]]]]: 17 | -------------------------------------------------------------------------------- /output_files/one-16.res: -------------------------------------------------------------------------------- 1 | [-1]: 2 | -------------------------------------------------------------------------------- /output_files/one-31.res: -------------------------------------------------------------------------------- 1 | [-1]: 2 | -------------------------------------------------------------------------------- /output_files/one-qq.g2.res: -------------------------------------------------------------------------------- 1 | #Reduced Groebner basis data 2 | #--- 3 | #field characteristic: 0 4 | #variable order: x, y, z 5 | #monomial order: graded reverse lexicographical 6 | #length of basis: 1 element 7 | #--- 8 | [1 9 | ]: 10 | -------------------------------------------------------------------------------- /output_files/one-qq.res: -------------------------------------------------------------------------------- 1 | [-1]: 2 | -------------------------------------------------------------------------------- /output_files/radical_shape-31.res: -------------------------------------------------------------------------------- 1 | [0, [1073741827, 2 | 3, 3 | 4, 4 | ['x', 'y', 'z'], 5 | [0, 0, 1], 6 | [1, 7 | [[4, 8 | [1073741826, 1073741826, 1073741826, 1073741826, 1]], 9 | [0, 10 | [1]], 11 | [ 12 | [[3, 13 | [1073741820, 1073741822, 1073741824, 1073741825]]], 14 | [[3, 15 | [1, 1073741826, 1, 1073741826]]] 16 | ]]]]]: 17 | -------------------------------------------------------------------------------- /output_files/radical_shape-qq.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 3, 3 | 4, 4 | ['x', 'y', 'z'], 5 | [0, 0, 1], 6 | [1, 7 | [[4, [-1, -1, -1, -1, 1]], 8 | [3, [-1, -2, -3, 4]], 9 | [ 10 | [[3, [-22, -24, -17, -56]], 11 | 1], 12 | [[3, [-7, -4, -9, -1]], 13 | 1] 14 | ]]]]]: 15 | -------------------------------------------------------------------------------- /output_files/realroot-extraction-exact-root.p256.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[2644525230407001319669759 / 2^225, 2644525230407001319669759 / 2^225], [1 / 2^150, 1 / 2^150]], [[2644525230407001319669761 / 2^225, 2644525230407001319669761 / 2^225], [1 / 2^150, 1 / 2^150]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/realroot-extraction-exact-root.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[2644525230407001319669759 / 2^225, 2644525230407001319669759 / 2^225], [1 / 2^150, 1 / 2^150]], [[2644525230407001319669761 / 2^225, 2644525230407001319669761 / 2^225], [1 / 2^150, 1 / 2^150]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/realroot1.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[680564733841876926926749214863536422911 / 2^641, 680564733841876926926749214863536422913 / 2^641], [3331021618788898068800055232841681007971 / 2^128, 832755404697224517200013808210420251993 / 2^126], [-159054272772075454791813843974719060419 / 2^125, -1272434182176603638334510751797752483351 / 2^128], [-5005080667327678093976840349995031334612085417 / 2^149, -10010161334655356187953680699990062669224170833 / 2^150]], [[680564733841876926926749214863536422901 / 2^641, 680564733841876926926749214863536422923 / 2^641], [-218926025160010639288044820654496138627 / 2^126, -1710359571562583119437850161363251083 / 2^119], [-1182483475348953172361680291533996441397 / 2^128, -147810434418619146545210036441749555173 / 2^125], [-131743878534245914672234329431702004798991 / 2^134, -65871939267122957336117164715851002399495 / 2^133]], [[680564733841876926926749214863536422901 / 2^641, 680564733841876926926749214863536422923 / 2^641], [-938228283853539145855574665870064427115 / 2^127, -938228283853539145855574665870064427105 / 2^127], [24615470183222529751266921176376867325 / 2^128, 49230940366445059502533842352753734677 / 2^129], [-1276674957308716246643468125582223208451 / 2^128, -81707197267757839785181960037262285340863 / 2^134]], [[680564733841876926926749214863536422911 / 2^641, 680564733841876926926749214863536422913 / 2^641], [-841163466656917597615029034157611572619 / 2^127, -1682326933313835195230058068315223145237 / 2^128], [119362695597815541271248082166885526263 / 2^124, 1909803129565048660339969314670168420209 / 2^128], [-13176193044822943031961513278500639186668490962664071572429 / 2^192, -3294048261205735757990378319625159796667122740666017893107 / 2^190]], [[680564733841876926926749214863536422911 / 2^641, 680564733841876926926749214863536422913 / 2^641], [-4134979643385682623057124934752951502209 / 2^128, -32304528463950645492633788552757433611 / 2^121], [3377102135951430298846972678835021583803 / 2^128, 844275533987857574711743169708755395951 / 2^126], [6122219840627085521230307207178233377472800364163988255803369 / 2^199, 3061109920313542760615153603589116688736400182081994127901685 / 2^198]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/reals_dim0-extract.p256.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[0, 1 / 2^256], [519917134689817603033657631268209116893594431418786718786796295190792299532838017448719672487237 / 2^256, 519917134689817603033657631268209116893594431418786718786796295190795074362771255667154139299959 / 2^256], [-122680776115122206535372896123735420078981053427312491540840002588575571029431163791927 / 2^255, -122680776115122206535372896123735420078981053427312491540840002588575034723503174008697 / 2^255]], [[3296230464788315386465869935756989972355760245748239886080472022217939618589888573 / 2^298, 1648115232394157693232934967878494986177880122874119943040236011108969809294944287 / 2^297], [32494820909635121088607613285802912314138975534102185360308903650070386143175589848297296049441 / 2^252, 129979283638540484354430453143211649256555902136408741441235614600281544572702359550920004339755 / 2^254], [-67812225174093121439711693877270570394571799646342425291773948374865826809868144295091 / 2^256, -67812225174093121439711693877270570394571799646342425291773948374865826809868144158935 / 2^256]], [[83320342010616637375018851338091380349471783619758808078571159924293651331279773563688461069450776257613299589972936420113425 / 2^352, 41660171005308318687509425669045690174735891809879404039285579962146825665639886781844230534725388128806649794986468210056713 / 2^351], [133664415425220411138138123911179276716266457521942164021006483243122595733165 / 2^412, 133664415425220411138138123911529651663233143616187362019581605901082670804527 / 2^412], [248149751416945626749997415309406611312722995309269984290337356519393903204494483933561 / 2^255, 496299502833891253499994830618813222625445990618539968580674713038787806408988967867123 / 2^256]], [[5207521378411890839043616221456297941275009067969364617947894695831914780531912586473830872887405930177318775542475475991533 / 2^348, 20830085513647563356174464885825191765100036271877458471791578783327659122127650345895323491549623720709275102169901903966133 / 2^350], [49731356329542476711896505370091576387090225625519379687017124343723202169973 / 2^283, 99462712659084953423793010740183152774180451251038759374034248687465160767189 / 2^284], [17145704655330412261616220319033754699151768858797688388601995476914741549234308519263 / 2^253, 137165637242643298092929762552270037593214150870381507108815963815317932393874468154105 / 2^256]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/reals_dim0-extract.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[0, 1 / 2^150], [381974784202244349956839665734594332521749789580664219171 / 2^126, 1527899136808977399827358662938377330748570168253796449417 / 2^128], [-721052796389099865046191244931999226158987442995 / 2^128, -180263199097274966261547811232999806475814212091 / 2^126]], [[4843375362958734771737638256911840593766119 / 2^169, 9686750725917469543475276513823681187532239 / 2^170], [1527899136410321228355934202787899588177206065462058856331 / 2^128, 763949568205160614177967101393949794088603348192669712147 / 2^127], [-199282219022088440686162039481640237511048719929 / 2^128, -199282219022088440686162039481640237511048583773 / 2^128]], [[7651764948598497941042677560217312276625073805751735950393124280925106370292304800339 / 2^219, 244856478355151934113365681926953992852002361784055550412579976989603403849353753610849 / 2^224], [-326312096958120603164330031039120348007 / 2^255, 326312098421431072463046850528869422243 / 2^255], [729246577371436297993831230214579549053117663821 / 2^127, 1458493154742872595987662460429159098106235327643 / 2^128]], [[3825882476318418394412977397948182036518089701588174161591327117631060314986098459487 / 2^218, 61214119621094694310607638367170912584289435225410786585461233882096965039777575351793 / 2^222], [584589284241073925239656553934891876247 / 2^157, 584589284241073925239656553972404730733 / 2^157], [100773394816041478750500991846530653114714285805 / 2^126, 403093579264165915002003967386122612458857143221 / 2^128]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/reals_dim0-swapvar.p256.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[1, 1], [-2, -2], [3, 3]], [[1, 1], [2, 2], [3, 3]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/reals_dim0-swapvar.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[1, 1], [-2, -2], [3, 3]], [[1, 1], [2, 2], [3, 3]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/reals_dim0.p256.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[146037431636250526144518673746292280049949948268402333212004702635786542424221 / 2^257, 292074863272501052289037347492584560099899896536804666424009405271573084848447 / 2^258], [292074863272501052289037347492584560099899896536804666424009405271573084848443 / 2^259, 292074863272501052289037347492584560099899896536804666424009405271573084848447 / 2^259], [-60490684797868661441895377475208744393359927205523538345094237255746825568573 / 2^258, -483925478382949291535163019801669955146879417644188306760753898045974604548583 / 2^261]], [[1, 1], [0, 0], [0, 0]], [[209853171082308949754983487931547962222622958919354534851118908368258147833925 / 2^259, 104926585541154474877491743965773981111311479459677267425559454184129073917139 / 2^258], [6557911596322154679843233997860873819456967466229829214097465886508067119813 / 2^255, 209853171082308949754983487931547962222622958919354534851118908368258147834191 / 2^260], [63328796466738957984825113025800917297614244935801930326677856915848592681411 / 2^257, 126657592933477915969650226051601834595228489871603860653355713831697185362823 / 2^258]], [[2412335192444087404657728854347664746943124680534178417488699666831523534165 / 2^252, 154389452316421593898094646678250543804359979554187418719276778677217506186603 / 2^258], [-29464951279138496156890831006675047980519594312238893527897688787727894595877 / 2^510, 248125905508534704479080682161474088257007109997801208655980537159813849228437 / 2^513], [617557809265686375592378586713002175217439918216749674877107114708870024746325 / 2^260, 308778904632843187796189293356501087608719959108374837438553557354435012373163 / 2^259]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/reals_dim0.res: -------------------------------------------------------------------------------- 1 | [0, [1, 2 | [[[107291359935630315248585097660753910587 / 2^127, 858330879485042521988680781286031284701 / 2^130], [107291359935630315248585097660753910587 / 2^128, 214582719871260630497170195321507821175 / 2^129], [-355532291286331190123863132844989723573 / 2^131, -1422129165145324760495452531379958894291 / 2^133]], [[1, 1], [0, 0], [0, 0]], [[616703042773492991200064316960062308981 / 2^131, 308351521386746495600032158480031154667 / 2^130], [616703042773492991200064316960062309069 / 2^132, 616703042773492991200064316960062309245 / 2^132], [93053303113782607831679264095876317083 / 2^128, 372213212455130431326717056383505268333 / 2^130]], [[7089215977519551322153637654828504405 / 2^124, 453709822561251284617832809909024281963 / 2^130], [-173179418879406182298324576996524893331 / 2^255, 91147062568108516999118198419223628069 / 2^254], [1814839290245005138471331239636097127765 / 2^132, 907419645122502569235665619818048563883 / 2^131]]] 3 | ]]: 4 | -------------------------------------------------------------------------------- /output_files/test-lifting2.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 4, 3 | 12, 4 | ['z4', 'z2', 'z3', 'z1'], 5 | [0, 0, 0, 1], 6 | [1, 7 | [[12, [954400275976881890656496493468196, 0, -8769228859579076653243839811116, 0, -13825428332828178698016633615, 0, -4234227875953628186201000, 0, 882295047240569024460, 0, -44336121234223056, 0, 674888538256]], 8 | [11, [0, -17538457719158153306487679622232, 0, -55301713331312714792066534460, 0, -25405367255721769117206000, 0, 7058360377924552195680, 0, -443361212342230560, 0, 8098662459072]], 9 | [ 10 | [[11, [-140388335228902953292816611230880, 0, -543724407368134031960871146880, 0, -859287835827665764889123400, 0, -162465667765579004616120, 0, 23037601517822409360, 0, -576171791050080, 0]], 11 | 1], 12 | [[11, [3747259079800783661222251681618176, 0, -32667476175829102314252615890760, 0, -41591900477393120827490426340, 0, -9274100316890418666622680, 0, 1299254284401298136640, 0, -32695041348133536, 0]], 13 | 1], 14 | [[11, [329685435248128178423905509721184, 0, -3409845542333367222605351272528, 0, -4396977170900300709221090608, 0, -997922613695863251046088, 0, 138526448270677411792, 0, -3477004422539552, 0]], 15 | 1] 16 | ]]]]]: 17 | -------------------------------------------------------------------------------- /output_files/xy-qq.res: -------------------------------------------------------------------------------- 1 | [0, [0, 2 | 2, 3 | 1, 4 | ['x', 'y'], 5 | [0, 1], 6 | [1, 7 | [[1, [0, 1]], 8 | [0, [1]], 9 | [ 10 | [[0, [0]], 11 | 1] 12 | ]]]]]: 13 | -------------------------------------------------------------------------------- /src/crt/mpz_CRT_ui.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | /** 22 | 23 | This implementation is a (very) slight modification of the functions in FLINT. 24 | 25 | **/ 26 | 27 | #include "ulong_extras.h" 28 | 29 | void 30 | _mpz_CRT_ui_precomp(mpz_t out, const mpz_t r1, const mpz_t m1, uint64_t r2, 31 | uint64_t m2, mp_limb_t m2inv, const mpz_t m1m2, mp_limb_t c, 32 | int sign) 33 | { 34 | mp_limb_t r1mod, s; 35 | mpz_t tmp; 36 | mpz_init(tmp); 37 | 38 | 39 | if (mpz_sgn(r1) < 0) 40 | mpz_add(tmp, r1, m1); 41 | else 42 | mpz_set(tmp, r1); 43 | 44 | r1mod = mpz_fdiv_ui(tmp, m2); 45 | s = n_submod(r2, r1mod, m2); 46 | s = n_mulmod2_preinv(s, c, m2, m2inv); 47 | mpz_addmul_ui(tmp, m1, s); 48 | 49 | if (sign) 50 | { 51 | mpz_sub(out, tmp, m1m2); 52 | if (mpz_cmpabs(tmp, out) <= 0) 53 | mpz_swap(out, tmp); 54 | } 55 | else 56 | { 57 | mpz_swap(out, tmp); 58 | } 59 | mpz_clear(tmp); 60 | } 61 | 62 | /** 63 | 64 | returns out s.t. 0 < out < m1 x m2 (if sign=0) or -(m1 x m2) / 2 < out < (m1 x m2) / 2 65 | out mod m1 = r1 and out mod m2 = r2 66 | 67 | **/ 68 | 69 | void mpz_CRT_ui(mpz_t out, const mpz_t r1, const mpz_t m1, 70 | uint64_t r2, uint64_t m2, const mpz_t m1m2, 71 | mpz_t tmp, int sign) 72 | { 73 | mp_limb_t c; 74 | 75 | c = mpz_fdiv_ui(m1, m2); 76 | c = n_invmod(c, m2); 77 | 78 | if (c == 0) 79 | { 80 | fprintf(stderr, "Exception (fmpz_CRT_ui). m1 not invertible modulo m2.\n"); 81 | exit(1); 82 | } 83 | 84 | _mpz_CRT_ui_precomp(out, r1, m1, r2, m2, n_preinvert_limb(m2), 85 | m1m2, c, sign); 86 | 87 | } 88 | -------------------------------------------------------------------------------- /src/crt/ulong_extras.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2006, 2007, 2008, 2009, 2016 William Hart 3 | Copyright (C) 2008, Peter Shrimpton 4 | Copyright (C) 2009, Tom Boothby 5 | Copyright (C) 2010, Fredrik Johansson 6 | 7 | This file is part of FLINT. 8 | 9 | FLINT is free software: you can redistribute it and/or modify it under 10 | the terms of the GNU Lesser General Public License (LGPL) as published 11 | by the Free Software Foundation; either version 2.1 of the License, or 12 | (at your option) any later version. See . 13 | */ 14 | 15 | #ifndef ULONG_EXTRAS_H 16 | #define ULONG_EXTRAS_H 17 | 18 | #ifdef ULONG_EXTRAS_INLINES_C 19 | #define ULONG_EXTRAS_INLINE FLINT_DLL 20 | #else 21 | #define ULONG_EXTRAS_INLINE static __inline__ 22 | #endif 23 | 24 | #include 25 | #include "longlong.h" 26 | 27 | #if FLINT64 28 | #define UWORD_MAX_PRIME UWORD(18446744073709551557) 29 | #else 30 | #define UWORD_MAX_PRIME UWORD(4294967291) 31 | #endif 32 | 33 | #define UWORD_HALF (UWORD_MAX / 2 + 1) 34 | 35 | static __inline__ 36 | double n_precompute_inverse(ulong n) 37 | { 38 | return (double) 1 / (double) n; 39 | } 40 | 41 | static __inline__ 42 | ulong n_preinvert_limb(ulong n) 43 | { 44 | ulong norm, ninv; 45 | 46 | count_leading_zeros(norm, n); 47 | invert_limb(ninv, n << norm); 48 | 49 | return ninv; 50 | } 51 | 52 | /* ulong n_ll_mod_preinv(ulong a_hi, ulong a_lo, */ 53 | /* ulong n, ulong ninv); */ 54 | #include "ulong_extras/ll_mod_preinv.c" 55 | 56 | static __inline__ 57 | ulong n_mulmod2_preinv(ulong a, ulong b, ulong n, ulong ninv) 58 | { 59 | ulong p1, p2; 60 | 61 | /* FLINT_ASSERT(n != 0); */ 62 | 63 | umul_ppmm(p1, p2, a, b); 64 | return n_ll_mod_preinv(p1, p2, n, ninv); 65 | } 66 | 67 | static __inline__ 68 | ulong n_mulmod2(ulong a, ulong b, ulong n) 69 | { 70 | ulong p1, p2, ninv; 71 | 72 | /* FLINT_ASSERT(n != 0); */ 73 | 74 | ninv = n_preinvert_limb(n); 75 | umul_ppmm(p1, p2, a, b); 76 | return n_ll_mod_preinv(p1, p2, n, ninv); 77 | } 78 | 79 | static __inline__ 80 | ulong n_addmod(ulong x, ulong y, ulong n) 81 | { 82 | /* FLINT_ASSERT(x < n); */ 83 | /* FLINT_ASSERT(y < n); */ 84 | /* FLINT_ASSERT(n != 0); */ 85 | 86 | return (n - y > x ? x + y : x + y - n); 87 | } 88 | 89 | static __inline__ 90 | ulong n_submod(ulong x, ulong y, ulong n) 91 | { 92 | /* FLINT_ASSERT(x < n); */ 93 | /* FLINT_ASSERT(y < n); */ 94 | /* FLINT_ASSERT(n != 0); */ 95 | return (y > x ? x - y + n : x - y); 96 | } 97 | 98 | 99 | static __inline__ 100 | ulong n_negmod(ulong x, ulong n) 101 | { 102 | /* FLINT_ASSERT(x < n); */ 103 | /* FLINT_ASSERT(n != 0); */ 104 | 105 | return n_submod(0, x, n); 106 | } 107 | 108 | 109 | /* static __inline__ ulong n_gcdinv(ulong * a, ulong x, ulong y); */ 110 | #include "ulong_extras/gcdinv.c" 111 | 112 | static __inline__ 113 | ulong n_invmod(ulong x, ulong y) 114 | { 115 | ulong r, g; 116 | 117 | g = n_gcdinv(&r, x, y); 118 | if (g != 1) 119 | flint_throw(FLINT_IMPINV, "Cannot invert modulo %wd*%wd\n", g, g/y); 120 | 121 | return r; 122 | } 123 | 124 | 125 | 126 | #endif 127 | -------------------------------------------------------------------------------- /src/fglm/Makefile.am: -------------------------------------------------------------------------------- 1 | noinst_LTLIBRARIES = libfglm.la 2 | libfglm_la_SOURCES = fglm_core.c 3 | libfglm_ladir = $(includedir)/msolve/fglm 4 | libfglm_la_HEADERS = fglm.h 5 | libfglm_la_CFLAGS = $(SIMD_FLAGS) $(CPUEXT_FLAGS) $(OPENMP_CFLAGS) 6 | 7 | EXTRA_DIST = fglm.h \ 8 | libfglm.h \ 9 | berlekamp_massey.c \ 10 | data_fglm.c \ 11 | fglm_core.c \ 12 | inner-product.c \ 13 | matrix-mult.c \ 14 | linalg-fglm.c 15 | -------------------------------------------------------------------------------- /src/fglm/fglm.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Vincent Neiger 20 | * Mohab Safey El Din */ 21 | 22 | 23 | param_t *nmod_fglm_compute(sp_matfglm_t *, mod_t, nvars_t, 24 | szmat_t, nvars_t *, uint32_t *, nvars_t*, int, md_t *); 25 | param_t *nmod_fglm_guess_colon(sp_matfglmcol_t *, const mod_t, 26 | CF_t *, CF_t **, const nvars_t, 27 | const nvars_t, nvars_t *, uint32_t *, nvars_t *, int, 28 | md_t *); 29 | param_t *nmod_fglm_compute_trace_data(sp_matfglm_t *, mod_t, szmat_t, 30 | szmat_t, 31 | szmat_t, 32 | nvars_t *, 33 | uint32_t *, 34 | nvars_t*, 35 | int, 36 | fglm_data_t **, 37 | fglm_bms_data_t **, 38 | int *, 39 | md_t *); 40 | int nmod_fglm_compute_apply_trace_data(sp_matfglm_t *, 41 | const mod_t, 42 | param_t *, 43 | const long, 44 | const long, 45 | const long, 46 | nvars_t *, 47 | uint32_t *, 48 | nvars_t*, 49 | fglm_data_t *, 50 | fglm_bms_data_t *, 51 | const long, 52 | const int, 53 | md_t *); 54 | 55 | void display_fglm_param(FILE *, param_t *); 56 | void display_fglm_param_maple(FILE *, param_t *); 57 | void display_nmod_poly(FILE *, nmod_poly_t); 58 | -------------------------------------------------------------------------------- /src/fglm/libfglm.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #include "fglm.h" 22 | -------------------------------------------------------------------------------- /src/msolve/Makefile.am: -------------------------------------------------------------------------------- 1 | lib_LTLIBRARIES = libmsolve.la 2 | libmsolve_la_SOURCES = libmsolve.c 3 | libmsolve_ladir = $(includedir)/msolve/msolve 4 | libmsolve_la_HEADERS = msolve-data.h msolve.h 5 | libmsolve_la_CFLAGS = $(SIMD_FLAGS) $(CPUEXT_FLAGS) $(OPENMP_CFLAGS) 6 | libmsolve_la_LDFLAGS = -version-info $(LT_VERSION) 7 | libmsolve_la_LIBADD = ../usolve/libusolve.la ../fglm/libfglm.la ../neogb/libneogb.la 8 | 9 | EXTRA_DIST = msolve-data.h \ 10 | msolve.h \ 11 | msolve-data.c \ 12 | duplicate.c \ 13 | hilbert.c \ 14 | linear.c \ 15 | lifting.c \ 16 | lifting-gb.c \ 17 | iofiles.c \ 18 | msolve.c \ 19 | primes.c \ 20 | ../crt/longlong.h \ 21 | ../crt/ulong_extras.h \ 22 | ../crt/mpq_reconstruct.c \ 23 | ../crt/mpz_CRT_ui.c \ 24 | ../upolmat/nmod_mat_extra.h \ 25 | ../upolmat/nmod_mat_poly_arith.c \ 26 | ../upolmat/nmod_mat_poly_mbasis.c \ 27 | ../upolmat/nmod_mat_poly_shift.c \ 28 | ../upolmat/nmod_poly_mat_utils.c \ 29 | ../upolmat/nmod_mat_left_nullspace.c \ 30 | ../upolmat/nmod_mat_poly.h \ 31 | ../upolmat/nmod_mat_poly_mem.c \ 32 | ../upolmat/nmod_poly_mat_pmbasis.c \ 33 | ../upolmat/nmod_poly_mat_utils.h \ 34 | ../upolmat/nmod_mat_permute_rows.c \ 35 | ../upolmat/nmod_mat_poly_io.c \ 36 | ../upolmat/nmod_mat_poly_set_from.c \ 37 | ../upolmat/nmod_poly_mat_pmbasis.h 38 | -------------------------------------------------------------------------------- /src/msolve/libmsolve.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #if HAVE_CONFIG_H 22 | #include "config.h" 23 | #endif 24 | 25 | #include "msolve-data.h" 26 | #include "msolve-data.c" 27 | #include "iofiles.c" 28 | #include "hilbert.c" 29 | #include "primes.c" 30 | #include "../crt/mpz_CRT_ui.c" 31 | #include "../crt/mpq_reconstruct.c" 32 | #include "../usolve/data_usolve.c" 33 | #include "../usolve/libusolve.h" 34 | #include "../neogb/libneogb.h" 35 | #include "msolve.c" 36 | 37 | -------------------------------------------------------------------------------- /src/msolve/msolve-data.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | static void initialize_mstrace(mstrace_t msd, md_t *st, bs_t *bs){ 22 | msd->lp = (primes_t *)calloc(st->nthrds, sizeof(primes_t)); 23 | 24 | /******************* 25 | * initialize basis 26 | *******************/ 27 | 28 | msd->bad_primes = calloc((unsigned long)st->nthrds, sizeof(int)); 29 | 30 | /* initialize tracers */ 31 | msd->btrace = (trace_t **)calloc(st->nthrds, 32 | sizeof(trace_t *)); 33 | msd->btrace[0] = initialize_trace(bs, st); 34 | /* initialization of other tracers is done through duplication */ 35 | 36 | msd->num_gb = (int32_t *)calloc(st->nthrds, sizeof(int32_t)); 37 | msd->leadmons_ori = (int32_t **)calloc(st->nthrds, sizeof(int32_t *)); 38 | msd->leadmons_current = (int32_t**)calloc(st->nthrds, sizeof(int32_t *)); 39 | 40 | /* array to store one monomial */ 41 | msd->mgb = calloc(st->nvars, sizeof(uint32_t)); 42 | 43 | mpz_init(msd->mod_p); 44 | mpz_set_ui(msd->mod_p, 1); 45 | 46 | mpz_init(msd->prod_p); 47 | mpz_set_ui(msd->prod_p, 1); 48 | 49 | } 50 | 51 | static void free_mstrace(mstrace_t msd, md_t *st){ 52 | free_lucky_primes(&msd->lp); 53 | free(msd->lp); 54 | 55 | free(msd->bad_primes); 56 | 57 | for(int i = 0; i < st->nthrds; ++i){ 58 | if(msd->btrace[i] != NULL){ 59 | free_trace(&(msd->btrace[i])); 60 | } 61 | } 62 | free(msd->btrace); 63 | 64 | free(msd->num_gb); 65 | 66 | for(int i = 0; i < st->nthrds; ++i){ 67 | if(msd->leadmons_ori[i] != NULL){ 68 | free(msd->leadmons_ori[i]); 69 | } 70 | } 71 | free(msd->leadmons_ori); 72 | 73 | for(int i = 0; i < st->nthrds; ++i){ 74 | if(msd->leadmons_current[i] != NULL){ 75 | free(msd->leadmons_current[i]); 76 | } 77 | } 78 | free(msd->leadmons_current); 79 | 80 | free(msd->mgb); 81 | 82 | mpz_clear(msd->mod_p); 83 | mpz_clear(msd->prod_p); 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/msolve/primes.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | uint32_t primes_table[10] = {2, 3, 4, 5, 7, 11, 13, 17, 19, 23}; 22 | int is_prime(uint32_t n){ 23 | for(int i = 0; i < 10; i++){ 24 | if(n % primes_table[i] == 0){ 25 | return 0; 26 | } 27 | } 28 | for(uint32_t i = 5; i * i <= n; i += 6){ 29 | if((n % i)==0) return 0; 30 | if( (n % (i+2)) == 0) return 0; 31 | } 32 | return 1; 33 | } 34 | 35 | // assumes n >= 2 36 | uint32_t next_prime(uint32_t n){ 37 | uint32_t cand = n + 1; 38 | while(!is_prime(cand)) cand++; 39 | return cand; 40 | } 41 | -------------------------------------------------------------------------------- /src/neogb/Makefile.am: -------------------------------------------------------------------------------- 1 | lib_LTLIBRARIES = libneogb.la 2 | libneogb_la_SOURCES = libneogb.h gb.c 3 | libneogb_ladir = $(includedir)/msolve/neogb 4 | libneogb_la_HEADERS =libneogb.h basis.h data.h engine.h f4.h sba.h hash.h \ 5 | io.h modular.h nf.h f4sat.h sort_r.h meta_data.h \ 6 | tools.h update.h 7 | libneogb_la_LDFLAGS = -version-info $(LT_VERSION) 8 | libneogb_la_CFLAGS = $(SIMD_FLAGS) $(CPUEXT_FLAGS) $(OPENMP_CFLAGS) 9 | 10 | EXTRA_DIST = basis.h \ 11 | data.h \ 12 | engine.h \ 13 | f4.h \ 14 | sba.h \ 15 | hash.h \ 16 | io.h \ 17 | modular.h \ 18 | nf.h \ 19 | f4sat.h \ 20 | sort_r.h \ 21 | meta_data.h \ 22 | tools.h \ 23 | update.h \ 24 | basis.c \ 25 | convert.c \ 26 | data.c \ 27 | engine.c \ 28 | f4.c \ 29 | f4sat.c \ 30 | sba.c \ 31 | hash.c \ 32 | io.c \ 33 | la_ff_16.c \ 34 | la_ff_32.c \ 35 | la_ff_8.c \ 36 | la_qq.c \ 37 | modular.c \ 38 | nf.c \ 39 | order.c \ 40 | meta_data.c \ 41 | symbol.c \ 42 | tools.c \ 43 | update.c 44 | -------------------------------------------------------------------------------- /src/neogb/basis.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #ifndef GB_BASIS_H 22 | #define GB_BASIS_H 23 | 24 | #include "data.h" 25 | 26 | void free_basis_without_hash_table( 27 | bs_t **bsp 28 | ); 29 | 30 | void free_basis_and_only_local_hash_table_data( 31 | bs_t **bsp 32 | ); 33 | 34 | void free_basis( 35 | bs_t **bsp 36 | ); 37 | 38 | void remove_content_of_initial_basis( 39 | bs_t *bs 40 | ); 41 | 42 | bs_t *initialize_basis( 43 | md_t *md 44 | ); 45 | 46 | bs_t *copy_basis_mod_p( 47 | const bs_t * const gbs, 48 | const md_t * const st 49 | ); 50 | 51 | void check_enlarge_basis( 52 | bs_t *bs, 53 | const len_t added, 54 | const md_t *st 55 | ); 56 | #endif 57 | -------------------------------------------------------------------------------- /src/neogb/engine.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | #ifndef GB_ENGINE_H 23 | #define GB_ENGINE_H 24 | 25 | #include "data.h" 26 | 27 | int initialize_gba_input_data( 28 | bs_t **bsp, 29 | ht_t **bhtp, 30 | md_t **stp, 31 | /* input values */ 32 | const int32_t *lens, 33 | const int32_t *exps, 34 | const void *cfs, 35 | uint32_t field_char, 36 | int32_t mon_order, 37 | int32_t elim_block_len, 38 | int32_t nr_vars, 39 | int32_t nr_gens, 40 | int32_t nr_nf, 41 | int32_t ht_size, 42 | int32_t nr_threads, 43 | int32_t max_nr_pairs, 44 | int32_t reset_ht, 45 | int32_t la_option, 46 | int32_t use_signatures, 47 | int32_t reduce_gb, 48 | int32_t pbm_file, 49 | int32_t truncate_lifting, 50 | int32_t info_level 51 | ); 52 | 53 | bs_t *core_gba( 54 | bs_t *bs, 55 | md_t *md, 56 | int32_t *errp, 57 | const len_t fc 58 | ); 59 | 60 | int64_t export_results_from_gba( 61 | /* return values */ 62 | int32_t *bld, /* basis load */ 63 | int32_t **blen, /* length of each poly in basis */ 64 | int32_t **bexp, /* basis exponent vectors */ 65 | void **bcf, /* coefficients of basis elements */ 66 | void *(*mallocp) (size_t), 67 | bs_t **bsp, 68 | ht_t **bhtp, 69 | md_t **stp 70 | ); 71 | 72 | bs_t *gba_trace_learning_phase( 73 | trace_t *trace, /* trace of the GB Algorithm */ 74 | ht_t * tht, /* trace hash table for multipliers */ 75 | const bs_t * const ggb, /* global basis */ 76 | ht_t *gbht, /* global basis hash table, generated 77 | * in this run, used in upcoming runs */ 78 | md_t *gst, /* global statistics */ 79 | const int32_t fc /* characteristic of field */ 80 | ); 81 | 82 | bs_t *gba_trace_application_phase( 83 | trace_t *trace, /* trace of the GB Algorithm */ 84 | ht_t * tht, /* trace hash table for multipliers */ 85 | const bs_t * const ggb, /* global basis */ 86 | ht_t *lbht, /* global basis hash table, generated 87 | * in this run, used in upcoming runs */ 88 | md_t *gst, /* global statistics */ 89 | const int32_t fc /* characteristic of field */ 90 | ); 91 | #endif 92 | -------------------------------------------------------------------------------- /src/neogb/f4.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | #ifndef GB_F4_H 23 | #define GB_F4_H 24 | 25 | #include "data.h" 26 | 27 | void free_f4_julia_result_data( 28 | void (*freep) (void *), 29 | int32_t **blen, /* length of each poly in basis */ 30 | int32_t **bexp, /* basis exponent vectors */ 31 | void **bcf, /* coefficients of basis elements */ 32 | const int64_t ngens, 33 | const int64_t field_char 34 | ); 35 | 36 | int64_t export_f4( 37 | void *(*mallocp) (size_t), 38 | int32_t *bld, /* basis load */ 39 | int32_t **blen, /* length of each poly in basis */ 40 | int32_t **bexp, /* basis exponent vectors */ 41 | void **bcf, /* coefficients of basis elements */ 42 | const int32_t *lens, 43 | const int32_t *exps, 44 | const void *cfs, 45 | const uint32_t field_char, 46 | const int32_t mon_order, 47 | const int32_t elim_block_len, 48 | const int32_t nr_vars, 49 | const int32_t nr_gens, 50 | const int32_t ht_size, 51 | const int32_t nr_threads, 52 | const int32_t max_nr_pairs, 53 | const int32_t reset_hash_table, 54 | const int32_t la_option, 55 | const int32_t reduce_gb, 56 | const int32_t pbm_file, 57 | const int32_t info_level 58 | ); 59 | 60 | int64_t export_results_from_f4( 61 | /* return values */ 62 | int32_t *bld, /* basis load */ 63 | int32_t **blen, /* length of each poly in basis */ 64 | int32_t **bexp, /* basis exponent vectors */ 65 | void **bcf, /* coefficients of basis elements */ 66 | void *(*mallocp) (size_t), 67 | bs_t **bsp, 68 | ht_t **bhtp, 69 | md_t **stp 70 | ); 71 | 72 | bs_t *core_f4( 73 | bs_t *gbs, 74 | md_t *gmd, 75 | int32_t *errp, 76 | const len_t fc 77 | ); 78 | 79 | bs_t *modular_f4( 80 | const bs_t * const ggb, /* global basis */ 81 | ht_t * gbht, /* global basis hash table, shared */ 82 | md_t *gst, /* global statistics */ 83 | const uint32_t fc /* characteristic of field */ 84 | ); 85 | #endif 86 | -------------------------------------------------------------------------------- /src/neogb/f4sat.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | #ifndef GB_F4SAT_H 23 | #define GB_F4SAT_H 24 | 25 | #include "data.h" 26 | #include "f4.h" 27 | 28 | int core_f4sat( 29 | bs_t *gbs, 30 | bs_t *gsat, 31 | md_t *gmd, 32 | int32_t*errp 33 | ); 34 | #endif 35 | -------------------------------------------------------------------------------- /src/neogb/gb.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #if HAVE_CONFIG_H 22 | #include "config.h" 23 | #endif 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | #include "libneogb.h" 30 | #include "data.c" 31 | #include "meta_data.c"/* computational meta data */ 32 | #include "tools.c" /* tools like inversion mod p, 33 | * tracer construction, timings etc. */ 34 | #include "sort_r.h" /* special quicksort implementation */ 35 | #include "hash.c" /* hash table stuff */ 36 | #include "order.c" /* order and comparison procedures */ 37 | #include "basis.c" /* basis and polynomial handling */ 38 | #include "la_ff_8.c" /* finite field linear algebra (8 bit) */ 39 | #include "la_ff_16.c" /* finite field linear algebra (16 bit) */ 40 | #include "la_ff_32.c" /* finite field linear algebra (32 bit) */ 41 | #include "la_qq.c" /* rational linear algebra */ 42 | #include "update.c" /* update process and pairset handling */ 43 | #include "convert.c" /* conversion between hashes and column indices*/ 44 | #include "symbol.c" /* symbolic preprocessing */ 45 | #include "io.c" /* input and output data handling */ 46 | #include "engine.c" /* global, shared parts of gb engine */ 47 | #include "f4.c" /* implemenation of f4 algorithm */ 48 | #include "sba.c" /* implemenation of sba algorithm */ 49 | #include "nf.c" /* implemenation of normal form algorithm */ 50 | #include "f4sat.c" /* implemenation of saturation algorithm */ 51 | #include "modular.c" /* implemenation of modular Groebner for F4 */ 52 | 53 | -------------------------------------------------------------------------------- /src/neogb/hash.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #ifndef GB_HASH_H 22 | #define GB_HASH_H 23 | 24 | #include "data.h" 25 | 26 | /* we have three different hash tables: 27 | * 1. one hash table for elements in the basis (bht) 28 | * 2. one hash table for the spairs during the update process (uht) 29 | * 3. one hash table for the multiplied elements during symbolic 30 | * preprocessing (sht) */ 31 | 32 | /* The idea of the structure of the hash table is taken from an 33 | * implementation by Roman Pearce and Michael Monagan in Maple. */ 34 | 35 | void reset_hash_table_indices( 36 | ht_t *ht, 37 | const hi_t * const hcm, 38 | const len_t len 39 | ); 40 | 41 | ht_t *initialize_basis_hash_table( 42 | md_t *st 43 | ); 44 | 45 | ht_t *copy_hash_table( 46 | const ht_t *bht 47 | ); 48 | 49 | ht_t *initialize_secondary_hash_table( 50 | const ht_t * const ht, 51 | const md_t * const md 52 | ); 53 | 54 | void free_shared_hash_data( 55 | ht_t *ht 56 | ); 57 | 58 | void free_hash_table( 59 | ht_t **htp 60 | ); 61 | 62 | void full_free_hash_table( 63 | ht_t **htp 64 | ); 65 | 66 | void calculate_divmask( 67 | ht_t *ht 68 | ); 69 | #endif 70 | -------------------------------------------------------------------------------- /src/neogb/libneogb.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | #ifndef LIBNEOGB_H 23 | #define LIBNEOGB_H 24 | 25 | #include "data.h" 26 | #include "basis.h" 27 | #include "engine.h" 28 | #include "f4.h" 29 | #include "sba.h" 30 | #include "hash.h" 31 | #include "io.h" 32 | #include "modular.h" 33 | #include "nf.h" 34 | #include "f4sat.h" 35 | #include "meta_data.h" 36 | #include "sort_r.h" 37 | #include "tools.h" 38 | #include "update.h" 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/neogb/meta_data.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #ifndef GB_META_DATA_H 22 | #define GB_META_DATA_H 23 | 24 | 25 | #include "data.h" 26 | 27 | md_t *copy_meta_data( 28 | const md_t * const gmd, 29 | const int32_t prime 30 | ); 31 | 32 | md_t *allocate_meta_data( 33 | void 34 | ); 35 | 36 | void print_initial_statistics( 37 | FILE *, 38 | const md_t *md 39 | ); 40 | 41 | void print_tracer_statistics( 42 | FILE *, 43 | const double rt, 44 | const md_t *md 45 | ); 46 | 47 | void get_and_print_final_statistics( 48 | FILE *file, 49 | md_t *md, 50 | const bs_t * const bs 51 | ); 52 | #endif 53 | -------------------------------------------------------------------------------- /src/neogb/nf.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | #ifndef GB_NF_H 23 | #define GB_NF_H 24 | 25 | #include "data.h" 26 | #include "f4.h" 27 | 28 | void get_normal_form_matrix( 29 | const bs_t * const tbr, 30 | ht_t * bht, 31 | const len_t start, 32 | md_t *st, 33 | ht_t **shtp, 34 | hi_t **hcmp, 35 | mat_t **matp 36 | ); 37 | 38 | bs_t *core_nf( 39 | bs_t *tbr, 40 | md_t *md, 41 | const exp_t * const mul, 42 | bs_t *bs, 43 | int32_t *errp 44 | ); 45 | 46 | int64_t export_nf( 47 | void *(*mallocp) (size_t), 48 | /* return values */ 49 | int32_t *nf_ld, /* basis load */ 50 | int32_t **nf_len, /* length of each poly in basis */ 51 | int32_t **nf_exp, /* basis exponent vectors */ 52 | void **nf_cf, /* coefficients of basis elements */ 53 | /* input values */ 54 | const int32_t nr_tbr_gens, 55 | const int32_t *tbr_lens, 56 | const int32_t *tbr_exps, 57 | const void *tbr_cfs, 58 | const int32_t nr_bs_gens, 59 | const int32_t *bs_lens, 60 | const int32_t *bs_exps, 61 | const void *bs_cfs, 62 | const uint32_t field_char, 63 | const int32_t mon_order, 64 | const int32_t elim_block_len, 65 | const int32_t nr_vars, 66 | const int32_t bs_is_gb, 67 | const int32_t nr_threads, 68 | const int32_t info_level 69 | ); 70 | #endif 71 | -------------------------------------------------------------------------------- /src/neogb/sba.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | #ifndef GB_SBA_H 23 | #define GB_SBA_H 24 | 25 | #include "data.h" 26 | 27 | void add_syzygy_schreyer( 28 | crit_t *syz, 29 | const hm_t sm, 30 | const len_t si, 31 | const ht_t * const ht 32 | ); 33 | 34 | int core_sba_schreyer( 35 | bs_t **bsp, 36 | ht_t **bhtp, 37 | md_t **stp 38 | ); 39 | #endif 40 | -------------------------------------------------------------------------------- /src/neogb/tools.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #ifndef GB_TOOLS_H 22 | #define GB_TOOLS_H 23 | 24 | #include 25 | #include 26 | #include "data.h" 27 | 28 | /* cpu time */ 29 | double cputime( 30 | void 31 | ); 32 | 33 | /* wall time */ 34 | double realtime( 35 | void 36 | ); 37 | 38 | static inline uint8_t mod_p_inverse_8( 39 | const int16_t val, 40 | const int16_t p 41 | ) 42 | { 43 | int16_t a, b, c, d, e, f; 44 | a = p; 45 | b = val % p; 46 | /* if b < 0 we shift correspondingly */ 47 | b += (b >> 15) & p; 48 | c = 1; 49 | d = 0; 50 | 51 | while (b != 0) { 52 | f = b; 53 | e = a/f; 54 | b = a - e*f; 55 | a = f; 56 | f = c; 57 | c = d - e*f; 58 | d = f; 59 | } 60 | 61 | /* if d < 0 we shift correspondingly */ 62 | d += (d >> 15) & p; 63 | 64 | return d; 65 | } 66 | 67 | static inline uint16_t mod_p_inverse_16( 68 | const int32_t val, 69 | const int32_t p 70 | ) 71 | { 72 | int32_t a, b, c, d, e, f; 73 | a = p; 74 | b = val % p; 75 | /* if b < 0 we shift correspondingly */ 76 | b += (b >> 31) & p; 77 | c = 1; 78 | d = 0; 79 | 80 | while (b != 0) { 81 | f = b; 82 | e = a/f; 83 | b = a - e*f; 84 | a = f; 85 | f = c; 86 | c = d - e*f; 87 | d = f; 88 | } 89 | 90 | /* if d < 0 we shift correspondingly */ 91 | d += (d >> 31) & p; 92 | 93 | return (uint16_t)d; 94 | } 95 | 96 | static inline uint32_t mod_p_inverse_32( 97 | const int64_t val, 98 | const int64_t p 99 | ) 100 | { 101 | int64_t a, b, c, d, e, f; 102 | a = p; 103 | b = val % p; 104 | /* if b < 0 we shift correspondingly */ 105 | b += (b >> 63) & p; 106 | c = 1; 107 | d = 0; 108 | 109 | while (b != 0) { 110 | f = b; 111 | e = a/f; 112 | b = a - e*f; 113 | a = f; 114 | f = c; 115 | c = d - e*f; 116 | d = f; 117 | } 118 | 119 | /* if d < 0 we shift correspondingly */ 120 | d += (d >> 63) & p; 121 | 122 | return d; 123 | } 124 | #endif 125 | -------------------------------------------------------------------------------- /src/neogb/update.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #ifndef GB_UPDATE_H 22 | #define GB_UPDATE_H 23 | 24 | #include "data.h" 25 | 26 | ps_t *initialize_pairset( 27 | void 28 | ); 29 | 30 | void free_pairset( 31 | ps_t **psp 32 | ); 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/upolmat/nmod_mat_permute_rows.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Vincent Neiger 20 | * Mohab Safey El Din */ 21 | 22 | 23 | 24 | 25 | /* The following is a copy-paste from a Flint file added in version 3 */ 26 | 27 | 28 | 29 | 30 | #if __FLINT_VERSION < 3 31 | 32 | /* 33 | Copyright (C) 2023 Albin Ahlbäck 34 | 35 | This file is part of FLINT. 36 | 37 | FLINT is free software: you can redistribute it and/or modify it under 38 | the terms of the GNU Lesser General Public License (LGPL) as published 39 | by the Free Software Foundation; either version 2.1 of the License, or 40 | (at your option) any later version. See . 41 | */ 42 | 43 | #include "nmod_mat_extra.h" 44 | 45 | /** Permute rows of a matrix `mat` according to `perm_act`, and propagate the 46 | * action on `perm_store`. 47 | * That is, performs for each appropriate index `i`, the operations 48 | * `perm_store[i] <- perm_store[perm_act[i]]` 49 | * `rows[i] <- rows[perm_act[i]]` */ 50 | void 51 | nmod_mat_permute_rows(nmod_mat_t mat, const slong * perm_act, slong * perm_store) 52 | { 53 | slong i; 54 | ulong ** mat_tmp = (ulong **) flint_malloc(mat->r * sizeof(ulong *)); 55 | 56 | /* perm_store[i] <- perm_store[perm_act[i]] */ 57 | if (perm_store) 58 | _perm_compose(perm_store, perm_store, perm_act, mat->r); 59 | 60 | /* rows[i] <- rows[perm_act[i]] */ 61 | for (i = 0; i < mat->r; i++) 62 | mat_tmp[i] = mat->rows[perm_act[i]]; 63 | for (i = 0; i < mat->r; i++) 64 | mat->rows[i] = mat_tmp[i]; 65 | 66 | flint_free(mat_tmp); 67 | } 68 | 69 | #endif // __FLINT_VERSION < 3 70 | 71 | /* -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 72 | // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s 73 | -------------------------------------------------------------------------------- /src/upolmat/nmod_mat_poly_arith.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Vincent Neiger 20 | * Mohab Safey El Din */ 21 | 22 | #include 23 | #include "nmod_mat_poly.h" 24 | 25 | void nmod_mat_poly_mul_coeff(nmod_mat_t coeff, 26 | const nmod_mat_poly_t mat1, 27 | const nmod_mat_poly_t mat2, 28 | slong k) 29 | { 30 | // only consider indices i such that: 31 | // 0 <= i <= k 32 | // i < mat1->length 33 | // k-i < mat2->length 34 | // so i < min(k+1,mat1->length) 35 | // and i >= max(0, k + 1 - mat2->length) 36 | const slong ubound = FLINT_MIN(k+1, mat1->length); 37 | const slong lbound = FLINT_MAX(0, k+1 - mat2->length); 38 | 39 | // lbound >= ubound ==> coeff is zero, no term to consider 40 | if (lbound >= ubound) 41 | { 42 | nmod_mat_zero(coeff); 43 | return; 44 | } 45 | 46 | // now lbound < ubound 47 | // first handle i == lbound separately, to avoid wasting time zero-ing `coeff` 48 | nmod_mat_mul(coeff, mat1->coeffs + lbound, mat2->coeffs + (k - lbound)); 49 | 50 | // `if` just here to avoid initializing temp for nothing 51 | if (lbound + 1 < ubound) 52 | { 53 | nmod_mat_t temp; 54 | nmod_mat_init(temp, mat1->r, mat2->c, mat1->mod.n); 55 | for (slong i = lbound+1; i < ubound; i++) 56 | { 57 | nmod_mat_mul(temp, mat1->coeffs + i, mat2->coeffs + (k - i)); 58 | nmod_mat_add(coeff, coeff, temp); 59 | } 60 | nmod_mat_clear(temp); 61 | } 62 | } 63 | 64 | /* -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 65 | // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s 66 | -------------------------------------------------------------------------------- /src/upolmat/nmod_mat_poly_io.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Vincent Neiger 20 | * Mohab Safey El Din */ 21 | 22 | #include "nmod_mat_poly.h" 23 | 24 | void nmod_mat_poly_print(const nmod_mat_poly_t matp) 25 | { 26 | for (slong i = 0; i < matp->length; i++) 27 | nmod_mat_print(matp->coeffs + i); 28 | } 29 | 30 | void nmod_mat_poly_print_pretty(const nmod_mat_poly_t matp) 31 | { 32 | printf("r: %ld, c: %ld, len: %ld, mod: %ld\n", 33 | matp->r, matp->c, matp->length, matp->mod.n); 34 | for (slong i = 0; i < matp->length; i++) 35 | { 36 | printf("coeff %ld:\n", i); 37 | nmod_mat_print_pretty(matp->coeffs + i); 38 | } 39 | } 40 | 41 | /* -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 42 | // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s 43 | -------------------------------------------------------------------------------- /src/upolmat/nmod_mat_poly_set_from.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Vincent Neiger 20 | * Mohab Safey El Din */ 21 | 22 | #include "nmod_mat_poly.h" 23 | #include 24 | 25 | void nmod_mat_poly_init_set_from_nmod_mat(nmod_mat_poly_t matp, 26 | const nmod_mat_t cmat) 27 | { 28 | nmod_mat_poly_init2_preinv(matp, cmat->r, cmat->c, cmat->mod.n, cmat->mod.ninv, 1); 29 | // if cmat is zero: do nothing more 30 | // otherwise set length to 1 and copy data 31 | if (! nmod_mat_is_zero(cmat)) 32 | { 33 | nmod_mat_init_set(matp->coeffs + 0, cmat); 34 | matp->length = 1; 35 | } 36 | } 37 | 38 | void nmod_mat_poly_set_from_nmod_mat(nmod_mat_poly_t matp, 39 | const nmod_mat_t cmat) 40 | { 41 | if (nmod_mat_is_zero(cmat)) 42 | nmod_mat_poly_zero(matp); 43 | else 44 | { 45 | nmod_mat_poly_fit_length(matp, 1); 46 | _nmod_mat_poly_set_length(matp, 1); 47 | nmod_mat_set(matp->coeffs + 0, cmat); 48 | } 49 | } 50 | 51 | void nmod_mat_poly_set_trunc_from_poly_mat(nmod_mat_poly_t matp, 52 | const nmod_poly_mat_t pmat, 53 | slong order) 54 | { 55 | const slong len = nmod_poly_mat_max_length(pmat); 56 | if (order > len) 57 | order = len; 58 | 59 | // allocate and init coefficients 60 | nmod_mat_poly_fit_length(matp, order); 61 | _nmod_mat_poly_set_length(matp, order); 62 | 63 | // fill data 64 | for (slong k = 0; k < order; k++) 65 | for (slong i = 0; i < matp->r; i++) 66 | for (slong j = 0; j < matp->c; j++) 67 | nmod_mat_poly_entry(matp, k, i, j) = nmod_poly_get_coeff_ui(nmod_poly_mat_entry(pmat, i, j), k); 68 | 69 | // normalize (useless if order==len) 70 | if (order < len) 71 | _nmod_mat_poly_normalise(matp); 72 | } 73 | 74 | /* -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 75 | // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s 76 | -------------------------------------------------------------------------------- /src/upolmat/nmod_mat_poly_shift.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Vincent Neiger 20 | * Mohab Safey El Din */ 21 | 22 | #include "nmod_mat_poly.h" 23 | 24 | void _nmod_mat_poly_shift_left(nmod_mat_struct * smatp, 25 | const nmod_mat_struct * matp, 26 | slong len, 27 | slong n) 28 | { 29 | if (smatp != matp) 30 | { 31 | for (slong i = 0; i < len; i++) 32 | nmod_mat_set(smatp + n + i, matp + i); 33 | } 34 | else 35 | { 36 | /* Copy in reverse to avoid writing over unshifted coefficients */ 37 | for (slong i = len-1; i >= 0; i--) 38 | nmod_mat_swap(smatp + n + i, smatp + i); 39 | } 40 | 41 | for (slong i = 0; i < n; i++) 42 | nmod_mat_zero(smatp + i); 43 | } 44 | 45 | //void _nmod_mat_poly_shift_right(nmod_mat_poly_t smatp, 46 | // const nmod_mat_poly_t matp, 47 | // slong len, 48 | // slong n) 49 | //{ 50 | //} 51 | 52 | void nmod_mat_poly_shift_left(nmod_mat_poly_t smatp, 53 | const nmod_mat_poly_t matp, 54 | slong n) 55 | { 56 | if (n == 0) 57 | { 58 | nmod_mat_poly_set(smatp, matp); 59 | return; 60 | } 61 | 62 | if (matp->length == 0) 63 | { 64 | nmod_mat_poly_zero(smatp); 65 | return; 66 | } 67 | 68 | nmod_mat_poly_fit_length(smatp, matp->length + n); 69 | _nmod_mat_poly_set_length(smatp, matp->length + n); 70 | _nmod_mat_poly_shift_left(smatp->coeffs, matp->coeffs, matp->length - n, n); 71 | } 72 | 73 | //void nmod_mat_poly_shift_right(nmod_mat_poly_t smatp, 74 | // const nmod_mat_poly_t matp, 75 | // slong n); 76 | 77 | 78 | /* -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 79 | // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s 80 | -------------------------------------------------------------------------------- /src/upolmat/nmod_poly_mat_pmbasis.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Vincent Neiger 20 | * Mohab Safey El Din */ 21 | 22 | #include "nmod_mat_poly.h" // truncate, shift, middle_product 23 | #include "nmod_poly_mat_utils.h" // truncate, shift, middle_product 24 | #include "nmod_poly_mat_pmbasis.h" 25 | 26 | 27 | 28 | void nmod_poly_mat_mbasis(nmod_poly_mat_t appbas, 29 | slong * shift, 30 | const nmod_poly_mat_t pmat, 31 | ulong order) 32 | { 33 | nmod_mat_poly_t app, matp; 34 | nmod_mat_poly_init(matp, pmat->r, pmat->c, pmat->modulus); 35 | // TODO improve: set init 36 | nmod_mat_poly_set_trunc_from_poly_mat(matp, pmat, order); 37 | nmod_mat_poly_init(app, pmat->r, pmat->r, pmat->modulus); 38 | nmod_mat_poly_mbasis(app, shift, matp, order); 39 | // TODO improve: set init 40 | nmod_poly_mat_set_from_mat_poly(appbas, app); 41 | nmod_mat_poly_clear(matp); 42 | nmod_mat_poly_clear(app); 43 | } 44 | 45 | 46 | void nmod_poly_mat_pmbasis(nmod_poly_mat_t appbas, 47 | slong * shift, 48 | const nmod_poly_mat_t pmat, 49 | slong order) 50 | { 51 | if (order <= PMBASIS_THRES) 52 | { 53 | nmod_poly_mat_mbasis(appbas, shift, pmat, order); 54 | return; 55 | } 56 | 57 | const long order1 = order>>1; 58 | const long order2 = order - order1; 59 | nmod_poly_mat_t appbas2, residual; 60 | 61 | nmod_poly_mat_init(appbas2, pmat->r, pmat->r, pmat->modulus); 62 | nmod_poly_mat_init(residual, pmat->r, pmat->c, pmat->modulus); 63 | 64 | nmod_poly_mat_pmbasis(appbas, shift, pmat, order1); 65 | 66 | nmod_poly_mat_middle_product(residual, appbas, pmat, order1, order); 67 | 68 | nmod_poly_mat_pmbasis(appbas2, shift, residual, order2); 69 | 70 | nmod_poly_mat_mul(appbas, appbas2, appbas); 71 | 72 | nmod_poly_mat_clear(appbas2); 73 | nmod_poly_mat_clear(residual); 74 | } 75 | 76 | /* -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 77 | // vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s 78 | -------------------------------------------------------------------------------- /src/usolve/Makefile.am: -------------------------------------------------------------------------------- 1 | noinst_LTLIBRARIES = libusolve.la 2 | libusolve_la_SOURCES = usolve.c 3 | libusolve_ladir = $(includedir)/msolve/usolve 4 | libusolve_la_HEADERS = libusolve.h 5 | libusolve_la_CFLAGS = $(SIMD_FLAGS) $(CPUEXT_FLAGS) $(OPENMP_CFLAGS) 6 | 7 | EXTRA_DIST = libusolve.h \ 8 | bisection.h \ 9 | debug.h \ 10 | descartes.h \ 11 | evaluate.h \ 12 | libusolve.h \ 13 | print_usolve.h \ 14 | refine.h \ 15 | taylor_shift.h \ 16 | univmultiply.h \ 17 | data_usolve.c \ 18 | debug.c \ 19 | descartes.c \ 20 | evaluate.c \ 21 | print_usolve.c \ 22 | refine.c \ 23 | taylor_shift.c \ 24 | tests.c \ 25 | univmultiply.c \ 26 | utils.c 27 | -------------------------------------------------------------------------------- /src/usolve/bisection.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #include"descartes.h" 22 | 23 | interval *Bisection_Uspensky(mpz_t *, unsigned long, 24 | unsigned long int *, unsigned long int *, 25 | usolve_flags *); 26 | 27 | interval *Bisection_Uspensky_from_root(mpz_t *, unsigned long, 28 | unsigned long int *, unsigned long int *, 29 | usolve_flags *); 30 | -------------------------------------------------------------------------------- /src/usolve/data_usolve.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | typedef struct{ 23 | int search;/*when >0 (resp. <0, =0) computes positive (resp. negative, all) roots */ 24 | long int bound_pos; /*log2(M) where M dominates the largest positive root*/ 25 | long int bound_neg; /*log2(-M) where M is less than the least negative root*/ 26 | int sign;/* when >=0 (resp. <0), one computes non-negative (resp. negative) roots */ 27 | int revert; /* when set to 1 one reads input coeffs by ascending degree */ 28 | int prec_isole; /* nbr of bits for real root isolation */ 29 | int hasrealroots; /*when set to 1, computation stops when one finds a root*/ 30 | 31 | long int precision_loss; 32 | 33 | unsigned long int transl; 34 | unsigned long int node_looked; 35 | unsigned long int half_done; 36 | 37 | unsigned long int cur_deg; 38 | unsigned long int pwx; 39 | unsigned long int nblocks; 40 | unsigned long int npwr; 41 | mpz_t **shift_pwx; 42 | mpz_t *tmpol; 43 | mpz_t *tmpol_desc; 44 | /* used for parallel taylor_shift */ 45 | mpz_t **tmp_threads; 46 | mpz_t **pols_threads; 47 | mpz_t *Values; 48 | 49 | float time_desc; 50 | float time_shift; 51 | 52 | unsigned int nthreads; 53 | unsigned int verbose; 54 | unsigned int bfile; 55 | unsigned int classical_algo; 56 | 57 | unsigned int print_stats; 58 | int debug; 59 | } usolve_flags; 60 | -------------------------------------------------------------------------------- /src/usolve/debug.c: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #include 22 | //#include "utils.h" 23 | //#include "evaluate.h" 24 | //#include "print_usolve.h" 25 | 26 | /* returns 1 if up has sign change over the interval encoded by root */ 27 | /* return 0 otherwise */ 28 | static inline int check_sign_change(mpz_t *upoly, unsigned long int deg, interval *root){ 29 | if(root->isexact==1){ 30 | mpz_t c; 31 | mpz_init_set(c, root->numer); 32 | // mpz_out_str(stderr, 10, c); puts(""); 33 | int s_down = sgn_mpz_poly_eval_at_point_2exp_naive(upoly, deg, &c, root->k); 34 | if(s_down!=0){ 35 | fprintf(stderr, "Negative (k): Not implemented yet ; skipped but useless with larger precision\n"); 36 | return 0; // exit(1); 37 | } 38 | return 1; 39 | } 40 | if(root->k<=0){ 41 | fprintf(stderr, "Negative (k): Not implemented yet ; skipped but useless with larger precision\n"); 42 | return 1; // exit(1); 43 | } 44 | mpz_t c; 45 | mpz_init_set(c, root->numer); 46 | // mpz_out_str(stderr, 10, c); puts(""); 47 | int s_down = sgn_mpz_poly_eval_at_point_2exp_naive(upoly, deg, &c, root->k); 48 | mpz_add_ui(c, c, 1); 49 | // mpz_out_str(stderr, 10, c); puts(""); 50 | int s_up = sgn_mpz_poly_eval_at_point_2exp_naive(upoly, deg, &c, root->k); 51 | mpz_clear(c); 52 | if(s_up*s_down<=0){ 53 | return 1; 54 | } 55 | fprintf(stderr, "\nBUG: no sign change\n"); 56 | return 0; 57 | } 58 | 59 | static int check_all_sign_changes(mpz_t *upoly, unsigned long int deg, interval *root, unsigned long int nbroots){ 60 | int s = 1; 61 | for(unsigned long int i =0; i < nbroots; i++){ 62 | if((root+i)->isexact==0){ 63 | s = check_sign_change(upoly, deg, root+i); 64 | if(s==0){ 65 | fprintf(stderr, "Error occurred at root %lu\n", i); 66 | USOLVEdisplay_roots(stderr, (root+i), 1); 67 | fprintf(stderr, "\n"); 68 | exit(1); 69 | } 70 | } 71 | } 72 | return 1; 73 | } 74 | 75 | -------------------------------------------------------------------------------- /src/usolve/debug.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | int check_sign_change(mpz_t *, unsigned long int, interval *); 22 | int check_all_sign_changes(mpz_t *, unsigned long int, interval *, unsigned long int); 23 | -------------------------------------------------------------------------------- /src/usolve/descartes.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #include"taylor_shift.h" 22 | 23 | #ifndef USOLVE 24 | #define USOLVE 25 | #endif 26 | 27 | long USOLVEDescartes_with_taylor_truncate(mpz_t *, mpz_t *, unsigned long, long, long *, usolve_flags *); 28 | unsigned long int USOLVEDescartes_with_taylor_truncated_input(mpz_t *, mpz_t *, mpz_t *, 29 | unsigned long, long , 30 | mpz_t, long, 31 | long *, usolve_flags *); 32 | unsigned long USOLVEDescartes_with_taylor(mpz_t *, mpz_t *, unsigned long, long, long *, usolve_flags *); 33 | unsigned long USOLVEDescartes_classical(mpz_t *, unsigned long, long, long *); 34 | -------------------------------------------------------------------------------- /src/usolve/evaluate.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | void basic_mpz_poly_eval_at_point(mpz_t *, unsigned long int, mpz_t*, mpz_t *); 22 | 23 | void mpz_poly_eval_at_point_2exp(mpz_t *, unsigned long int, 24 | unsigned long int, unsigned long int, 25 | mpz_t, int, 26 | int, mpz_t *, mpz_t *, 27 | double *); 28 | 29 | void mpz_poly_eval_at_point_2exp_ui(mpz_t *, unsigned long int, 30 | unsigned long int, unsigned long int, 31 | unsigned long int, int, 32 | int, mpz_t *, mpz_t *, 33 | double *); 34 | 35 | int sgn_mpz_poly_eval_at_point_2exp(mpz_t *, unsigned long int, 36 | unsigned long int, unsigned long int, 37 | mpz_t *, int, 38 | mpz_t *, mpz_t *, 39 | int *, double *); 40 | 41 | int sgn_mpz_poly_eval_at_point_2exp_ui(mpz_t *, unsigned long int, 42 | unsigned long int, unsigned long int, 43 | unsigned long int, int, 44 | mpz_t *, mpz_t *, 45 | int *, double *); 46 | 47 | int sgn_mpz_poly_eval_at_point_naive(mpz_t *, unsigned long int, mpz_t *, int); 48 | 49 | void mpz_poly_eval_2exp_naive(mpz_t *, long int, 50 | mpz_t *, const long int, mpz_t *, mpz_t *); 51 | 52 | int sgn_mpz_poly_eval_at_point_2exp_naive(mpz_t *, unsigned long int, mpz_t*, int); 53 | int sgn_mpz_poly_eval_at_point_2exp_naive2(mpz_t *, unsigned long int, mpz_t, int); 54 | -------------------------------------------------------------------------------- /src/usolve/libusolve.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | interval *real_roots(mpz_t *, unsigned long, 23 | unsigned long int *, 24 | unsigned long int *, 25 | const int32_t, 26 | int, 27 | int); 28 | 29 | void display_roots_system(FILE *, interval *, unsigned long int); 30 | 31 | void display_root(FILE *, interval *); 32 | 33 | unsigned long int mpz_poly_max_bsize_coeffs(mpz_t *, unsigned long int); 34 | 35 | unsigned long int mpz_poly_min_bsize_coeffs(mpz_t *, unsigned long int); 36 | 37 | void mpz_poly_eval_2exp_naive(mpz_t *, 38 | long int, 39 | mpz_t *, const long int, 40 | mpz_t *, mpz_t *); 41 | 42 | void mpz_poly_eval_2exp_naive2(mpz_t *, 43 | unsigned long int, 44 | mpz_t, const int, 45 | mpz_t, mpz_t); 46 | 47 | void get_values_at_bounds(mpz_t *, unsigned long int, interval *, mpz_t *); 48 | 49 | void refine_QIR_positive_root(mpz_t *, long int *, interval *, 50 | mpz_t *, int, int); 51 | 52 | int mpz_scalar_product_interval(mpz_t *, unsigned long int, long, 53 | mpz_t *, mpz_t *, mpz_t, mpz_t, mpz_t, long); 54 | 55 | int mpz_poly_eval_interval(mpz_t *, unsigned long int, long, 56 | mpz_t, mpz_t, mpz_t, mpz_t, mpz_t); 57 | 58 | int lazy_mpz_poly_eval_interval(mpz_t *, unsigned long int, long, 59 | mpz_t *, mpz_t *, long, long, long, 60 | mpz_t, mpz_t, mpz_t); 61 | 62 | int lazy_mpz_poly_eval_interval_old(mpz_t *, unsigned long int, long, 63 | mpz_t *, mpz_t *, long, long, long, 64 | mpz_t, mpz_t, mpz_t); 65 | -------------------------------------------------------------------------------- /src/usolve/print_usolve.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | //#include "header.h" 22 | 23 | void USOLVEdisplay_roots(FILE *, interval *, unsigned long int); 24 | void USOLVEdisplay_roots_system(interval *, unsigned long int); 25 | //void USOLVEdisplay_root(FILE *, interval *); 26 | void USOLVEdisplay_roots_in_file(FILE *, interval*, 27 | unsigned long int); 28 | 29 | -------------------------------------------------------------------------------- /src/usolve/refine.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | 22 | #ifndef USOLVE 23 | #define USOLVE 24 | #endif 25 | 26 | void USOLVErefine_all_roots_naive(mpz_t *, unsigned long int, interval *, unsigned long int, unsigned int, int, int); 27 | 28 | void USOLVErefine_QIR_roots(mpz_t *, unsigned long int *, interval *, 29 | int, int, int, int, double, int); 30 | -------------------------------------------------------------------------------- /src/usolve/taylor_shift.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | //#include "utils.h" 22 | #include "univmultiply.h" 23 | #include "mpz_upoly_multiply.h" 24 | 25 | #define THRESHOLDSHIFT 256 //512 26 | 27 | void taylorshift1_naive(mpz_t *, const unsigned long int); 28 | 29 | void taylorshift1_dac(mpz_t *, const unsigned long int, mpz_t *, mpz_t **, 30 | unsigned long int, const unsigned int); 31 | 32 | long USOLVEtaylor_shift_by_1_dac_wsgn_variations(mpz_t *, const unsigned long int, 33 | mpz_t *, mpz_t **, unsigned long int, const unsigned int); 34 | 35 | -------------------------------------------------------------------------------- /src/usolve/univmultiply.h: -------------------------------------------------------------------------------- 1 | /* This file is part of msolve. 2 | * 3 | * msolve is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * msolve is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with msolve. If not, see 15 | * 16 | * Authors: 17 | * Jérémy Berthomieu 18 | * Christian Eder 19 | * Mohab Safey El Din */ 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | 28 | 29 | 30 | void mpz_poly_mul(mpz_t *, mpz_t *, unsigned long int, mpz_t *, unsigned long int, unsigned int); 31 | #ifdef USEFLINT 32 | void mpz_poly_mul_allocated_fmpz_poly(mpz_t *, mpz_t *, unsigned long int, mpz_t *, unsigned long int, 33 | fmpz_poly_t, fmpz_poly_t, fmpz_poly_t); 34 | 35 | void mpz_upoly_mul(mpz_t *, mpz_t *, mpz_t *, unsigned long int, unsigned long int, 36 | fmpz_poly_t, fmpz_poly_t, fmpz_poly_t, 37 | int); 38 | #endif 39 | -------------------------------------------------------------------------------- /test/diff/diff_F4SAT-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=F4SAT-31 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -S -g 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -S -g 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -S -g 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -S -g 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_F4SAT-byone-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=F4SAT-byone-31 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -S -g 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -S -g 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -S -g 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -S -g 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_bug_2nd_prime_bad.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=bug-2nd-prime-bad 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -g 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -g 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -g 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -g 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_bug_68.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=bug_68 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_bug_empty_tracer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=bug-empty-tracer 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -g 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -g 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -g 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -g 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_cp_d_3_n_4_p_2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=cp_d_3_n_4_p_2 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_cyclic5-16.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=cyclic5-16 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -d 4 -P 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -d 4 -P 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -d 4 -P 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -d 4 -P 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_cyclic5-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=cyclic5-31 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -d 4 -P 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -d 4 -P 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -d 4 -P 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -d 4 -P 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_cyclic5-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=cyclic5-qq 4 | 5 | source test/diff/diff_source.sh 6 | 7 | source test/diff/diff_source-groebner.sh 8 | -------------------------------------------------------------------------------- /test/diff/diff_eco10-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=eco10-31 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_eco6-16.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=eco6-16 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -d 4 -P 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -d 4 -P 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -d 4 -P 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -d 4 -P 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_eco6-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=eco6-31 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -d 4 -P 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -L 1 -d 4 -P 2 -l 2 -t 1 18 | if [ $? -gt 0 ]; then 19 | exit 101 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 201 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -d 4 -P 2 -l 2 -t 2 29 | if [ $? -gt 0 ]; then 30 | exit 21 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 22 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -L 1 -d 4 -P 2 -l 2 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 211 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 221 47 | fi 48 | 49 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 50 | -d 4 -P 2 -l 44 -t 1 51 | if [ $? -gt 0 ]; then 52 | exit 41 53 | fi 54 | 55 | diff test/diff/$file.res output_files/$file.res 56 | if [ $? -gt 0 ]; then 57 | exit 42 58 | fi 59 | 60 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 61 | -L 1 -d 4 -P 2 -l 44 -t 1 62 | if [ $? -gt 0 ]; then 63 | exit 411 64 | fi 65 | 66 | diff test/diff/$file.res output_files/$file.res 67 | if [ $? -gt 0 ]; then 68 | exit 421 69 | fi 70 | 71 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 72 | -d 4 -P 2 -l 44 -t 2 73 | if [ $? -gt 0 ]; then 74 | exit 61 75 | fi 76 | 77 | diff test/diff/$file.res output_files/$file.res 78 | if [ $? -gt 0 ]; then 79 | exit 62 80 | fi 81 | 82 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 83 | -L 1 -d 4 -P 2 -l 44 -t 2 84 | if [ $? -gt 0 ]; then 85 | exit 611 86 | fi 87 | 88 | diff test/diff/$file.res output_files/$file.res 89 | if [ $? -gt 0 ]; then 90 | exit 621 91 | fi 92 | 93 | rm test/diff/$file.res 94 | -------------------------------------------------------------------------------- /test/diff/diff_eco6-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=eco6-qq 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -d 4 -P 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -L 1 -d 4 -P 2 -l 2 -t 1 18 | if [ $? -gt 0 ]; then 19 | exit 101 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 201 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -d 4 -P 2 -l 2 -t 2 29 | if [ $? -gt 0 ]; then 30 | exit 21 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 22 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -L 1 -d 4 -P 2 -l 2 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 211 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 221 47 | fi 48 | 49 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 50 | -d 4 -P 2 -l 44 -t 1 51 | if [ $? -gt 0 ]; then 52 | exit 41 53 | fi 54 | 55 | diff test/diff/$file.res output_files/$file.res 56 | if [ $? -gt 0 ]; then 57 | exit 42 58 | fi 59 | 60 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 61 | -L 1 -d 4 -P 2 -l 44 -t 1 62 | if [ $? -gt 0 ]; then 63 | exit 411 64 | fi 65 | 66 | diff test/diff/$file.res output_files/$file.res 67 | if [ $? -gt 0 ]; then 68 | exit 421 69 | fi 70 | 71 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 72 | -d 4 -P 2 -l 44 -t 2 73 | if [ $? -gt 0 ]; then 74 | exit 61 75 | fi 76 | 77 | diff test/diff/$file.res output_files/$file.res 78 | if [ $? -gt 0 ]; then 79 | exit 62 80 | fi 81 | 82 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 83 | -L 1 -d 4 -P 2 -l 44 -t 2 84 | if [ $? -gt 0 ]; then 85 | exit 611 86 | fi 87 | 88 | diff test/diff/$file.res output_files/$file.res 89 | if [ $? -gt 0 ]; then 90 | exit 621 91 | fi 92 | 93 | rm test/diff/$file.res 94 | -------------------------------------------------------------------------------- /test/diff/diff_elim-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=elim-31 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -e 1 -g 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -e 2 -g 2 -l 2 -t 1 18 | if [ $? -gt 0 ]; then 19 | exit 3 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.e2.res 23 | if [ $? -gt 0 ]; then 24 | exit 4 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -e 1 -g 2 -l 2 -t 2 29 | if [ $? -gt 0 ]; then 30 | exit 21 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 22 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -e 2 -g 2 -l 2 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 23 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.e2.res 45 | if [ $? -gt 0 ]; then 46 | exit 24 47 | fi 48 | 49 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 50 | -e 1 -g 2 -l 44 -t 1 51 | if [ $? -gt 0 ]; then 52 | exit 41 53 | fi 54 | 55 | diff test/diff/$file.res output_files/$file.res 56 | if [ $? -gt 0 ]; then 57 | exit 42 58 | fi 59 | 60 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 61 | -e 2 -g 2 -l 44 -t 1 62 | if [ $? -gt 0 ]; then 63 | exit 43 64 | fi 65 | 66 | diff test/diff/$file.res output_files/$file.e2.res 67 | if [ $? -gt 0 ]; then 68 | exit 44 69 | fi 70 | 71 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 72 | -e 1 -g 2 -l 44 -t 2 73 | if [ $? -gt 0 ]; then 74 | exit 61 75 | fi 76 | 77 | diff test/diff/$file.res output_files/$file.res 78 | if [ $? -gt 0 ]; then 79 | exit 62 80 | fi 81 | 82 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 83 | -e 2 -g 2 -l 44 -t 2 84 | if [ $? -gt 0 ]; then 85 | exit 63 86 | fi 87 | 88 | diff test/diff/$file.res output_files/$file.e2.res 89 | if [ $? -gt 0 ]; then 90 | exit 64 91 | fi 92 | 93 | rm test/diff/$file.res 94 | -------------------------------------------------------------------------------- /test/diff/diff_elim-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=elim-qq 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -e 1 -g 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -e 2 -g 2 -l 2 -t 1 18 | if [ $? -gt 0 ]; then 19 | exit 3 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.e2.res 23 | if [ $? -gt 0 ]; then 24 | exit 4 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -e 1 -g 2 -l 2 -t 2 29 | if [ $? -gt 0 ]; then 30 | exit 21 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 22 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -e 2 -g 2 -l 2 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 23 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.e2.res 45 | if [ $? -gt 0 ]; then 46 | exit 24 47 | fi 48 | 49 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 50 | -e 1 -g 2 -l 44 -t 1 51 | if [ $? -gt 0 ]; then 52 | exit 41 53 | fi 54 | 55 | diff test/diff/$file.res output_files/$file.res 56 | if [ $? -gt 0 ]; then 57 | exit 42 58 | fi 59 | 60 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 61 | -e 2 -g 2 -l 44 -t 1 62 | if [ $? -gt 0 ]; then 63 | exit 43 64 | fi 65 | 66 | diff test/diff/$file.res output_files/$file.e2.res 67 | if [ $? -gt 0 ]; then 68 | exit 44 69 | fi 70 | 71 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 72 | -e 1 -g 2 -l 44 -t 2 73 | if [ $? -gt 0 ]; then 74 | exit 61 75 | fi 76 | 77 | diff test/diff/$file.res output_files/$file.res 78 | if [ $? -gt 0 ]; then 79 | exit 62 80 | fi 81 | 82 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 83 | -e 2 -g 2 -l 44 -t 2 84 | if [ $? -gt 0 ]; then 85 | exit 63 86 | fi 87 | 88 | diff test/diff/$file.res output_files/$file.e2.res 89 | if [ $? -gt 0 ]; then 90 | exit 64 91 | fi 92 | 93 | rm test/diff/$file.res 94 | -------------------------------------------------------------------------------- /test/diff/diff_f4sat-field-char.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=f4sat-field-char 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -S -g2 -o test/diff/$file.res \ 6 | -n2 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | rm test/diff/$file.res 17 | -------------------------------------------------------------------------------- /test/diff/diff_f4sat-is-saturated-check.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=f4sat-is-saturated-check 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -S -o test/diff/$file.res \ 6 | -n2 7 | # should return an error 1 status 8 | if [ $? -gt 1 ]; then 9 | exit 1 10 | fi 11 | 12 | diff test/diff/$file.res output_files/$file.res 13 | # should return an error 1 status 14 | if [ $? -gt 1 ]; then 15 | exit 2 16 | fi 17 | 18 | rm test/diff/$file.res 19 | -------------------------------------------------------------------------------- /test/diff/diff_f4sat-zero-input.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=f4sat-zero-input 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -S -g2 -o test/diff/$file.res \ 6 | -n2 7 | # should return an error 1 status 8 | if [ $? -gt 1 ]; then 9 | exit 1 10 | fi 11 | 12 | diff test/diff/$file.res output_files/$file.res 13 | # should return an error 1 status 14 | if [ $? -gt 1 ]; then 15 | exit 2 16 | fi 17 | 18 | rm test/diff/$file.res 19 | -------------------------------------------------------------------------------- /test/diff/diff_groebner-g2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=groebner-g2 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -g 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 3 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.g2.res 12 | if [ $? -gt 0 ]; then 13 | exit 4 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -g 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 23 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.g2.res 23 | if [ $? -gt 0 ]; then 24 | exit 24 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -g 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 43 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.g2.res 34 | if [ $? -gt 0 ]; then 35 | exit 44 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -g 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 63 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.g2.res 45 | if [ $? -gt 0 ]; then 46 | exit 64 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_henrion5-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=henrion5-qq 4 | 5 | #source test/diff/diff_source.sh 6 | 7 | source test/diff/diff_source-groebner.sh 8 | 9 | -------------------------------------------------------------------------------- /test/diff/diff_input-overflow-16.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=input-overflow-16 4 | 5 | 6 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 7 | -l 2 -t 1 8 | if [ $? -gt 0 ]; then 9 | exit 1 10 | fi 11 | 12 | diff test/diff/$file.res output_files/$file.res 13 | if [ $? -gt 0 ]; then 14 | exit 2 15 | fi 16 | 17 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 18 | -l 2 -t 2 19 | if [ $? -gt 0 ]; then 20 | exit 21 21 | fi 22 | 23 | diff test/diff/$file.res output_files/$file.res 24 | if [ $? -gt 0 ]; then 25 | exit 22 26 | fi 27 | 28 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 29 | -l 44 -t 1 30 | if [ $? -gt 0 ]; then 31 | exit 41 32 | fi 33 | 34 | diff test/diff/$file.res output_files/$file.res 35 | if [ $? -gt 0 ]; then 36 | exit 42 37 | fi 38 | 39 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 40 | -l 44 -t 2 41 | if [ $? -gt 0 ]; then 42 | exit 61 43 | fi 44 | 45 | diff test/diff/$file.res output_files/$file.res 46 | if [ $? -gt 0 ]; then 47 | exit 62 48 | fi 49 | 50 | rm test/diff/$file.res 51 | -------------------------------------------------------------------------------- /test/diff/diff_kat6-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=kat6-31 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_kat7-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=kat7-qq 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_linear-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=linear-qq 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_maxbitsize-bug.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=maxbitsize-bug 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_mq_2_1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=mq_2_1 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_multy-16.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=multy-16 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_multy-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=multy-31 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_multy-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=multy-qq 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_nf_16.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nf-16 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -n2 7 | if [ $? -gt 0 ]; then 8 | exit 3 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 4 14 | fi 15 | 16 | rm test/diff/$file.res 17 | -------------------------------------------------------------------------------- /test/diff/diff_nf_31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nf-31 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -n2 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | rm test/diff/$file.res 17 | -------------------------------------------------------------------------------- /test/diff/diff_nf_8.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nf-8 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -n2 7 | if [ $? -gt 0 ]; then 8 | exit 5 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 6 14 | fi 15 | 16 | rm test/diff/$file.res 17 | -------------------------------------------------------------------------------- /test/diff/diff_nf_lm_bug.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nf-lm-bug 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -n3 7 | if [ $? -gt 0 ]; then 8 | exit 5 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 6 14 | fi 15 | 16 | rm test/diff/$file.res 17 | -------------------------------------------------------------------------------- /test/diff/diff_nonradical_radicalshape-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nonradical_radicalshape-31 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_nonradical_radicalshape-no-square-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nonradical_radicalshape-no-square-31 4 | 5 | # source test/diff/diff_source.sh 6 | 7 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 8 | -P 2 -l 2 -t 1 -c 0 9 | if [ $? -gt 0 ]; then 10 | exit 3 11 | fi 12 | 13 | diff test/diff/$file.res output_files/$file.c0.res 14 | if [ $? -gt 0 ]; then 15 | exit 4 16 | fi 17 | 18 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 19 | -P 2 -l 2 -t 2 -c 0 20 | if [ $? -gt 0 ]; then 21 | exit 23 22 | fi 23 | 24 | diff test/diff/$file.res output_files/$file.c0.res 25 | if [ $? -gt 0 ]; then 26 | exit 24 27 | fi 28 | 29 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 30 | -P 2 -l 44 -t 1 -c 0 31 | if [ $? -gt 0 ]; then 32 | exit 43 33 | fi 34 | 35 | diff test/diff/$file.res output_files/$file.c0.res 36 | if [ $? -gt 0 ]; then 37 | exit 44 38 | fi 39 | 40 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 41 | -P 2 -l 44 -t 2 -c 0 42 | if [ $? -gt 0 ]; then 43 | exit 63 44 | fi 45 | 46 | diff test/diff/$file.res output_files/$file.c0.res 47 | if [ $? -gt 0 ]; then 48 | exit 64 49 | fi 50 | 51 | rm test/diff/$file.res 52 | -------------------------------------------------------------------------------- /test/diff/diff_nonradical_radicalshape-no-square-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nonradical_radicalshape-no-square-qq 4 | 5 | # source test/diff/diff_source.sh 6 | 7 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 8 | -p 3 -l 2 -t 1 9 | if [ $? -gt 0 ]; then 10 | exit 3 11 | fi 12 | 13 | #diff test/diff/$file.res output_files/$file.p3.res 14 | if [ $? -gt 0 ]; then 15 | exit 4 16 | fi 17 | 18 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 19 | -P 2 -l 2 -t 1 -c 0 20 | if [ $? -ne 1 ]; then 21 | exit 5 22 | fi 23 | 24 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 25 | -p 3 -l 2 -t 2 26 | if [ $? -gt 0 ]; then 27 | exit 23 28 | fi 29 | 30 | #diff test/diff/$file.res output_files/$file.p3.res 31 | if [ $? -gt 0 ]; then 32 | exit 24 33 | fi 34 | 35 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 36 | -P 2 -l 2 -t 2 -c 0 37 | if [ $? -ne 1 ]; then 38 | exit 25 39 | fi 40 | 41 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 42 | -p 3 -l 44 -t 1 43 | if [ $? -gt 0 ]; then 44 | exit 43 45 | fi 46 | 47 | #diff test/diff/$file.res output_files/$file.p3.res 48 | if [ $? -gt 0 ]; then 49 | exit 44 50 | fi 51 | 52 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 53 | -P 2 -l 44 -t 1 -c 0 54 | if [ $? -ne 1 ]; then 55 | exit 45 56 | fi 57 | 58 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 59 | -p 3 -l 44 -t 2 60 | if [ $? -gt 0 ]; then 61 | exit 63 62 | fi 63 | 64 | #diff test/diff/$file.res output_files/$file.p3.res 65 | if [ $? -gt 0 ]; then 66 | exit 64 67 | fi 68 | 69 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 70 | -P 2 -l 44 -t 2 -c 0 71 | if [ $? -ne 1 ]; then 72 | exit 65 73 | fi 74 | 75 | rm test/diff/$file.res 76 | -------------------------------------------------------------------------------- /test/diff/diff_nonradical_radicalshape-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nonradical_radicalshape-qq 4 | 5 | source test/diff/diff_source.sh 6 | 7 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 8 | -p 3 -l 2 -t 1 9 | if [ $? -gt 0 ]; then 10 | exit 3 11 | fi 12 | 13 | diff test/diff/$file.res output_files/$file.p3.res 14 | if [ $? -gt 0 ]; then 15 | exit 4 16 | fi 17 | 18 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 19 | -p 3 -l 2 -t 2 20 | if [ $? -gt 0 ]; then 21 | exit 23 22 | fi 23 | 24 | diff test/diff/$file.res output_files/$file.p3.res 25 | if [ $? -gt 0 ]; then 26 | exit 24 27 | fi 28 | 29 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 30 | -p 3 -l 44 -t 1 31 | if [ $? -gt 0 ]; then 32 | exit 43 33 | fi 34 | 35 | diff test/diff/$file.res output_files/$file.p3.res 36 | if [ $? -gt 0 ]; then 37 | exit 44 38 | fi 39 | 40 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 41 | -p 3 -l 44 -t 2 42 | if [ $? -gt 0 ]; then 43 | exit 63 44 | fi 45 | 46 | diff test/diff/$file.res output_files/$file.p3.res 47 | if [ $? -gt 0 ]; then 48 | exit 64 49 | fi 50 | 51 | rm test/diff/$file.res 52 | -------------------------------------------------------------------------------- /test/diff/diff_nonradical_shape-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nonradical_shape-31 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_nonradical_shape-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=nonradical_shape-qq 4 | 5 | source test/diff/diff_source.sh 6 | 7 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 8 | -p 1024 -l 2 -t 1 9 | if [ $? -gt 0 ]; then 10 | exit 3 11 | fi 12 | 13 | diff test/diff/$file.res output_files/$file.p1024.res 14 | if [ $? -gt 0 ]; then 15 | exit 4 16 | fi 17 | 18 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 19 | -p 1024 -l 2 -t 2 20 | if [ $? -gt 0 ]; then 21 | exit 23 22 | fi 23 | 24 | diff test/diff/$file.res output_files/$file.p1024.res 25 | if [ $? -gt 0 ]; then 26 | exit 24 27 | fi 28 | 29 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 30 | -p 1024 -l 44 -t 1 31 | if [ $? -gt 0 ]; then 32 | exit 43 33 | fi 34 | 35 | diff test/diff/$file.res output_files/$file.p1024.res 36 | if [ $? -gt 0 ]; then 37 | exit 44 38 | fi 39 | 40 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 41 | -p 1024 -l 44 -t 2 42 | if [ $? -gt 0 ]; then 43 | exit 63 44 | fi 45 | 46 | diff test/diff/$file.res output_files/$file.p1024.res 47 | if [ $? -gt 0 ]; then 48 | exit 64 49 | fi 50 | 51 | rm test/diff/$file.res 52 | -------------------------------------------------------------------------------- /test/diff/diff_one-16.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=one-16 4 | 5 | source test/diff/diff_source.sh 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/diff/diff_one-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=one-31 4 | 5 | source test/diff/diff_source.sh 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/diff/diff_one-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=one-qq 4 | 5 | source test/diff/diff_source.sh 6 | 7 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 8 | -g 2 -l 2 -t 1 9 | if [ $? -gt 0 ]; then 10 | exit 3 11 | fi 12 | 13 | diff test/diff/$file.res output_files/$file.g2.res 14 | if [ $? -gt 0 ]; then 15 | exit 4 16 | fi 17 | 18 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 19 | -g 2 -l 2 -t 2 20 | if [ $? -gt 0 ]; then 21 | exit 23 22 | fi 23 | 24 | diff test/diff/$file.res output_files/$file.g2.res 25 | if [ $? -gt 0 ]; then 26 | exit 24 27 | fi 28 | 29 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 30 | -g 2 -l 44 -t 1 31 | if [ $? -gt 0 ]; then 32 | exit 43 33 | fi 34 | 35 | diff test/diff/$file.res output_files/$file.g2.res 36 | if [ $? -gt 0 ]; then 37 | exit 44 38 | fi 39 | 40 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 41 | -g 2 -l 44 -t 2 42 | if [ $? -gt 0 ]; then 43 | exit 63 44 | fi 45 | 46 | diff test/diff/$file.res output_files/$file.g2.res 47 | if [ $? -gt 0 ]; then 48 | exit 64 49 | fi 50 | 51 | rm test/diff/$file.res 52 | 53 | -------------------------------------------------------------------------------- /test/diff/diff_radical_shape-31.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=radical_shape-31 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_radical_shape-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=radical_shape-qq 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/diff/diff_realroot-extraction-exact-root.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=realroot-extraction-exact-root 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -p 256 -l 2 -t 1 18 | if [ $? -gt 0 ]; then 19 | exit 3 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.p256.res 23 | if [ $? -gt 0 ]; then 24 | exit 4 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -l 2 -t 2 29 | if [ $? -gt 0 ]; then 30 | exit 21 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 22 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -p 256 -l 2 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 23 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.p256.res 45 | if [ $? -gt 0 ]; then 46 | exit 24 47 | fi 48 | 49 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 50 | -l 44 -t 1 51 | if [ $? -gt 0 ]; then 52 | exit 41 53 | fi 54 | 55 | diff test/diff/$file.res output_files/$file.res 56 | if [ $? -gt 0 ]; then 57 | exit 42 58 | fi 59 | 60 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 61 | -p 256 -l 44 -t 1 62 | if [ $? -gt 0 ]; then 63 | exit 43 64 | fi 65 | 66 | diff test/diff/$file.res output_files/$file.p256.res 67 | if [ $? -gt 0 ]; then 68 | exit 44 69 | fi 70 | 71 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 72 | -l 44 -t 2 73 | if [ $? -gt 0 ]; then 74 | exit 61 75 | fi 76 | 77 | diff test/diff/$file.res output_files/$file.res 78 | if [ $? -gt 0 ]; then 79 | exit 62 80 | fi 81 | 82 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 83 | -p 256 -l 44 -t 2 84 | if [ $? -gt 0 ]; then 85 | exit 63 86 | fi 87 | 88 | diff test/diff/$file.res output_files/$file.p256.res 89 | if [ $? -gt 0 ]; then 90 | exit 64 91 | fi 92 | 93 | rm test/diff/$file.res 94 | -------------------------------------------------------------------------------- /test/diff/diff_realroot1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #test file for real root extraction with adaptative precision 4 | #For this test file, one coordinate of one solutions is very close to 0 5 | #msolve's real root extraction should be able to make the distinction 6 | 7 | file=realroot1 8 | 9 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 10 | -l 2 -t 1 11 | if [ $? -gt 0 ]; then 12 | exit 1 13 | fi 14 | 15 | diff test/diff/$file.res output_files/$file.res 16 | if [ $? -gt 0 ]; then 17 | exit 2 18 | fi 19 | 20 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 21 | -p 256 -l 2 -t 1 22 | if [ $? -gt 0 ]; then 23 | exit 3 24 | fi 25 | 26 | diff test/diff/$file.res output_files/$file.p256.res 27 | if [ $? -gt 0 ]; then 28 | exit 4 29 | fi 30 | 31 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 32 | -l 2 -t 2 33 | if [ $? -gt 0 ]; then 34 | exit 21 35 | fi 36 | 37 | diff test/diff/$file.res output_files/$file.res 38 | if [ $? -gt 0 ]; then 39 | exit 22 40 | fi 41 | 42 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 43 | -p 256 -l 2 -t 2 44 | if [ $? -gt 0 ]; then 45 | exit 23 46 | fi 47 | 48 | diff test/diff/$file.res output_files/$file.p256.res 49 | if [ $? -gt 0 ]; then 50 | exit 24 51 | fi 52 | 53 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 54 | -l 44 -t 1 55 | if [ $? -gt 0 ]; then 56 | exit 41 57 | fi 58 | 59 | diff test/diff/$file.res output_files/$file.res 60 | if [ $? -gt 0 ]; then 61 | exit 42 62 | fi 63 | 64 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 65 | -p 256 -l 44 -t 1 66 | if [ $? -gt 0 ]; then 67 | exit 43 68 | fi 69 | 70 | diff test/diff/$file.res output_files/$file.p256.res 71 | if [ $? -gt 0 ]; then 72 | exit 44 73 | fi 74 | 75 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 76 | -l 44 -t 2 77 | if [ $? -gt 0 ]; then 78 | exit 61 79 | fi 80 | 81 | diff test/diff/$file.res output_files/$file.res 82 | if [ $? -gt 0 ]; then 83 | exit 62 84 | fi 85 | 86 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 87 | -p 256 -l 44 -t 2 88 | if [ $? -gt 0 ]; then 89 | exit 63 90 | fi 91 | 92 | diff test/diff/$file.res output_files/$file.p256.res 93 | if [ $? -gt 0 ]; then 94 | exit 64 95 | fi 96 | 97 | rm test/diff/$file.res 98 | -------------------------------------------------------------------------------- /test/diff/diff_reals_dim0-chgvar.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=reals_dim0-chgvar 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -d 0 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -d 0 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -d 0 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -d 0 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_reals_dim0-extract.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=reals_dim0-extract 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -d 0 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -d 0 -p 256 -l 2 -t 1 18 | if [ $? -gt 0 ]; then 19 | exit 3 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.p256.res 23 | if [ $? -gt 0 ]; then 24 | exit 4 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -d 0 -l 2 -t 2 29 | if [ $? -gt 0 ]; then 30 | exit 21 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 22 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -d 0 -p 256 -l 2 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 23 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.p256.res 45 | if [ $? -gt 0 ]; then 46 | exit 24 47 | fi 48 | 49 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 50 | -d 0 -l 44 -t 1 51 | if [ $? -gt 0 ]; then 52 | exit 41 53 | fi 54 | 55 | diff test/diff/$file.res output_files/$file.res 56 | if [ $? -gt 0 ]; then 57 | exit 42 58 | fi 59 | 60 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 61 | -d 0 -p 256 -l 44 -t 1 62 | if [ $? -gt 0 ]; then 63 | exit 43 64 | fi 65 | 66 | diff test/diff/$file.res output_files/$file.p256.res 67 | if [ $? -gt 0 ]; then 68 | exit 44 69 | fi 70 | 71 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 72 | -d 0 -l 44 -t 2 73 | if [ $? -gt 0 ]; then 74 | exit 61 75 | fi 76 | 77 | diff test/diff/$file.res output_files/$file.res 78 | if [ $? -gt 0 ]; then 79 | exit 62 80 | fi 81 | 82 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 83 | -d 0 -p 256 -l 44 -t 2 84 | if [ $? -gt 0 ]; then 85 | exit 63 86 | fi 87 | 88 | diff test/diff/$file.res output_files/$file.p256.res 89 | if [ $? -gt 0 ]; then 90 | exit 64 91 | fi 92 | 93 | rm test/diff/$file.res 94 | -------------------------------------------------------------------------------- /test/diff/diff_reals_dim0-swapvar.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=reals_dim0-swapvar 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -p 256 -l 2 -t 1 18 | if [ $? -gt 0 ]; then 19 | exit 3 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.p256.res 23 | if [ $? -gt 0 ]; then 24 | exit 4 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -l 2 -t 2 29 | if [ $? -gt 0 ]; then 30 | exit 21 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 22 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -p 256 -l 2 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 23 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.p256.res 45 | if [ $? -gt 0 ]; then 46 | exit 24 47 | fi 48 | 49 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 50 | -l 44 -t 1 51 | if [ $? -gt 0 ]; then 52 | exit 41 53 | fi 54 | 55 | diff test/diff/$file.res output_files/$file.res 56 | if [ $? -gt 0 ]; then 57 | exit 42 58 | fi 59 | 60 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 61 | -p 256 -l 44 -t 1 62 | if [ $? -gt 0 ]; then 63 | exit 43 64 | fi 65 | 66 | diff test/diff/$file.res output_files/$file.p256.res 67 | if [ $? -gt 0 ]; then 68 | exit 44 69 | fi 70 | 71 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 72 | -l 44 -t 2 73 | if [ $? -gt 0 ]; then 74 | exit 61 75 | fi 76 | 77 | diff test/diff/$file.res output_files/$file.res 78 | if [ $? -gt 0 ]; then 79 | exit 62 80 | fi 81 | 82 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 83 | -p 256 -l 44 -t 2 84 | if [ $? -gt 0 ]; then 85 | exit 63 86 | fi 87 | 88 | diff test/diff/$file.res output_files/$file.p256.res 89 | if [ $? -gt 0 ]; then 90 | exit 64 91 | fi 92 | 93 | rm test/diff/$file.res 94 | -------------------------------------------------------------------------------- /test/diff/diff_reals_dim0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=reals_dim0 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -p 256 -l 2 -t 1 18 | if [ $? -gt 0 ]; then 19 | exit 3 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.p256.res 23 | if [ $? -gt 0 ]; then 24 | exit 4 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -l 2 -t 2 29 | if [ $? -gt 0 ]; then 30 | exit 21 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 22 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -p 256 -l 2 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 23 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.p256.res 45 | if [ $? -gt 0 ]; then 46 | exit 24 47 | fi 48 | 49 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 50 | -l 44 -t 1 51 | if [ $? -gt 0 ]; then 52 | exit 41 53 | fi 54 | 55 | diff test/diff/$file.res output_files/$file.res 56 | if [ $? -gt 0 ]; then 57 | exit 42 58 | fi 59 | 60 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 61 | -p 256 -l 44 -t 1 62 | if [ $? -gt 0 ]; then 63 | exit 43 64 | fi 65 | 66 | diff test/diff/$file.res output_files/$file.p256.res 67 | if [ $? -gt 0 ]; then 68 | exit 44 69 | fi 70 | 71 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 72 | -l 44 -t 2 73 | if [ $? -gt 0 ]; then 74 | exit 61 75 | fi 76 | 77 | diff test/diff/$file.res output_files/$file.res 78 | if [ $? -gt 0 ]; then 79 | exit 62 80 | fi 81 | 82 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 83 | -p 256 -l 44 -t 2 84 | if [ $? -gt 0 ]; then 85 | exit 63 86 | fi 87 | 88 | diff test/diff/$file.res output_files/$file.p256.res 89 | if [ $? -gt 0 ]; then 90 | exit 64 91 | fi 92 | 93 | rm test/diff/$file.res 94 | -------------------------------------------------------------------------------- /test/diff/diff_source.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 4 | -P 2 -d 0 -l 2 -t 1 5 | if [ $? -gt 0 ]; then 6 | exit 1 7 | fi 8 | 9 | diff test/diff/$file.res output_files/$file.res 10 | if [ $? -gt 0 ]; then 11 | exit 2 12 | fi 13 | 14 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 15 | -L 1 -P 2 -d 0 -l 2 -t 1 16 | if [ $? -gt 0 ]; then 17 | exit 101 18 | fi 19 | 20 | diff test/diff/$file.res output_files/$file.res 21 | if [ $? -gt 0 ]; then 22 | exit 201 23 | fi 24 | 25 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 26 | -P 2 -d 0 -l 2 -t 2 27 | if [ $? -gt 0 ]; then 28 | exit 21 29 | fi 30 | 31 | diff test/diff/$file.res output_files/$file.res 32 | if [ $? -gt 0 ]; then 33 | exit 22 34 | fi 35 | 36 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 37 | -L 1 -P 2 -d 0 -l 2 -t 2 38 | if [ $? -gt 0 ]; then 39 | exit 211 40 | fi 41 | 42 | diff test/diff/$file.res output_files/$file.res 43 | if [ $? -gt 0 ]; then 44 | exit 221 45 | fi 46 | 47 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 48 | -P 2 -d 0 -l 44 -t 1 49 | if [ $? -gt 0 ]; then 50 | exit 41 51 | fi 52 | 53 | diff test/diff/$file.res output_files/$file.res 54 | if [ $? -gt 0 ]; then 55 | exit 42 56 | fi 57 | 58 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 59 | -L 1 -P 2 -d 0 -l 44 -t 1 60 | if [ $? -gt 0 ]; then 61 | exit 411 62 | fi 63 | 64 | diff test/diff/$file.res output_files/$file.res 65 | if [ $? -gt 0 ]; then 66 | exit 421 67 | fi 68 | 69 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 70 | -P 2 -d 0 -l 44 -t 2 71 | if [ $? -gt 0 ]; then 72 | exit 61 73 | fi 74 | 75 | diff test/diff/$file.res output_files/$file.res 76 | if [ $? -gt 0 ]; then 77 | exit 62 78 | fi 79 | 80 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 81 | -L 1 -P 2 -d 0 -l 44 -t 2 82 | if [ $? -gt 0 ]; then 83 | exit 611 84 | fi 85 | 86 | diff test/diff/$file.res output_files/$file.res 87 | if [ $? -gt 0 ]; then 88 | exit 621 89 | fi 90 | 91 | rm test/diff/$file.res 92 | -------------------------------------------------------------------------------- /test/diff/diff_test-lifting2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=test-lifting2 4 | 5 | source test/diff/diff_source.sh 6 | 7 | -------------------------------------------------------------------------------- /test/diff/diff_truncate_gb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=kat8-qq-truncate 4 | 5 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 6 | -N 5 -g 2 -l 2 -t 1 7 | if [ $? -gt 0 ]; then 8 | exit 1 9 | fi 10 | 11 | diff test/diff/$file.res output_files/$file.res 12 | if [ $? -gt 0 ]; then 13 | exit 2 14 | fi 15 | 16 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 17 | -N 5 -g 2 -l 2 -t 2 18 | if [ $? -gt 0 ]; then 19 | exit 21 20 | fi 21 | 22 | diff test/diff/$file.res output_files/$file.res 23 | if [ $? -gt 0 ]; then 24 | exit 22 25 | fi 26 | 27 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 28 | -N 5 -g 2 -l 44 -t 1 29 | if [ $? -gt 0 ]; then 30 | exit 41 31 | fi 32 | 33 | diff test/diff/$file.res output_files/$file.res 34 | if [ $? -gt 0 ]; then 35 | exit 42 36 | fi 37 | 38 | $(pwd)/msolve -f input_files/$file.ms -o test/diff/$file.res \ 39 | -N 5 -g 2 -l 44 -t 2 40 | if [ $? -gt 0 ]; then 41 | exit 61 42 | fi 43 | 44 | diff test/diff/$file.res output_files/$file.res 45 | if [ $? -gt 0 ]; then 46 | exit 62 47 | fi 48 | 49 | rm test/diff/$file.res 50 | -------------------------------------------------------------------------------- /test/diff/diff_xy-qq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | file=xy-qq 4 | 5 | source test/diff/diff_source.sh 6 | -------------------------------------------------------------------------------- /test/neogb/io/validate_input_data.c: -------------------------------------------------------------------------------- 1 | #include "../../../src/neogb/io.h" 2 | 3 | int main(void) 4 | { 5 | const int32_t lens[] = {2, 2}; 6 | const int32_t cfs[] = {1, -1, 1, -1}; 7 | uint32_t field_char = 32003; 8 | int32_t mon_order = 0; 9 | int32_t elim_block_len = 1; 10 | int32_t nr_vars = 2; 11 | int32_t nr_gens = 2; 12 | int32_t nr_nf = 1; /* must be <= nr_gens */ 13 | int32_t ht_size = 17; 14 | int32_t nr_threads = 1; 15 | int32_t max_nr_pairs = 0; 16 | int32_t reset_ht = 2; 17 | int32_t la_option = 45; /* incorrect: should be fixed to 2 */ 18 | int32_t use_signatures = 0; 19 | int32_t reduce_gb = -1; /* incorrect: should be fixed to 0 */ 20 | int32_t truncate_lifting = -1; /* incorrect: should be fixed to 0 */ 21 | int32_t info_level = 2; 22 | int *invalid_gens = NULL; 23 | 24 | int res = validate_input_data(&invalid_gens, cfs, lens, 25 | &field_char, &mon_order, &elim_block_len, &nr_vars, 26 | &nr_gens, &nr_nf, &ht_size, &nr_threads, &max_nr_pairs, 27 | &reset_ht, &la_option, &use_signatures, &reduce_gb, 28 | &truncate_lifting, &info_level); 29 | 30 | if (res == -1) return 1; 31 | if (res == 0) return 1; 32 | 33 | if (invalid_gens[0] != 0 || invalid_gens[1] != 0) return 1; 34 | if (field_char != 32003) return 1; 35 | if (mon_order != 0) return 1; 36 | if (elim_block_len != 1) return 1; 37 | if (nr_vars!= 2) return 1; 38 | if (nr_gens != 2) return 1; 39 | if (nr_nf != 1) return 1; 40 | if (ht_size != 17) return 1; 41 | if (nr_threads != 1) return 1; 42 | if (max_nr_pairs != 0) return 1; 43 | if (reset_ht != 2) return 1; 44 | if (la_option != 2) return 1; /* fixed */ 45 | if (use_signatures != 0) return 1; 46 | if (reduce_gb != 0) return 1; /* fixed */ 47 | if (truncate_lifting != 0) return 1; 48 | if (info_level != 2) return 1; 49 | 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /test/scripts/nonradical_radicalshape-31.mpl: -------------------------------------------------------------------------------- 1 | read "fglm_build_matrixn.mpl": 2 | 3 | char:= nextprime (2^30): 4 | vars:= [x,y]: 5 | F:= subs ({x=4578*x+789*y,y=1453*x+977*y},[x^2,x*y,y^2]): 6 | str:= "nonradical_radicalshape-31": 7 | 8 | main (F,vars,char,str); 9 | -------------------------------------------------------------------------------- /test/scripts/nonradical_shape-31.mpl: -------------------------------------------------------------------------------- 1 | read "fglm_build_matrixn.mpl": 2 | 3 | char:= nextprime (nextprime (2^30)): 4 | vars:= [seq (cat (x,i),i=1..4)]: 5 | F:= [570511439*x4^11+353378708*x4^10+599390609*x4^9+1049120212*x4^8+826752179*x4^7+19533939*x4^6+45047444*x4^5+448227342*x4^4+74356583*x4^3+17844919*x4^2+627145600*x4+ 6 | 372416000, 7 | x1+735241234*x4^10+884961191*x4^9+136721026*x4^8+198304612*x4^7+640439652*x4^6+417177801*x4^5+836782561*x4^4+537655879*x4^3+147944788*x4^2+702680360*x4+540721923, 8 | x2+904966252*x4^10+698412071*x4^9+618307600*x4^8+511091141*x4^7+316773880*x4^6+366222184*x4^5+961264978*x4^4+76338300*x4^3+25585315*x4^2+855028007*x4+347706282, 9 | x3+290319951*x4^10+366206486*x4^9+405889704*x4^8+213561267*x4^7+999862911*x4^6+838518850*x4^5+772320120*x4^4+264387201*x4^3+893645500*x4^2+x3+291291731*x4+117559519]: 10 | str:= "nonradical_shape-31": 11 | 12 | main (F,vars,char,str); 13 | -------------------------------------------------------------------------------- /test/scripts/radical_shape-31.mpl: -------------------------------------------------------------------------------- 1 | read "fglm_build_matrixn.mpl": 2 | 3 | char:= 1073741827: 4 | vars:= [x,y,z]: 5 | F:= [x - 2*z^3 - 3*z^2 - 5*z - 7, 6 | y - z^3 + z^2 - z + 1, 7 | z^4 - z^3 - z^2 - z - 1]: 8 | str:= "radical_shape-31": 9 | 10 | main (F,vars,char,str); 11 | --------------------------------------------------------------------------------