public static Quaternion exp(Quaternion input)
{
float inputA = input.w;
Vec3 inputV = Vec3.fakePool.getVecFromPool(input.x, input.y, input.z);
float outputA = (float)(Math.exp(inputA) * Math.cos(inputV.lengthVector()));
Vec3 outputV = Vec3.fakePool.getVecFromPool(0, 0, 0);
outputV.xCoord = Math.exp(inputA) * (inputV.normalize().xCoord * (float)Math.sin(inputV.lengthVector()));
outputV.yCoord = Math.exp(inputA) * (inputV.normalize().yCoord * (float)Math.sin(inputV.lengthVector()));
outputV.zCoord = Math.exp(inputA) * (inputV.normalize().zCoord * (float)Math.sin(inputV.lengthVector()));