I have the followin struct:
pub struct Quaternion {
    pub a: f32,
    pub b: f32,
    pub c: f32,
    pub d: f32,
}
and the following function:
pub fn rotate(self, axis: EVec, angle: f32) -> Self {
    println!("{}", axis.x*axis.x + axis.y*axis.y + axis.z*axis.z);
    let ah = angle / 2.;
    let q = Quaternion {
        a: ah.cos(),
        b: axis.x * ah.sin(),
        c: axis.y * ah.sin(),
        d: axis.z * ah.sin(),
    };
    q * self * q.inverse()
}
Is thi code correct?