Immutable and mutable polynomial libraries for MoonBit with canonical dense, sparse, and context-aware representations.
Dependencies
let p = @immut.DensePolynomial::from_coefficients([1, 2, 3])
let q = p.pow(2)
let value = q.eval(2)
let buffer = @mutable.DensePolynomial::from_coefficients([1, 2, 3])
buffer.set_coefficient(1, 5)
buffer.add_inplace(@mutable.DensePolynomial::from_coefficients([-1, -5, -3]))
let context = @immut.VariableContext::from_names(["x", "y"])
let x = context.require_variable("x")
let y = context.require_variable("y")
let named = @immut.ContextPolynomial::from_named_terms_as_sparse(
context,
[([(x, 2U)], 1), ([(x, 1U), (y, 1U)], 3), ([], 4)],
)
let named_value = named.eval_named([(x, 2), (y, 5)])
let partial = named.eval_partial_named([(x.to_type_theory_name(), 2)])
let y_plus_one = @immut.ContextPolynomial::from_named_terms_as_sparse(
context,
[([(y, 1U)], 1), ([], 1)],
)
let substituted = named.substitute([(x, @immut.Polynomial(y_plus_one))])Immutable and mutable polynomial libraries for MoonBit with canonical dense, sparse, and context-aware representations.
Dependencies