UPDATE: Adds DEGREES and RADIANS (#493)

This commit is contained in:
Nicolás Hatcher Andrés
2025-10-30 23:45:29 +01:00
committed by GitHub
parent a768bc5974
commit 6ce4756d55
4 changed files with 19 additions and 1 deletions

View File

@@ -846,6 +846,8 @@ fn get_function_args_signature(kind: &Function, arg_count: usize) -> Vec<Signatu
Function::Fact => args_signature_scalars(arg_count, 1, 0),
Function::Factdouble => args_signature_scalars(arg_count, 1, 0),
Function::Sign => args_signature_scalars(arg_count, 1, 0),
Function::Radians => args_signature_scalars(arg_count, 1, 0),
Function::Degrees => args_signature_scalars(arg_count, 1, 0),
}
}
@@ -1080,5 +1082,7 @@ fn static_analysis_on_function(kind: &Function, args: &[Node]) -> StaticResult {
Function::Fact => scalar_arguments(args),
Function::Factdouble => scalar_arguments(args),
Function::Sign => scalar_arguments(args),
Function::Radians => scalar_arguments(args),
Function::Degrees => scalar_arguments(args),
}
}

View File

@@ -485,6 +485,8 @@ impl Model {
Ok(acc)
});
single_number_fn!(fn_sign, |f| Ok(f64::signum(f)));
single_number_fn!(fn_degrees, |f| Ok(f * (180.0 / PI)));
single_number_fn!(fn_radians, |f| Ok(f * (PI / 180.0)));
pub(crate) fn fn_pi(&mut self, args: &[Node], cell: CellReferenceIndex) -> CalcResult {
if !args.is_empty() {

View File

@@ -90,6 +90,9 @@ pub enum Function {
Factdouble,
Sign,
Radians,
Degrees,
// Information
ErrorType,
Formulatext,
@@ -283,7 +286,7 @@ pub enum Function {
}
impl Function {
pub fn into_iter() -> IntoIter<Function, 227> {
pub fn into_iter() -> IntoIter<Function, 229> {
[
Function::And,
Function::False,
@@ -334,6 +337,8 @@ impl Function {
Function::Product,
Function::Rand,
Function::Randbetween,
Function::Radians,
Function::Degrees,
Function::Round,
Function::Rounddown,
Function::Roundup,
@@ -607,6 +612,9 @@ impl Function {
"EXP" => Some(Function::Exp),
"SIGN" => Some(Function::Sign),
"RADIANS" => Some(Function::Radians),
"DEGREES" => Some(Function::Degrees),
"PI" => Some(Function::Pi),
"ABS" => Some(Function::Abs),
"SQRT" => Some(Function::Sqrt),
@@ -1051,6 +1059,8 @@ impl fmt::Display for Function {
Function::Fact => write!(f, "FACT"),
Function::Factdouble => write!(f, "FACTDOUBLE"),
Function::Sign => write!(f, "SIGN"),
Function::Radians => write!(f, "RADIANS"),
Function::Degrees => write!(f, "DEGREES"),
}
}
}
@@ -1306,6 +1316,8 @@ impl Model {
Function::Fact => self.fn_fact(args, cell),
Function::Factdouble => self.fn_factdouble(args, cell),
Function::Sign => self.fn_sign(args, cell),
Function::Radians => self.fn_radians(args, cell),
Function::Degrees => self.fn_degrees(args, cell),
}
}
}

Binary file not shown.