code: public Quaterniond difference(Quaterniondc other, Quaterniond dest) {
          double invNorm = 1.0 / (x * x + y * y + z * z + w * w);
          double x = -this.x * invNorm;
          double y = -this.y * invNorm;
          double z = -this.z * invNorm;
          double w = this.w * invNorm;
          dest.set(w * other.x() + x * other.w() + y * other.z() - z * other.y(),
                   w * other.y() - x * other.z() + y * other.w() + z * other.x(),
                   w * other.z() + x * other.y() - y * other.x() + z * other.w(),
                   w * other.w() - x * other.x() - y * other.y() - z * other.z());
          return dest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Quaterniondc#difference(org.joml.Quaterniondc, org.joml.Quaterniond)