diff --git a/fractional/src/trigonometry.rs b/fractional/src/trigonometry.rs index 580bcfd..f43ed38 100644 --- a/fractional/src/trigonometry.rs +++ b/fractional/src/trigonometry.rs @@ -45,7 +45,9 @@ pub trait Trig { 91 ..=180 => Self::sintab()[180 - d as usize], 181..=270 => -Self::sintab()[d as usize - 180], 271..=359 => -Self::sintab()[360 - d as usize], - _ => Self::sin(d % 360), + _ => { + Self::sin(if d < 0 { d % 360 + 360 } else { d % 360 }) + }, } } @@ -56,7 +58,9 @@ pub trait Trig { 91 ..=180 => -Self::sintab()[90 - (180 - d as usize)], 181..=270 => -Self::sintab()[90 - (d as usize - 180)], 271..=359 => Self::sintab()[90 - (360 - d as usize)], - _ => Self::cos(d % 360), + _ => { + Self::cos(if d < 0 { d % 360 + 360 } else { d % 360 }) + }, } } @@ -64,7 +68,9 @@ pub trait Trig { match d { 0 ..=179 => Self::tantab()[d as usize], 180..=359 => Self::tantab()[d as usize - 180], - _ => Self::tan(d % 360), + _ => { + Self::tan(if d < 0 { d % 360 + 360 } else { d % 360 }) + }, } } }