public Quaternionf mul(float x, float y, float z, float w) {
        return new Quaternionf(
                this.w * x + this.x * w + this.y * z - this.z * y,
                this.w * y + this.y * w + this.z * x - this.x * z,
                this.w * z + this.z * w + this.x * y - this.y * x,
                this.w * w - this.x * x - this.y * y - this.z * z);
    }
public Quaternionf mul ( float x , float y , float z , float w ) { return new Quaternionf ( this . w * x + this . x * w + this . y * z - this . z * y , this . w * y + this . y * w + this . z * x - this . x * z , this . w * z + this . z * w + this . x * y - this . y * x , this . w * w - this . x * x - this . y * y - this . z * z ) ; }
Multiplies the float components of another quaternion with this one.

@param x The x (imaginary) component of the quaternion to multiply with
@param y The y (imaginary) component of the quaternion to multiply with
@param z The z (imaginary) component of the quaternion to multiply with
@param w The w (real) component of the quaternion to multiply with
@return A new quaternion, which is the product of both