UPDATE: Adds DEGREES and RADIANS (#493)
This commit is contained in:
committed by
GitHub
parent
a768bc5974
commit
6ce4756d55
@@ -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::Fact => args_signature_scalars(arg_count, 1, 0),
|
||||||
Function::Factdouble => 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::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::Fact => scalar_arguments(args),
|
||||||
Function::Factdouble => scalar_arguments(args),
|
Function::Factdouble => scalar_arguments(args),
|
||||||
Function::Sign => scalar_arguments(args),
|
Function::Sign => scalar_arguments(args),
|
||||||
|
Function::Radians => scalar_arguments(args),
|
||||||
|
Function::Degrees => scalar_arguments(args),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -485,6 +485,8 @@ impl Model {
|
|||||||
Ok(acc)
|
Ok(acc)
|
||||||
});
|
});
|
||||||
single_number_fn!(fn_sign, |f| Ok(f64::signum(f)));
|
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 {
|
pub(crate) fn fn_pi(&mut self, args: &[Node], cell: CellReferenceIndex) -> CalcResult {
|
||||||
if !args.is_empty() {
|
if !args.is_empty() {
|
||||||
|
|||||||
@@ -90,6 +90,9 @@ pub enum Function {
|
|||||||
Factdouble,
|
Factdouble,
|
||||||
Sign,
|
Sign,
|
||||||
|
|
||||||
|
Radians,
|
||||||
|
Degrees,
|
||||||
|
|
||||||
// Information
|
// Information
|
||||||
ErrorType,
|
ErrorType,
|
||||||
Formulatext,
|
Formulatext,
|
||||||
@@ -283,7 +286,7 @@ pub enum Function {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Function {
|
impl Function {
|
||||||
pub fn into_iter() -> IntoIter<Function, 227> {
|
pub fn into_iter() -> IntoIter<Function, 229> {
|
||||||
[
|
[
|
||||||
Function::And,
|
Function::And,
|
||||||
Function::False,
|
Function::False,
|
||||||
@@ -334,6 +337,8 @@ impl Function {
|
|||||||
Function::Product,
|
Function::Product,
|
||||||
Function::Rand,
|
Function::Rand,
|
||||||
Function::Randbetween,
|
Function::Randbetween,
|
||||||
|
Function::Radians,
|
||||||
|
Function::Degrees,
|
||||||
Function::Round,
|
Function::Round,
|
||||||
Function::Rounddown,
|
Function::Rounddown,
|
||||||
Function::Roundup,
|
Function::Roundup,
|
||||||
@@ -607,6 +612,9 @@ impl Function {
|
|||||||
"EXP" => Some(Function::Exp),
|
"EXP" => Some(Function::Exp),
|
||||||
"SIGN" => Some(Function::Sign),
|
"SIGN" => Some(Function::Sign),
|
||||||
|
|
||||||
|
"RADIANS" => Some(Function::Radians),
|
||||||
|
"DEGREES" => Some(Function::Degrees),
|
||||||
|
|
||||||
"PI" => Some(Function::Pi),
|
"PI" => Some(Function::Pi),
|
||||||
"ABS" => Some(Function::Abs),
|
"ABS" => Some(Function::Abs),
|
||||||
"SQRT" => Some(Function::Sqrt),
|
"SQRT" => Some(Function::Sqrt),
|
||||||
@@ -1051,6 +1059,8 @@ impl fmt::Display for Function {
|
|||||||
Function::Fact => write!(f, "FACT"),
|
Function::Fact => write!(f, "FACT"),
|
||||||
Function::Factdouble => write!(f, "FACTDOUBLE"),
|
Function::Factdouble => write!(f, "FACTDOUBLE"),
|
||||||
Function::Sign => write!(f, "SIGN"),
|
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::Fact => self.fn_fact(args, cell),
|
||||||
Function::Factdouble => self.fn_factdouble(args, cell),
|
Function::Factdouble => self.fn_factdouble(args, cell),
|
||||||
Function::Sign => self.fn_sign(args, cell),
|
Function::Sign => self.fn_sign(args, cell),
|
||||||
|
Function::Radians => self.fn_radians(args, cell),
|
||||||
|
Function::Degrees => self.fn_degrees(args, cell),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
xlsx/tests/calc_tests/RADIANS_DEGREES.xlsx
Normal file
BIN
xlsx/tests/calc_tests/RADIANS_DEGREES.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user