using System.Runtime.InteropServices;

namespace pdinklag
{
    public static class FloatExtensions
    {
        [StructLayout(LayoutKind.Explicit)]
        private struct FloatBits
        {
            [FieldOffset(0)] public float floatValue;
            [FieldOffset(0)] public uint bits;
        }

        /// <summary>
        /// Retrieves the 32-bit binary (IEEE) representation of a single-precision floating point value.
        /// </summary>
        /// <param name="v">the float value in question</param>
        public static uint ToBits(this float v)
        {
            FloatBits f = new();
            f.floatValue = v;
            return f.bits;
        }
    }
}
