summaryrefslogtreecommitdiff
path: root/src/num_traits.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/num_traits.rs')
-rw-r--r--src/num_traits.rs80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/num_traits.rs b/src/num_traits.rs
new file mode 100644
index 0000000..3e18a4b
--- /dev/null
+++ b/src/num_traits.rs
@@ -0,0 +1,80 @@
+pub trait Trig<T> {
+ fn sin(self) -> Self;
+ fn cos(self) -> Self;
+ fn tan(self) -> Self;
+
+ fn asin(self) -> Self;
+ fn acos(self) -> Self;
+ fn atan2(self, other: Self) -> Self;
+}
+
+impl Trig<f32> for f32 {
+ fn sin(self) -> Self {
+ self.sin()
+ }
+ fn cos(self) -> Self {
+ self.cos()
+ }
+ fn tan(self) -> Self {
+ self.tan()
+ }
+ fn asin(self) -> Self {
+ self.asin()
+ }
+ fn acos(self) -> Self {
+ self.acos()
+ }
+ fn atan2(self, other: Self) -> Self {
+ self.atan2(other)
+ }
+}
+impl Trig<f64> for f64 {
+ fn sin(self) -> Self {
+ self.sin()
+ }
+ fn cos(self) -> Self {
+ self.cos()
+ }
+ fn tan(self) -> Self {
+ self.tan()
+ }
+ fn asin(self) -> Self {
+ self.asin()
+ }
+ fn acos(self) -> Self {
+ self.acos()
+ }
+ fn atan2(self, other: Self) -> Self {
+ self.atan2(other)
+ }
+}
+
+
+pub trait Pow<T> {
+ fn powi(self, n: i32) -> Self;
+ fn powf(self, n: T) -> Self;
+ fn sqrt(self) -> Self;
+}
+
+impl Pow<f32> for f32 {
+ fn powi(self, n: i32) -> Self {
+ self.powi(n)
+ }
+ fn powf(self, n: Self) -> Self {
+ self.powf(n)
+ }
+ fn sqrt(self) -> Self {
+ self.sqrt()
+ }
+}
+impl Pow<f64> for f64 {
+ fn powi(self, n: i32) -> Self {
+ self.powi(n)
+ }
+ fn powf(self, n: Self) -> Self {
+ self.powf(n)
+ }
+ fn sqrt(self) -> Self {
+ self.sqrt()
+ }
+}