Crates.io | simple-shunting |
lib.rs | simple-shunting |
version | 0.1.2 |
source | src |
created_at | 2024-02-13 18:01:39.339926 |
updated_at | 2024-02-13 18:01:39.339926 |
description | A simplified shunting library for evaluating math expressions in cosmwasm |
homepage | |
repository | https://github.com/cowboy0015/tox/tree/master/shunting |
max_upload_size | |
id | 1138763 |
size | 43,701 |
Simplified shunting library for evaluating math expressions in cosmwasm smart contracts. The original crate https://crates.io/crates/shunting could not be used directly for cosmwasm (rand library can not be used directly for wasm-unknonw-unknown target).
fn main() {
let input = "sin(0.2)^2 + cos(0.2)^2";
let expr = ShuntingParser::parse_str(input).unwrap();
let result = MathContext::new().eval(&expr).unwrap();
println!("{} = {}", expr, result);
}
MathContext
allows keeping context across multiple invocations to parse and evaluate. You can do this via the setvar
method.
The crate also ship with the tox
binary with a math repl.
$ tox
>> 4!
24
>> a = sin(0.2)^2 + cos(0.2)^2
>> a
1
>> (-3)!
NaN
>> (84 % (5/2)) !
1.32934
>> pi * 2.1^2 / cbrt(-(6+3))
-6.660512