function cross(out, u, v, w) {
  let A = v[0] * w[1] - v[1] * w[0],
    B = v[0] * w[2] - v[2] * w[0],
    C = v[0] * w[3] - v[3] * w[0],
    D = v[1] * w[2] - v[2] * w[1],
    E = v[1] * w[3] - v[3] * w[1],
    F = v[2] * w[3] - v[3] * w[2];
  let G = u[0];
  let H = u[1];
  let I = u[2];
  let J = u[3];

  out[0] = H * F - I * E + J * D;
  out[1] = -(G * F) + I * C - J * B;
  out[2] = G * E - H * C + J * A;
  out[3] = -(G * D) + H * B - I * A;

  return out;
}
Returns the cross-product of three vectors in a 4-dimensional space

@param {ReadonlyVec4} out the receiving vector
@param {ReadonlyVec4} u the first vector
@param {ReadonlyVec4} v the second vector
@param {ReadonlyVec4} w the third vector
@returns {vec4} result