| Crates.io | math_utils_lib |
| lib.rs | math_utils_lib |
| version | 0.4.1 |
| created_at | 2024-03-28 15:36:07.539037+00 |
| updated_at | 2025-03-08 11:13:44.205802+00 |
| description | A library providing math utilities such as a parser/evaluator and a LaTeX export to export a history of parsed expressions and solved equations to LaTeX. |
| homepage | |
| repository | https://github.com/Waigo01/math_utils_lib |
| max_upload_size | |
| id | 1189129 |
| size | 358,092 |
This repo/crate provides a number of math utilities:
:warning: This repo/crate has not hit 1.0.0 yet, breaking changes are bound to happen!
For usage information concerning the mathematical properties of the evaluator and more examples, please take a look at the wiki.
For programming documentation, please take a look at docs.rs.
let res = quick_eval("3*3", &Context::empty())?.to_vec();
assert_eq!(res[0], value!(9));
let x = Variable::new("x", value!(3));
let res = quick_eval("3x", &Context::from_vars(vec![x]))?.to_vec();
assert_eq!(res[0], value!(9));
let res = quick_eval("[[3, 4, 5], [1, 2, 3], [5, 6, 7]]", &Context::empty())?.to_vec();
assert_eq!(res[0], value!(3, 1, 5; 4, 2, 6; 5, 3, 7));
let function = parse("5x^2+2x+x")?;
let function_var = Function::new("f", function, vec!["x"]);
let res = quick_eval("f(5)", &Context::from_funs(vec![function_var]))?.to_vec();
assert_eq!(res[0], value!(140));
let res = quick_eval("eq(x^2=9, x)", &Context::empty())?.round(3).to_vec();
assert_eq!(res, vec![value!(-3), value!(3)]);
let equation = "eq(2x+5y+2z=-38, 3x-2y+4z=17, -6x+y-7z=-12, x, y, z)";
let res = quick_eval(equation, &Context::empty())?.round(3).to_vec();
assert_eq!(res, vec![value!(3, -8, -2)]);
[!CAUTION] Due to dependency issues output is currently broken!
let parsed_expr = parse("3*3+6^5")?;
let res = eval(&parsed_expr, &Context::empty())?;
let step = Step::Calc { term: parsed_expr, result: res, variable_save: Some("x".to_string()) };
let png = png_from_latex(step.as_latex_inline(), 200, "#FFFFFF")?;
Output:

When opening an issue, please specify the following:
When it comes to contributions, feel free to fork this repo and open pull requests.