UPDATE: Dump of initial files
This commit is contained in:
59
base/src/functions/engineering/misc.rs
Normal file
59
base/src/functions/engineering/misc.rs
Normal file
@@ -0,0 +1,59 @@
|
||||
use crate::{
|
||||
calc_result::{CalcResult, CellReference},
|
||||
expressions::parser::Node,
|
||||
model::Model,
|
||||
number_format::to_precision,
|
||||
};
|
||||
|
||||
impl Model {
|
||||
// DELTA(number1, [number2])
|
||||
pub(crate) fn fn_delta(&mut self, args: &[Node], cell: CellReference) -> CalcResult {
|
||||
let arg_count = args.len();
|
||||
if !(1..=2).contains(&arg_count) {
|
||||
return CalcResult::new_args_number_error(cell);
|
||||
}
|
||||
let number1 = match self.get_number_no_bools(&args[0], cell) {
|
||||
Ok(f) => f,
|
||||
Err(error) => return error,
|
||||
};
|
||||
let number2 = if arg_count > 1 {
|
||||
match self.get_number_no_bools(&args[1], cell) {
|
||||
Ok(f) => f,
|
||||
Err(error) => return error,
|
||||
}
|
||||
} else {
|
||||
0.0
|
||||
};
|
||||
|
||||
if to_precision(number1, 16) == to_precision(number2, 16) {
|
||||
CalcResult::Number(1.0)
|
||||
} else {
|
||||
CalcResult::Number(0.0)
|
||||
}
|
||||
}
|
||||
|
||||
// GESTEP(number, [step])
|
||||
pub(crate) fn fn_gestep(&mut self, args: &[Node], cell: CellReference) -> CalcResult {
|
||||
let arg_count = args.len();
|
||||
if !(1..=2).contains(&arg_count) {
|
||||
return CalcResult::new_args_number_error(cell);
|
||||
}
|
||||
let number = match self.get_number_no_bools(&args[0], cell) {
|
||||
Ok(f) => f,
|
||||
Err(error) => return error,
|
||||
};
|
||||
let step = if arg_count > 1 {
|
||||
match self.get_number_no_bools(&args[1], cell) {
|
||||
Ok(f) => f,
|
||||
Err(error) => return error,
|
||||
}
|
||||
} else {
|
||||
0.0
|
||||
};
|
||||
if to_precision(number, 16) >= to_precision(step, 16) {
|
||||
CalcResult::Number(1.0)
|
||||
} else {
|
||||
CalcResult::Number(0.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user