Change trig functions to take/return radians.

This commit is contained in:
Stephen Chung 2021-02-10 12:10:50 +08:00
parent 8f47f7c9e2
commit 8c26b49a39
3 changed files with 15 additions and 14 deletions

View File

@ -13,6 +13,7 @@ Bug fixes
Breaking changes
----------------
* Trigonometry functions now take radians and return radians instead of degrees.
* `Dynamic::into_shared` is no longer available under `no_closure`. It used to panic.
Enhancements

View File

@ -112,40 +112,40 @@ mod trig_functions {
use crate::FLOAT;
pub fn sin(x: FLOAT) -> FLOAT {
x.to_radians().sin()
x.sin()
}
pub fn cos(x: FLOAT) -> FLOAT {
x.to_radians().cos()
x.cos()
}
pub fn tan(x: FLOAT) -> FLOAT {
x.to_radians().tan()
x.tan()
}
pub fn sinh(x: FLOAT) -> FLOAT {
x.to_radians().sinh()
x.sinh()
}
pub fn cosh(x: FLOAT) -> FLOAT {
x.to_radians().cosh()
x.cosh()
}
pub fn tanh(x: FLOAT) -> FLOAT {
x.to_radians().tanh()
x.tanh()
}
pub fn asin(x: FLOAT) -> FLOAT {
x.asin().to_degrees()
x.asin()
}
pub fn acos(x: FLOAT) -> FLOAT {
x.acos().to_degrees()
x.acos()
}
pub fn atan(x: FLOAT) -> FLOAT {
x.atan().to_degrees()
x.atan()
}
pub fn asinh(x: FLOAT) -> FLOAT {
x.asinh().to_degrees()
x.asinh()
}
pub fn acosh(x: FLOAT) -> FLOAT {
x.acosh().to_degrees()
x.acosh()
}
pub fn atanh(x: FLOAT) -> FLOAT {
x.atanh().to_degrees()
x.atanh()
}
}

View File

@ -14,10 +14,10 @@ fn test_math() -> Result<(), Box<EvalAltResult>> {
assert_eq!(engine.eval::<INT>("3 % 2")?, 1);
#[cfg(not(feature = "no_float"))]
assert!((engine.eval::<FLOAT>("sin(30.0)")? - 0.5).abs() < 0.001);
assert!((engine.eval::<FLOAT>("sin(PI()/6.0)")? - 0.5).abs() < 0.001);
#[cfg(not(feature = "no_float"))]
assert!(engine.eval::<FLOAT>("cos(90.0)")?.abs() < 0.001);
assert!(engine.eval::<FLOAT>("cos(PI()/2.0)")?.abs() < 0.001);
#[cfg(not(feature = "only_i32"))]
assert_eq!(