Beispiel #1
0
 public void Log2_uint()
 {
     for (var i = 1.0; i < uint.MaxValue; i *= 1.3)
     {
         var n = (uint)i;
         Assert.Equal((uint)Math.Log(n, 2.0), FxMath.Log2(n));
     }
 }
 public void Exp_float()
 {
     for (float i = -85; i < 85; i += 0.1f)
     {
         var r = FxMath.Exp(i);
         Assert.True(MathF.Exp(i).RelError(r) <= 1.72886892e-3f);
     }
 }
Beispiel #3
0
 public void Log_float()
 {
     for (float i = -1; i < 85; i += 0.1f)
     {
         var r = FxMath.Log(i);
         Assert.True(MathF.Log(i).AbsError(r) <= 1e-4f);
     }
 }
Beispiel #4
0
        public void Log_Vector256()
        {
            for (float i = -1; i < 85; i += 0.1f)
            {
                var r        = FxMath.Log(Vector256.Create((float)i));
                var expected = FxMath.Log((float)i);

                for (var k = 0; k < 8; k++)
                {
                    Assert.Equal(expected, r.GetElement(k));
                }
            }
        }
        public void Exp_Vector256()
        {
            for (float i = -85; i < 85; i += 0.1f)
            {
                var r        = FxMath.Exp(Vector256.Create((float)i));
                var expected = FxMath.Exp((float)i);

                for (var k = 0; k < 8; k++)
                {
                    // HACK: [vermore] can't reproduce perfect numerical identity
                    // between scalar and SIMD variants (very close though)
                    Assert.True(expected.AbsError(r.GetElement(k)) <= 1e-6f);
                    //Assert.Equal(expected, r.GetElement(k));
                }
            }
        }
Beispiel #6
0
        public void Log_Span()
        {
            var pairs = new List <(float, float)>();

            for (float i = -1; i < 85; i += 0.1f)
            {
                pairs.Add((i, FxMath.Log(i)));
            }

            var inputs  = pairs.Select(tu => tu.Item1).ToArray();
            var results = new float[pairs.Count];

            FxMath.Log(inputs, results);

            for (var i = 0; i < inputs.Length; i++)
            {
                Assert.Equal(pairs[i].Item2, results[i]);
            }
        }
 public Vector256 <float> LogGamma_FxMath_S8() => FxMath.LogGamma(LogGX8);
 public float LogGamma_FxMath() => FxMath.LogGamma(LogGX);
 public uint Log2_FxMath() => FxMath.Log2(123);
 public Vector256 <float> Log_FxMath_S8() => FxMath.Log(LogX8);
 public float Log_FxMath() => FxMath.Log(LogX);
 public Vector256 <float> Exp_FxMath_S8() => FxMath.Exp(X8);
 public float Exp_FxMath() => FxMath.Exp(ExpX);
 public Vector256 <float> Digamma_FxMath_S8() => FxMath.Digamma(DigGX8);
 public float Digamma_FxMath() => FxMath.Digamma(DiGX);