diff --git a/src/funs/trig.rs b/src/funs/trig.rs index 0dd2acf..b9836e6 100644 --- a/src/funs/trig.rs +++ b/src/funs/trig.rs @@ -23,6 +23,75 @@ priv impl Radians: Trig { #[inline(always)] pure fn tan() -> T { cast(f64::tan(cast(*self))) } } +pub impl Vec2>: Trig> { + #[inline(always)] + pure fn sin() -> Vec2 { + Vec2::new(sin(&self[0]), + sin(&self[1])) + } + + #[inline(always)] + pure fn cos() -> Vec2 { + Vec2::new(cos(&self[0]), + cos(&self[1])) + } + + #[inline(always)] + pure fn tan() -> Vec2 { + Vec2::new(tan(&self[0]), + tan(&self[1])) + } +} + +pub impl Vec3>: Trig> { + #[inline(always)] + pure fn sin() -> Vec3 { + Vec3::new(sin(&self[0]), + sin(&self[1]), + sin(&self[2])) + } + + #[inline(always)] + pure fn cos() -> Vec3 { + Vec3::new(cos(&self[0]), + cos(&self[1]), + cos(&self[2])) + } + + #[inline(always)] + pure fn tan() -> Vec3 { + Vec3::new(tan(&self[0]), + tan(&self[1]), + tan(&self[2])) + } +} + +pub impl Vec4>: Trig> { + #[inline(always)] + pure fn sin() -> Vec4 { + Vec4::new(sin(&self[0]), + sin(&self[1]), + sin(&self[2]), + sin(&self[3])) + } + + #[inline(always)] + pure fn cos() -> Vec4 { + Vec4::new(cos(&self[0]), + cos(&self[1]), + cos(&self[2]), + cos(&self[3])) + } + + #[inline(always)] + pure fn tan() -> Vec4 { + Vec4::new(tan(&self[0]), + tan(&self[1]), + tan(&self[2]), + tan(&self[3])) + } +} + /// /// Inverse triganomic functions /// @@ -92,199 +161,71 @@ pub impl float: Hyp { #[inline(always)] pure fn tanh() -> float { cast(f64::tanh(cast(self))) } } +pub impl Vec2: Hyp { + #[inline(always)] + pure fn sinh() -> Vec2 { + Vec2::new(sinh(&self[0]), + sinh(&self[1])) + } + + #[inline(always)] + pure fn cosh() -> Vec2 { + Vec2::new(cosh(&self[0]), + cosh(&self[1])) + } + + #[inline(always)] + pure fn tanh() -> Vec2 { + Vec2::new(tanh(&self[0]), + tanh(&self[1])) + } +} +pub impl Vec3: Hyp { + #[inline(always)] + pure fn sinh() -> Vec3 { + Vec3::new(sinh(&self[0]), + sinh(&self[1]), + sinh(&self[2])) + } + + #[inline(always)] + pure fn cosh() -> Vec3 { + Vec3::new(cosh(&self[0]), + cosh(&self[1]), + cosh(&self[2])) + } + + #[inline(always)] + pure fn tanh() -> Vec3 { + Vec3::new(tanh(&self[0]), + tanh(&self[1]), + tanh(&self[2])) + } +} -// pub impl Vec2: Trig { -// #[inline(always)] -// pure fn sin() -> Vec2 { -// Vec2::new(sin(&self[0]), -// sin(&self[1])) -// } +pub impl Vec4: Hyp { + #[inline(always)] + pure fn sinh() -> Vec4 { + Vec4::new(sinh(&self[0]), + sinh(&self[1]), + sinh(&self[2]), + sinh(&self[3])) + } -// #[inline(always)] -// pure fn cos() -> Vec2 { -// Vec2::new(cos(&self[0]), -// cos(&self[1])) -// } + #[inline(always)] + pure fn cosh() -> Vec4 { + Vec4::new(cosh(&self[0]), + cosh(&self[1]), + cosh(&self[2]), + cosh(&self[3])) + } -// #[inline(always)] -// pure fn tan() -> Vec2 { -// Vec2::new(tan(&self[0]), -// tan(&self[1])) -// } - -// #[inline(always)] -// pure fn asin() -> Vec2 { -// Vec2::new(asin(&self[0]), -// asin(&self[1])) -// } - -// #[inline(always)] -// pure fn acos() -> Vec2 { -// Vec2::new(acos(&self[0]), -// acos(&self[1])) -// } - -// #[inline(always)] -// pure fn atan() -> Vec2 { -// Vec2::new(atan(&self[0]), -// atan(&self[1])) -// } - -// #[inline(always)] -// pure fn sinh() -> Vec2 { -// Vec2::new(sinh(&self[0]), -// sinh(&self[1])) -// } - -// #[inline(always)] -// pure fn cosh() -> Vec2 { -// Vec2::new(cosh(&self[0]), -// cosh(&self[1])) -// } - -// #[inline(always)] -// pure fn tanh() -> Vec2 { -// Vec2::new(tanh(&self[0]), -// tanh(&self[1])) -// } -// } - -// pub impl Vec3: Trig { -// #[inline(always)] -// pure fn sin() -> Vec3 { -// Vec3::new(sin(&self[0]), -// sin(&self[1]), -// sin(&self[2])) -// } - -// #[inline(always)] -// pure fn cos() -> Vec3 { -// Vec3::new(cos(&self[0]), -// cos(&self[1]), -// cos(&self[2])) -// } - -// #[inline(always)] -// pure fn tan() -> Vec3 { -// Vec3::new(tan(&self[0]), -// tan(&self[1]), -// tan(&self[2])) -// } - -// #[inline(always)] -// pure fn asin() -> Vec3 { -// Vec3::new(asin(&self[0]), -// asin(&self[1]), -// asin(&self[2])) -// } - -// #[inline(always)] -// pure fn acos() -> Vec3 { -// Vec3::new(acos(&self[0]), -// acos(&self[1]), -// acos(&self[2])) -// } - -// #[inline(always)] -// pure fn atan() -> Vec3 { -// Vec3::new(atan(&self[0]), -// atan(&self[1]), -// atan(&self[2])) -// } - -// #[inline(always)] -// pure fn sinh() -> Vec3 { -// Vec3::new(sinh(&self[0]), -// sinh(&self[1]), -// sinh(&self[2])) -// } - -// #[inline(always)] -// pure fn cosh() -> Vec3 { -// Vec3::new(cosh(&self[0]), -// cosh(&self[1]), -// cosh(&self[2])) -// } - -// #[inline(always)] -// pure fn tanh() -> Vec3 { -// Vec3::new(tanh(&self[0]), -// tanh(&self[1]), -// tanh(&self[2])) -// } -// } - -// pub impl Vec4: Trig { -// #[inline(always)] -// pure fn sin() -> Vec4 { -// Vec4::new(sin(&self[0]), -// sin(&self[1]), -// sin(&self[2]), -// sin(&self[3])) -// } - -// #[inline(always)] -// pure fn cos() -> Vec4 { -// Vec4::new(cos(&self[0]), -// cos(&self[1]), -// cos(&self[2]), -// cos(&self[3])) -// } - -// #[inline(always)] -// pure fn tan() -> Vec4 { -// Vec4::new(tan(&self[0]), -// tan(&self[1]), -// tan(&self[2]), -// tan(&self[3])) -// } - -// #[inline(always)] -// pure fn asin() -> Vec4 { -// Vec4::new(asin(&self[0]), -// asin(&self[1]), -// asin(&self[2]), -// asin(&self[3])) -// } - -// #[inline(always)] -// pure fn acos() -> Vec4 { -// Vec4::new(acos(&self[0]), -// acos(&self[1]), -// acos(&self[2]), -// acos(&self[3])) -// } - -// #[inline(always)] -// pure fn atan() -> Vec4 { -// Vec4::new(atan(&self[0]), -// atan(&self[1]), -// atan(&self[2]), -// atan(&self[3])) -// } - -// #[inline(always)] -// pure fn sinh() -> Vec4 { -// Vec4::new(sinh(&self[0]), -// sinh(&self[1]), -// sinh(&self[2]), -// sinh(&self[3])) -// } - -// #[inline(always)] -// pure fn cosh() -> Vec4 { -// Vec4::new(cosh(&self[0]), -// cosh(&self[1]), -// cosh(&self[2]), -// cosh(&self[3])) -// } - -// #[inline(always)] -// pure fn tanh() -> Vec4 { -// Vec4::new(tanh(&self[0]), -// tanh(&self[1]), -// tanh(&self[2]), -// tanh(&self[3])) -// } -// } \ No newline at end of file + #[inline(always)] + pure fn tanh() -> Vec4 { + Vec4::new(tanh(&self[0]), + tanh(&self[1]), + tanh(&self[2]), + tanh(&self[3])) + } +} \ No newline at end of file