Exemple #1
0
        /// <summary>
        /// Convert the bits of its representation to a float
        /// </summary>
        private static float Int32BitsToFloat(uint i)
        {
            FloatUnion bits = default(FloatUnion);

            bits.IntData = i;
            return(bits.FloatData);
        }
Exemple #2
0
        /// <summary>
        /// Convert a float value to the bits of its representation
        /// </summary>
        private static uint FloatToInt32Bits(float f)
        {
            FloatUnion bits = default(FloatUnion);

            bits.FloatData = f;
            return(bits.IntData);
        }
Exemple #3
0
        public void Test()
        {
            FloatUnion testUnion = new FloatUnion();

            testUnion.value = 100.2f;

            int dummy = 0;
        }
        public FloatPartition(float f)
        {
            FloatUnion fUnion = default(FloatUnion);

            fUnion.FloatValue = f;
            this.Sign         = GetSign(fUnion.UintValue);
            this.Exponent     = GetExponent(fUnion.UintValue);
            this.Mantissa     = GetMantissa(fUnion.UintValue);
        }
Exemple #5
0
        static UInt16 ToUInt16(float value)
        {
            int intValue = new FloatUnion()
            {
                Float = value
            }.Int;
            int sign     = (intValue >> 16) & 0x00008000;
            int exponent = ((intValue >> 23) & 0x000000ff) - (127 - 15);
            int mantissa = intValue & 0x007fffff;

            if (exponent <= 0)
            {
                if (exponent < -10)
                {
                    return((UInt16)sign);
                }

                mantissa = mantissa | 0x00800000;

                int t = 14 - exponent;
                int a = (1 << (t - 1)) - 1;
                int b = (mantissa >> t) & 1;

                mantissa = (mantissa + a + b) >> t;

                return((UInt16)(sign | mantissa));
            }
            else if (exponent == 0xff - (127 - 15))
            {
                if (mantissa == 0)
                {
                    return((UInt16)(sign | 0x7c00));
                }
                else
                {
                    mantissa >>= 13;
                    return((UInt16)(sign | 0x7c00 | mantissa | ((mantissa == 0) ? 1 : 0)));
                }
            }
            else
            {
                mantissa = mantissa + 0x00000fff + ((mantissa >> 13) & 1);

                if ((mantissa & 0x00800000) != 0)
                {
                    mantissa  = 0;
                    exponent += 1;
                }

                if (exponent > 30)
                {
                    return((UInt16)(sign | 0x7c00));
                }

                return((UInt16)(sign | (exponent << 10) | (mantissa >> 13)));
            }
        }
Exemple #6
0
        private void pushFloat(float f)
        {
            FloatUnion union = new FloatUnion();

            union.value = f;
            pushChar(union.b8);
            pushChar(union.b16);
            pushChar(union.b24);
            pushChar(union.b32);
        }
        public static void Write(BitStream stream, float value)
        {
            var cc = new FloatUnion {
                Value = value
            };

            Write(stream, cc.byte0);
            Write(stream, cc.byte1);
            Write(stream, cc.byte2);
            Write(stream, cc.byte3);
        }
        public static void Write(ref byte[] bytes, ref int offset, float value)
        {
            var cc = new FloatUnion {
                Value = value
            };

            Write(ref bytes, ref offset, cc.byte0);
            Write(ref bytes, ref offset, cc.byte1);
            Write(ref bytes, ref offset, cc.byte2);
            Write(ref bytes, ref offset, cc.byte3);
        }
Exemple #9
0
 public static bool IsInfinity(FloatUnion floatUnion)
 {
     return(GetRawExponent(floatUnion) == 255 && GetRawMantissa(floatUnion) == 0);
 }
Exemple #10
0
 public static bool IsZero(FloatUnion floatUnion)
 {
     return((floatUnion.UintValue & 0x7FFFFFFF) == 0);
 }
Exemple #11
0
 public static bool IsNegative(FloatUnion floatUnion)
 {
     return(((floatUnion.UintValue & SignMask) >> 31) == 1);
 }
Exemple #12
0
 public static uint GetRawMantissa(FloatUnion floatUnion)
 {
     return(floatUnion.UintValue & MantissaMask);
 }
Exemple #13
0
 public static byte GetRawExponent(FloatUnion floatUnion)
 {
     return(Convert.ToByte((floatUnion.UintValue & ExponentMask) >> 23));
 }