mod component;
mod derive;
mod equation;
mod operators;
mod parser;
mod utils;
pub use component::Component;
pub use equation::Equation;
pub use operators::Operator;
#[cfg(test)]
mod tests {
use super::equation::Equation;
#[test]
fn it_works() {
let eq = Equation::new("x - 2 * a + 4 ^ b");
assert_eq!(
eq.solve_with(vec![("x", 10.0), ("a", 4.5), ("b", 1.0)])
.to_float()
.unwrap(),
5.0
);
assert_eq!(eq.solve_for(10.0, vec![("a", 4.5), ("b", 1.0)]).1, 15.0);
assert_eq!(Equation::new("(16 + x) / 4").solve_for(8.0, vec![]).1, 16.0);
assert_eq!(Equation::new("4 ^ x * 3").solve_for(192.0, vec![]).1, 3.0);
assert_eq!(
Equation::new("x * 0")
.solve_with(vec![])
.to_float()
.unwrap(),
0.0
);
println!("{:?}", Equation::new(""));
println!("{:?}", Equation::new("x ^ 3").derive().text);
println!("{:?}", Equation::new("x^sin(x)").derive().text);
}
}