groebner 0.2.0

A Rust library implementing Groebner basis algorithms
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use groebner::{groebner_basis, MonomialOrder, PolynomialRing};
use num_rational::BigRational;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let ring = PolynomialRing::<BigRational>::new(["x", "y"], MonomialOrder::Lex)?;
    let f = ring.parse("x^2 + y^2 - 1")?;
    let g = ring.parse("x - y")?;
    let basis = groebner_basis(vec![f, g], ring.order(), true)?;

    for (i, polynomial) in basis.iter().enumerate() {
        println!("g{}: {}", i + 1, ring.format(polynomial)?);
    }

    Ok(())
}