f8 0.1.2

It's a float! It's a unorm! It's only one byte!
Documentation
use {super::f8, std::ops::{Add, AddAssign, Sub, SubAssign, Mul, MulAssign, Div, DivAssign}};

impl Add for f8 {
    type Output = Self;

    #[inline]
    fn add(self, rhs: Self) -> Self::Output {
        Self(self.0 + rhs.0)
    }
}

impl Add<&Self> for f8 {
    type Output = <f8 as Add>::Output;

    #[inline]
    fn add(self, rhs: &Self) -> Self::Output {
        Self(self.0 + rhs.0)
    }
}

impl<'a> Add<f8> for &'a f8 {
    type Output = <f8 as Add>::Output;

    #[inline]
    fn add(self, rhs: f8) -> Self::Output {
        f8(self.0 + rhs.0)
    }
}

impl<'a> Add<&'a f8> for &'a f8 {
    type Output = <f8 as Add>::Output;

    #[inline]
    fn add(self, rhs: Self) -> Self::Output {
        f8(self.0 + rhs.0)
    }
}

impl AddAssign for f8 {
    #[inline]
    fn add_assign(&mut self, rhs: Self) {
        *self = Self(self.0 + rhs.0);
    }
}

impl AddAssign<&Self> for f8 {
    #[inline]
    fn add_assign(&mut self, rhs: &Self) {
        *self = Self(self.0 + rhs.0);
    }
}

impl Div for f8 {
    type Output = Self;

    #[inline]
    fn div(self, rhs: Self) -> Self::Output {
        Self(self.0 / rhs.0)
    }
}

impl Div<&Self> for f8 {
    type Output = <f8 as Div>::Output;

    #[inline]
    fn div(self, rhs: &Self) -> Self::Output {
        Self(self.0 / rhs.0)
    }
}

impl<'a> Div<f8> for &'a f8 {
    type Output = <f8 as Div>::Output;

    fn div(self, rhs: f8) -> Self::Output {
        f8(self.0 / rhs.0)
    }
}

impl<'a> Div<&'a f8> for &'a f8 {
    type Output = <f8 as Div>::Output;

    #[inline]
    fn div(self, rhs: Self) -> Self::Output {
        f8(self.0 / rhs.0)
    }
}

impl DivAssign for f8 {
    #[inline]
    fn div_assign(&mut self, rhs: Self) {
        *self = Self(self.0 / rhs.0);
    }
}

impl DivAssign<&Self> for f8 {
    #[inline]
    fn div_assign(&mut self, rhs: &Self) {
        *self = Self(self.0 / rhs.0);
    }
}

impl Mul for f8 {
    type Output = Self;

    #[inline]
    fn mul(self, rhs: Self) -> Self::Output {
        Self(self.0 * rhs.0)
    }
}

impl Mul<&Self> for f8 {
    type Output = <f8 as Mul>::Output;

    #[inline]
    fn mul(self, rhs: &Self) -> Self::Output {
        Self(self.0 * rhs.0)
    }
}

impl<'a> Mul<f8> for &'a f8 {
    type Output = <f8 as Mul>::Output;

    #[inline]
    fn mul(self, rhs: f8) -> Self::Output {
        f8(self.0 * rhs.0)
    }
}

impl<'a> Mul<&'a f8> for &'a f8 {
    type Output = <f8 as Mul>::Output;

    #[inline]
    fn mul(self, rhs: Self) -> Self::Output {
        f8(self.0 * rhs.0)
    }
}

impl MulAssign for f8 {
    #[inline]
    fn mul_assign(&mut self, rhs: Self) {
        *self = Self(self.0 * rhs.0);
    }
}

impl MulAssign<&Self> for f8 {
    #[inline]
    fn mul_assign(&mut self, rhs: &Self) {
        *self = Self(self.0 * rhs.0);
    }
}

impl Sub for f8 {
    type Output = Self;

    #[inline]
    fn sub(self, rhs: Self) -> Self::Output {
        Self(self.0 - rhs.0)
    }
}

impl Sub<&Self> for f8 {
    type Output = <f8 as Sub>::Output;

    #[inline]
    fn sub(self, rhs: &Self) -> Self::Output {
        Self(self.0 - rhs.0)
    }
}

impl<'a> Sub<f8> for &'a f8 {
    type Output = <f8 as Sub>::Output;

    #[inline]
    fn sub(self, rhs: f8) -> Self::Output {
        f8(self.0 - rhs.0)
    }
}

impl<'a> Sub<&'a f8> for &'a f8 {
    type Output = <f8 as Sub>::Output;

    #[inline]
    fn sub(self, rhs: Self) -> Self::Output {
        f8(self.0 - rhs.0)
    }
}

impl SubAssign for f8 {
    #[inline]
    fn sub_assign(&mut self, rhs: Self) {
        *self = Self(self.0 - rhs.0);
    }
}

impl SubAssign<&Self> for f8 {
    #[inline]
    fn sub_assign(&mut self, rhs: &Self) {
        *self = Self(self.0 - rhs.0);
    }
}