public void FloatToStringTest() { var number = 12.375f; var bits = Float754.FloatToString(number); Assert.AreEqual("1.54687500 * 2^(3)", bits); }
public void ZeroTest() { var number = 0.0f; var floatToString = Float754.FloatToString(number); Assert.AreEqual("0.00000000 * 2^(-126)", floatToString); }
public void SmallTwoTest() { var number = 1.6000001f; var floatToString = Float754.FloatToString(number); Assert.AreEqual("1.60000014 * 2^(0)", floatToString); }
public void MinusOneTest() { var number = -1.0f; var floatToString = Float754.FloatToString(number); Assert.AreEqual("-1.00000000 * 2^(0)", floatToString); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }