Packing half floats

I want to use unpack_2halfs in my GLSL fragment program to save some memory. My problem is that I need to do the packing on the CPU. I have no idea how to pack 2 16-bit half floats into a single 32bit float.

How does nVidia represent 16-bit floats? Any ideas?

Download and install nVidia SDK 9.5 and search for half.h