public static float convertHalfToFloat(short half) {
        switch ((int) half) {
            case 0x0000:
                return 0f;
            case 0x8000:
                return -0f;
            case 0x7c00:
                return Float.POSITIVE_INFINITY;
            case 0xfc00:
                return Float.NEGATIVE_INFINITY;
            // TODO: Support for NaN?
            default:
                return Float.intBitsToFloat(((half & 0x8000) << 16)
                        | (((half & 0x7c00) + 0x1C000) << 13)
                        | ((half & 0x03FF) << 13));
        }
    }
Converts a single precision (32 bit) floating point value
into half precision (16 bit).

<p>Source: <a href="ftp://www.fox-toolkit.org/pub/fasthalffloatconversion.pdf">
ftp://www.fox-toolkit.org/pub/fasthalffloatconversion.pdf</a>

@param half The half floating point value as a short.
@return floating point value of the half.
jme3-core/src/main/java/com/jme3/math/FastMath.java