Go to the first, previous, next, last section, table of contents.

### `nd_gr`, `nd_gr_trace`, `nd_f4`, `nd_f4_trace`, `nd_weyl_gr`, `nd_weyl_gr_trace`

`nd_gr(plist,vlist,p,order)`
`nd_gr_trace(plist,vlist,homo,p,order)`
`nd_f4(plist,vlist,modular,order)`
`nd_f4_trace(plist,vlist,homo,p,order)`
`nd_weyl_gr(plist,vlist,p,order)`
`nd_weyl_gr_trace(plist,vlist,homo,p,order)`
  :: Groebner basis computation (built-in functions)

return
  list
plist vlist
  list
order
  number, list or matrix
homo
  flag
modular
  flag or prime

- These functions are new implementations for computing Groebner bases.
- `nd_gr` executes Buchberger algorithm over the rationals if `p` is 0, and that over GF(p) if `p` is a prime.
- `nd_gr_trace` executes the trace algorithm over the rationals. If `p` is 0 or 1, the trace algorithm is executed until it succeeds by using automatically chosen primes. If `p` a positive prime, the trace is comuted over GF(p). If the trace algorithm fails 0 is returned. If `p` is negative, the Groebner basis check and ideal-membership check are omitted. In this case, an automatically chosen prime if `p` is 1, otherwise the specified prime is used to compute a Groebner basis candidate. Execution of `nd_f4_trace` is done as follows: For each total degree, an F4-reduction of S-polynomials over a finite field is done, and S-polynomials which give non-zero basis elements are gathered. Then F4-reduction over Q is done for the gathered S-polynomials. The obtained polynomial set is a Groebner basis candidate and the same check procedure as in the case of `nd_gr_trace` is done.
- `nd_f4` executes F4 algorithm over Q if `modular` is equal to 0, or over a finite field GF(`modular`) if `modular` is a prime number of machine size (<2^29).
- `nd_weyl_gr`, `nd_weyl_gr_trace` are for Weyl algebra computation.
- Each function cannot handle rational function coefficient cases.
- In general these functions are more efficient than `dp_gr_main`, `dp_gr_mod_main`, especially over finite fields.

    [38] load("cyclic")$
    [49] C=cyclic(7)$
    [50] V=vars(C)$
    [51] cputime(1)$
    [52] dp_gr_mod_main(C,V,0,31991,0)$
    26.06sec + gc : 0.313sec(26.4sec)
    [53] nd_gr(C,V,31991,0)$
    ndv_alloc=1477188
    5.737sec + gc : 0.1837sec(5.921sec)
    [54] dp_f4_mod_main(C,V,31991,0)$
    3.51sec + gc : 0.7109sec(4.221sec)
    [55] nd_f4(C,V,31991,0)$
    1.906sec + gc : 0.126sec(2.032sec)

`References`
  section `dp_ord`, section `dp_gr_flags`, `dp_gr_print`, section Controlling Groebner basis computations

Go to the first, previous, next, last section, table of contents.