Signed number grief.

Oh great. A slow imprecise floating point divide to replace a fast precise bit shift.

You're just trying to turn a 10-bit value into 16 bits to convert to float.

How about, insane as this might seem, load up the 10 bits into a 16-bit int and extend (copy) the sign in bit 9 from bit 10 to bit 15 then convert to float.