// temporary workaround for xunit's lack of support for Half equality assertions
 public static void Equal(Half expected, Half actual)
 {
     if (Half.IsNaN(expected))
     {
         Assert.True(Half.IsNaN(actual), $"Expected: {expected}\nActual:  {actual}");
     }
     else
     {
         Assert.Equal(expected, actual);
     }
 }
Example #2
0
 internal static void IsPredicateF16Kernel(
     Index1D index,
     ArrayView1D <int, Stride1D.Dense> data,
     Half value)
 {
     data[index + 0] = Half.IsFinite(value) ? 1 : 0;
     data[index + 1] = Half.IsInfinity(value) ? 1 : 0;
     data[index + 2] = Half.IsPositiveInfinity(value) ? 1 : 0;
     data[index + 3] = Half.IsNegativeInfinity(value) ? 1 : 0;
     data[index + 4] = Half.IsNaN(value) ? 1 : 0;
 }
Example #3
0
        private void InternalWriteHalf(Half value)
        {
            if (Half.IsNaN(value))
            {
                value = HalfHelpers.UInt16BitsToHalf(0x7e00);
            }

            WritePrimitive(CborPrimitive.HalfFloat);

            Span <byte> bytes = _bufferWriter.GetSpan(2);

            HalfHelpers.WriteHalf(bytes, value);
            _bufferWriter.Advance(2);
        }
Example #4
0
 public void IsNaNTest()
 {
     {
         Half half     = Half.NaN;
         bool expected = true;
         bool actual   = Half.IsNaN(half);
         Assert.Equal(expected, actual);
     }
     {
         Half half     = (Half)1234.5678f;
         bool expected = false;
         bool actual   = Half.IsNaN(half);
         Assert.Equal(expected, actual);
     }
 }
Example #5
0
        public static void Equals(Half value, object obj, bool expected)
        {
            if (obj is Half other)
            {
                Assert.Equal(expected, value.Equals(other));

                if (Half.IsNaN(value) && Half.IsNaN(other))
                {
                    Assert.Equal(!expected, value == other);
                    Assert.Equal(expected, value != other);
                }
                else
                {
                    Assert.Equal(expected, value == other);
                    Assert.Equal(!expected, value != other);
                }
                Assert.Equal(expected, value.GetHashCode().Equals(other.GetHashCode()));
            }
            Assert.Equal(expected, value.Equals(obj));
        }
Example #6
0
        public static void CompareTo(Half value, object obj, int expected)
        {
            if (obj is Half other)
            {
                Assert.Equal(expected, Math.Sign(value.CompareTo(other)));

                if (Half.IsNaN(value) || Half.IsNaN(other))
                {
                    Assert.False(value >= other);
                    Assert.False(value > other);
                    Assert.False(value <= other);
                    Assert.False(value < other);
                }
                else
                {
                    if (expected >= 0)
                    {
                        Assert.True(value >= other);
                        Assert.False(value < other);
                    }
                    if (expected > 0)
                    {
                        Assert.True(value > other);
                        Assert.False(value <= other);
                    }
                    if (expected <= 0)
                    {
                        Assert.True(value <= other);
                        Assert.False(value > other);
                    }
                    if (expected < 0)
                    {
                        Assert.True(value < other);
                        Assert.False(value >= other);
                    }
                }
            }

            Assert.Equal(expected, Math.Sign(value.CompareTo(obj)));
        }
Example #7
0
 /// <summary>
 /// Returns a bvec3 from component-wise application of IsNaN (Half.IsNaN(v)).
 /// </summary>
 public static bool IsNaN(Half v) => Half.IsNaN(v);
Example #8
0
 /// <summary>
 /// Returns a bvec3 from component-wise application of IsFinite (!Half.IsNaN(v) &amp;&amp; !Half.IsInfinity(v)).
 /// </summary>
 public static bool IsFinite(Half v) => !Half.IsNaN(v) && !Half.IsInfinity(v);
Example #9
0
 public static void IsNaN(Half value, bool expected)
 {
     Assert.Equal(expected, Half.IsNaN(value));
 }
Example #10
0
        public void ReadNaNHalf()
        {
            Half actualValue = Helper.Read <Half>(nameof(CborReader.ReadHalf), "F97E00");

            Assert.True(Half.IsNaN(actualValue));
        }