internal static float Convert(ushort value) { uint rst; uint mantissa = (uint)(value & 1023); uint exp = 0xfffffff2; if ((value & -33792) == 0) { if (mantissa != 0) { while ((mantissa & 1024) == 0) { exp--; mantissa = mantissa << 1; } mantissa &= 0xfffffbff; rst = ((uint)((((uint)value & 0x8000) << 16) | ((exp + 127) << 23))) | (mantissa << 13); } else { rst = (uint)((value & 0x8000) << 16); } } else { rst = (uint)(((((uint)value & 0x8000) << 16) | ((((((uint)value >> 10) & 0x1f) - 15) + 127) << 23)) | (mantissa << 13)); } uif uif = new uif(); uif.u = rst; return(uif.f); }
internal static ushort Convert(float f) { uif uif = new uif(); uif.f = f; return(Convert(uif.i)); }
internal static UInt16 Convert(float f) { uif uif = new uif(); uif.f = f; return(Convert(uif.i)); }
internal static float Convert(ushort value) { uint rst; uint mantissa = (uint)(value & 1023); uint exp = 0xfffffff2; if ((value & -33792) == 0) { if (mantissa != 0) { while ((mantissa & 1024) == 0) { exp--; mantissa = mantissa << 1; } mantissa &= 0xfffffbff; rst = ((uint)((((uint)value & 0x8000) << 16) | ((exp + 127) << 23))) | (mantissa << 13); } else { rst = (uint)((value & 0x8000) << 16); } } else { rst = (uint)(((((uint)value & 0x8000) << 16) | ((((((uint)value >> 10) & 0x1f) - 15) + 127) << 23)) | (mantissa << 13)); } var uif = new uif(); uif.u = rst; return uif.f; }
internal static UInt16 Convert(float f) { uif uif = new uif(); uif.f = f; return Convert(uif.i); }