Skip to content

Commit

Permalink
powi/powf simplexpr functions (#1255)
Browse files Browse the repository at this point in the history
* Add `powi`/`powf` expressions

* Update docs
  • Loading branch information
ovalkonia authored Dec 26, 2024
1 parent f2b6870 commit c3b28d8
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
16 changes: 16 additions & 0 deletions crates/simplexpr/src/eval.rs
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,22 @@ fn call_expr_function(name: &str, args: Vec<DynVal>) -> Result<DynVal, EvalError
}
_ => Err(EvalError::WrongArgCount(name.to_string())),
},
"powi" => match args.as_slice() {
[num, n] => {
let num = num.as_f64()?;
let n = n.as_i32()?;
Ok(DynVal::from(f64::powi(num, n)))
}
_ => Err(EvalError::WrongArgCount(name.to_string())),
},
"powf" => match args.as_slice() {
[num, n] => {
let num = num.as_f64()?;
let n = n.as_f64()?;
Ok(DynVal::from(f64::powf(num, n)))
}
_ => Err(EvalError::WrongArgCount(name.to_string())),
},
"sin" => match args.as_slice() {
[num] => {
let num = num.as_f64()?;
Expand Down
1 change: 1 addition & 0 deletions docs/src/expression_language.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Supported currently are the following features:
- `round(number, decimal_digits)`: Round a number to the given amount of decimals
- `sin(number)`, `cos(number)`, `tan(number)`, `cot(number)`: Calculate the trigonometric value of a given number in **radians**
- `min(a, b)`, `max(a, b)`: Get the smaller or bigger number out of two given numbers
- `powi(num, n)`, `powf(num, n)`: Raise number `num` to power `n`. `powi` expects `n` to be of type `i32`
- `degtorad(number)`: Converts a number from degrees to radians
- `radtodeg(number)`: Converts a number from radians to degrees
- `replace(string, regex, replacement)`: Replace matches of a given regex in a string
Expand Down

0 comments on commit c3b28d8

Please sign in to comment.