Exemple #1
0
        public void FloatToStringTest()
        {
            var number = 12.375f;
            var bits   = Float754.FloatToString(number);

            Assert.AreEqual("1.54687500 * 2^(3)", bits);
        }
Exemple #2
0
        public void ZeroTest()
        {
            var number        = 0.0f;
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("0.00000000 * 2^(-126)", floatToString);
        }
Exemple #3
0
        public void SmallTwoTest()
        {
            var number        = 1.6000001f;
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("1.60000014 * 2^(0)", floatToString);
        }
Exemple #4
0
        public void MinusOneTest()
        {
            var number        = -1.0f;
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("-1.00000000 * 2^(0)", floatToString);
        }
Exemple #5
0
        public void NotANumberTest()
        {
            var number = float.NaN;

            Assert.IsTrue(float.IsNaN(number));
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("-1.50000000 * 2^(128)", floatToString);
        }
        public void Sqrt256Test()
        {
            var number = 256.0f;

            Assert.AreEqual("1.00000000 * 2^(8)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(16.0f, gama, 0.173f);
        }
        public void Sqrt16Test()
        {
            var number = 16.0f;

            Assert.AreEqual("1.00000000 * 2^(4)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(4.0f, gama, 0.0431f);
        }
        public void SqrtQuarterTest()
        {
            var number = 0.25f;

            Assert.AreEqual("1.00000000 * 2^(-2)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(0.5f, gama, 0.00538f);
        }
        public void SqrtHalfTest()
        {
            var number = 0.5f;

            Assert.AreEqual("1.00000000 * 2^(-1)", Float754.FloatToString(number));
            var gama = Float754.FastInvSqrtFloat(number);

            Assert.AreEqual(1.414213562f, gama, 0.022f);
        }
        public void Sqrt2Test()
        {
            var number = 2.0f;

            Assert.AreEqual("1.00000000 * 2^(1)", Float754.FloatToString(number));
            var gama = Float754.FastInvSqrtFloat(number);

            Assert.AreEqual(0.7071067811f, gama, 0.011f);
        }
Exemple #11
0
        public void SqrtHalfTest()
        {
            var number = 0.5f;

            Assert.AreEqual("1.00000000 * 2^(-1)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(0.7071067811f, gama, 0.0322f);
        }
Exemple #12
0
        public void Sqrt1Test()
        {
            var number = 1.0f;

            Assert.AreEqual("1.00000000 * 2^(0)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(1.0f, gama, 0.0108f);
        }
Exemple #13
0
        public void Sqrt2Test()
        {
            var number = 2.0f;

            Assert.AreEqual("1.00000000 * 2^(1)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(1.41421356237f, gama, 0.0643f);
        }
Exemple #14
0
        public void Sqrt4Test()
        {
            var number = 4.0f;

            Assert.AreEqual("1.00000000 * 2^(2)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(2.0f, gama, 0.0216f);
        }
Exemple #15
0
        public void SqrtOneSixteenthTest()
        {
            var number = 0.0625f;

            Assert.AreEqual("1.00000000 * 2^(-4)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(0.25f, gama, 0.00269f);
        }
Exemple #16
0
        public void LargestDenormalizedNumber()
        {
            var number = BitConverter.Int32BitsToSingle(0x007FFFFF);

            Assert.IsFalse(float.IsNormal(number));
            Assert.AreEqual(1.17549421E-38f, number);
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("0.99999988 * 2^(-126)", floatToString);
        }
Exemple #17
0
        public void MiddleDenormalizedNumber()
        {
            var number = BitConverter.Int32BitsToSingle(0x00400000);

            Assert.IsFalse(float.IsNormal(number));
            Assert.AreEqual(5.87747175E-39f, number);
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("0.50000000 * 2^(-126)", floatToString);
        }
Exemple #18
0
        public void NegativeZeroTest()
        {
            // 0x8000_0000
            var number = BitConverter.Int32BitsToSingle(-2_147_483_648);

            Assert.AreEqual(0.0f, number);
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("-0.00000000 * 2^(-126)", floatToString);
        }
Exemple #19
0
        public void SmallestNormalizedNumber()
        {
            var number = BitConverter.Int32BitsToSingle(0x00800000);

            Assert.IsTrue(float.IsNormal(number));
            Assert.AreEqual(1.17549435E-38f, number);
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("1.00000000 * 2^(-126)", floatToString);
        }
Exemple #20
0
        public void ZeroSqrt()
        {
            var number = 0.0f;
            var bits   = Float754.FloatToString(number);

            Assert.AreEqual("0.00000000 * 2^(-126)", bits);

            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual(0.0, gama, 8.1e-20);
        }
Exemple #21
0
        public void SmallestDenormalizedNumber()
        {
            var number = BitConverter.Int32BitsToSingle(0x00000001);

            Assert.IsFalse(float.IsNormal(number));
            Assert.AreEqual(1.4e-45f, number);
            Assert.AreEqual(float.Epsilon, number);
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("0.00000012 * 2^(-126)", floatToString);
        }
Exemple #22
0
        public void NegativeInfinityTest()
        {
            var number = float.NegativeInfinity;

            Assert.IsTrue(float.IsInfinity(number));
            Assert.IsTrue(float.IsNegativeInfinity(number));
            Assert.AreEqual(float.NegativeInfinity, number);
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("-1.00000000 * 2^(128)", floatToString);
        }
        public void ZeroSqrt()
        {
            var number = 0.0f;
            var bits   = Float754.FloatToString(number);

            Assert.AreEqual("0.00000000 * 2^(-126)", bits);

            var gama = Float754.FastInvSqrtFloat(number);

            Assert.AreEqual(1.32401508E+19f, gama);
        }
Exemple #24
0
        public void LargestNormalizedNumber()
        {
            var number = BitConverter.Int32BitsToSingle(0x7F7FFFFF);

            Assert.IsTrue(float.IsNormal(number));
            Assert.AreEqual(3.40282347E+38f, number);
            Assert.AreEqual(float.MaxValue, number);
            var floatToString = Float754.FloatToString(number);

            Assert.AreEqual("1.99999988 * 2^(127)", floatToString);
        }
Exemple #25
0
        public void Test()
        {
            var number = 256.0f;

            Assert.AreEqual("1.00000000 * 2^(8)", Float754.FloatToString(number));
            var gama = Float754.FastSqrtFloat(number);

            Assert.AreEqual("1.00000000 * 2^(4)", Float754.FloatToString(16.0f));
            var y = BitConverter.Int32BitsToSingle(0x1FBD3F7D);

            Assert.AreEqual("1.47850001 * 2^(-64)", Float754.FloatToString(y));

            Assert.AreEqual("1.97850001 * 2^(3)", Float754.FloatToString(gama));
            Assert.AreEqual(16.0f, gama, 0.18);
        }
        public void Test()
        {
            var number = 256.0f;

            Assert.AreEqual("1.00000000 * 2^(8)", Float754.FloatToString(number));
            var gama = Float754.FastInvSqrtFloat(number);

            Assert.AreEqual("1.00000000 * 2^(-4)", Float754.FloatToString(0.0625f));
            var y = BitConverter.Int32BitsToSingle(0x5f3759df);

            Assert.AreEqual("1.43243015 * 2^(63)", Float754.FloatToString(y));

            Assert.AreEqual("1.93550003 * 2^(-5)", Float754.FloatToString(gama));
            Assert.AreEqual(0.0625f, gama, 0.01);
        }
        public void OriginalFactor()
        {
            var c = 0x5f3759df;

            Assert.AreEqual(1597463007, c);
            Assert.AreEqual(1597463007.0f, c);
            var str = Float754.FloatToString(c);

            Assert.AreEqual("1.48775339 * 2^(30)", str);

            var c1 = 3.0 / 2.0;
            var c2 = Math.Pow(2.0, 23); // 8,388,608
            var c3 = c / c1 / c2;
            var mu = 127.0 - c3;

            Assert.AreEqual(0.045046567916870117, mu);
        }
Exemple #28
0
        public void VideoFactorFloat()
        {
            var c = 532496252.92799997d;

            Assert.AreEqual(532496253, (int)(c + 0.5));
            Assert.AreEqual(0x1FBD3F7D, (int)(c + 0.5));
            Assert.AreEqual(532496256.0f, (float)c);
            var str = Float754.FloatToString((float)c);

            Assert.AreEqual("1.98370314 * 2^(28)", str);

            var mu   = 0.0430;
            var c1   = 1.0 / 2.0;
            var c2   = Math.Pow(2.0, 23);
            var c3   = 127.0 - mu;
            var calc = c1 * c2 * c3;

            Assert.AreEqual(c, calc);
        }
        public void VideoFactorFloat()
        {
            var c = 1597488758.784;

            Assert.AreEqual(1597488759, (int)(c + 0.5));
            Assert.AreEqual(0x5f37be77, (int)(c + 0.5));
            Assert.AreEqual(1.59748877E+09f, (float)c);
            var str = Float754.FloatToString((float)c);

            Assert.AreEqual("1.48777735 * 2^(30)", str);

            var mu   = 0.0430;
            var c1   = 3.0 / 2.0;
            var c2   = Math.Pow(2.0, 23);
            var c3   = 127.0 - mu;
            var calc = c1 * c2 * c3;

            Assert.AreEqual(c, calc);
        }