use core::ops::Sub;
use crate::Vec4;
#[opimps::impl_ops(Sub)]
fn sub<T>(self: Vec4<T>, rhs: Vec4<T>) -> Vec4<T> where T: Sub<Output = T> + Copy {
let l = self.as_slice();
let r = rhs.as_slice();
Vec4::new(
l[0] - r[0],
l[1] - r[1],
l[2] - r[2],
l[3] - r[3],
)
}
#[opimps::impl_ops_rprim(Sub)]
fn sub<T>(self: Vec4<T>, rhs: T) -> Vec4<T> where T: Sub<Output = T> + Copy {
let l = self.as_slice();
Vec4::new(
l[0] - rhs,
l[1] - rhs,
l[2] - rhs,
l[3] - rhs
)
}
#[opimps::impl_ops_lprim(Sub)]
fn sub(self: f32, rhs: Vec4<f32>) -> Vec4<f32> {
let r = rhs.as_slice();
Vec4::new(
self - r[0],
self - r[1],
self - r[2],
self - r[3]
)
}
#[opimps::impl_ops_lprim(Sub)]
fn sub(self: f64, rhs: Vec4<f64>) -> Vec4<f64> {
let r = rhs.as_slice();
Vec4::new(
self - r[0],
self - r[1],
self - r[2],
self - r[3]
)
}
#[opimps::impl_ops_lprim(Sub)]
fn sub(self: i32, rhs: Vec4<i32>) -> Vec4<i32> {
let r = rhs.as_slice();
Vec4::new(
self - r[0],
self - r[1],
self - r[2],
self - r[3]
)
}
#[opimps::impl_ops_lprim(Sub)]
fn sub(self: i64, rhs: Vec4<i64>) -> Vec4<i64> {
let r = rhs.as_slice();
Vec4::new(
self - r[0],
self - r[1],
self - r[2],
self - r[3]
)
}