Merge pull request #89 from RealityProgrammer/main

AdvSimd intrinsic obsoletion
This commit is contained in:
Oliver Booth 2024-01-06 14:28:57 +00:00 committed by GitHub
commit 2a89c8e6fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
65 changed files with 488 additions and 597 deletions

View File

@ -223,22 +223,6 @@ internal class SpanTest
Assert.That(actual, Is.EqualTo(expected));
}
[Test]
public void PackByteInternal_AdvSimd_ShouldReturnCorrectByte_GivenReadOnlySpan_Using()
{
if (!AdvSimd.IsSupported)
{
return;
}
const byte expected = 0b00110011;
ReadOnlySpan<bool> span = stackalloc bool[8] {true, true, false, false, true, true, false, false};
byte actual = span.PackByteInternal_AdvSimd();
Assert.That(actual, Is.EqualTo(expected));
}
[Test]
public void PackInt16_ShouldReturnSameAsPackByte_WhenSpanHasLength8()
{
@ -338,26 +322,6 @@ internal class SpanTest
Assert.That(actual, Is.EqualTo(expected));
}
[Test]
public void PackInt32Internal_AdvSimd_ShouldReturnCorrectInt32_GivenReadOnlySpan()
{
if (!AdvSimd.IsSupported)
{
return;
}
const int expected = 0b01010101_10101010_01010101_10101010;
ReadOnlySpan<bool> span = stackalloc bool[32]
{
false, true, false, true, false, true, false, true, true, false, true, false, true, false, true, false, false,
true, false, true, false, true, false, true, true, false, true, false, true, false, true, false,
};
int actual = span.PackInt32Internal_AdvSimd();
Assert.That(actual, Is.EqualTo(expected));
}
[Test]
public void PackInt32_ShouldReturnSameAsPackByte_WhenSpanHasLength8_UsingReadOnlySpan()
{

View File

@ -241,20 +241,9 @@ public static class ListExtensions
throw new ArgumentNullException(nameof(source));
}
int start = range.Start.IsFromEnd ? source.Count - range.Start.Value : range.Start.Value;
int end = range.End.IsFromEnd ? source.Count - range.End.Value : range.End.Value;
(int start, int length) = range.GetOffsetAndLength(source.Count);
if (end < start)
{
throw new ArgumentException(ExceptionMessages.EndIndexLessThanStartIndex);
}
if (end >= source.Count)
{
throw new ArgumentOutOfRangeException(nameof(range), ExceptionMessages.EndIndexGreaterThanCount);
}
for (int index = end; index >= start; index--)
for (int index = start + length; index >= start; index--)
{
source.RemoveAt(index);
}

View File

@ -29,7 +29,7 @@ public static class IntrinsicExtensions
/// A <see cref="Vector64{T}"/> of <see langword="byte"/> which remapped back to 0 and 1 based on boolean truthiness.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector64<byte> CorrectBoolean(this Vector64<byte> vector)
{
Vector64<byte> output = IntrinsicUtility.GetUninitializedVector64<byte>();
@ -64,7 +64,7 @@ public static class IntrinsicExtensions
/// A <see cref="Vector128{T}"/> of <see langword="byte"/> which remapped back to 0 and 1 based on boolean truthiness.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static Vector128<byte> CorrectBoolean(this Vector128<byte> vector)
{
@ -87,7 +87,7 @@ public static class IntrinsicExtensions
/// A <see cref="Vector256{T}"/> of <see langword="byte"/> which remapped back to 0 and 1 based on boolean truthiness.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static Vector256<byte> CorrectBoolean(this Vector256<byte> vector)
{
@ -111,7 +111,7 @@ public static class IntrinsicExtensions
/// </returns>
[Pure]
[CLSCompliant(false)]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static Vector128<ulong> ReverseElements(this Vector128<ulong> vector)
{
@ -119,7 +119,7 @@ public static class IntrinsicExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<byte> CorrectBooleanInternal_Fallback(this Vector128<byte> vector)
{
Vector128<byte> output = IntrinsicUtility.GetUninitializedVector128<byte>();
@ -134,7 +134,7 @@ public static class IntrinsicExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<byte> CorrectBooleanInternal_Sse2(this Vector128<byte> vector)
{
Vector128<byte> cmp = Sse2.CompareEqual(vector, Vector128<byte>.Zero);
@ -144,7 +144,7 @@ public static class IntrinsicExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector256<byte> CorrectBooleanInternal_Fallback(this Vector256<byte> vector)
{
Vector256<byte> output = IntrinsicUtility.GetUninitializedVector256<byte>();
@ -159,7 +159,7 @@ public static class IntrinsicExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector256<byte> CorrectBooleanInternal_Avx2(this Vector256<byte> vector)
{
Vector256<byte> cmp = Avx2.CompareEqual(vector, Vector256<byte>.Zero);
@ -169,7 +169,7 @@ public static class IntrinsicExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<ulong> ReverseElementsInternal_Fallback(this Vector128<ulong> vector)
{
Vector128<ulong> output = IntrinsicUtility.GetUninitializedVector128<ulong>();
@ -181,7 +181,7 @@ public static class IntrinsicExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<ulong> ReverseElementsInternal_Sse2(this Vector128<ulong> vector)
{
return Sse2.Shuffle(vector.AsDouble(), vector.AsDouble(), 0b01).AsUInt64();

View File

@ -31,7 +31,7 @@ public static class IntrinsicUtility
/// <returns>The truncated product vector.</returns>
[Pure]
[CLSCompliant(false)]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static Vector128<ulong> Multiply(Vector128<ulong> left, Vector128<ulong> right)
{
@ -62,7 +62,7 @@ public static class IntrinsicUtility
/// </returns>
[Pure]
[CLSCompliant(false)]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static Vector256<ulong> Multiply(Vector256<ulong> lhs, Vector256<ulong> rhs)
{
@ -90,7 +90,7 @@ public static class IntrinsicUtility
/// A <see cref="Vector128{T}"/> of <see langword="long"/> whose elements is 64-bit truncated product of lhs and rhs.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector128<long> Multiply(Vector128<long> lhs, Vector128<long> rhs)
{
return Multiply(lhs.AsUInt64(), rhs.AsUInt64()).AsInt64();
@ -114,7 +114,7 @@ public static class IntrinsicUtility
/// A <see cref="Vector256{T}"/> of <see langword="ulong"/> whose elements is 64-bit truncated product of lhs and rhs.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector256<long> Multiply(Vector256<long> lhs, Vector256<long> rhs)
{
return Multiply(lhs.AsUInt64(), rhs.AsUInt64()).AsInt64();
@ -140,7 +140,7 @@ public static class IntrinsicUtility
/// elements in lhs and rhs.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static Vector128<int> HorizontalOr(Vector128<int> left, Vector128<int> right)
{
@ -171,7 +171,7 @@ public static class IntrinsicUtility
/// elements in lhs and rhs.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[CLSCompliant(false)]
public static Vector128<uint> HorizontalOr(Vector128<uint> left, Vector128<uint> right)
{
@ -179,21 +179,21 @@ public static class IntrinsicUtility
}
// Helper methods
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector64<T> GetUninitializedVector64<T>() where T : struct
{
Unsafe.SkipInit(out Vector64<T> output);
return output;
}
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<T> GetUninitializedVector128<T>() where T : struct
{
Unsafe.SkipInit(out Vector128<T> output);
return output;
}
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector256<T> GetUninitializedVector256<T>() where T : struct
{
Unsafe.SkipInit(out Vector256<T> output);
@ -201,7 +201,7 @@ public static class IntrinsicUtility
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<int> HorizontalOr_Sse(Vector128<int> left, Vector128<int> right)
{
Vector128<float> leftSingle = left.AsSingle();
@ -216,7 +216,7 @@ public static class IntrinsicUtility
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<int> HorizontalOrInternal_Fallback(Vector128<int> left, Vector128<int> right)
{
Vector128<int> output = GetUninitializedVector128<int>();
@ -235,7 +235,7 @@ public static class IntrinsicUtility
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<ulong> MultiplyInternal_Fallback(Vector128<ulong> left, Vector128<ulong> right)
{
ulong leftInteger1 = Unsafe.As<Vector128<ulong>, ulong>(ref left);
@ -252,7 +252,7 @@ public static class IntrinsicUtility
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<ulong> MultiplyInternal_Sse2(Vector128<ulong> left, Vector128<ulong> right)
{
// https://stackoverflow.com/questions/17863411/sse-multiplication-of-2-64-bit-integers
@ -269,7 +269,7 @@ public static class IntrinsicUtility
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector256<ulong> MultiplyInternal_Fallback(Vector256<ulong> left, Vector256<ulong> right)
{
Vector256<ulong> output = GetUninitializedVector256<ulong>();
@ -285,7 +285,7 @@ public static class IntrinsicUtility
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector256<ulong> MultiplyInternal_Avx2(Vector256<ulong> left, Vector256<ulong> right)
{
// https://stackoverflow.com/questions/17863411/sse-multiplication-of-2-64-bit-integers

View File

@ -4,7 +4,6 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;
using System.Runtime.Intrinsics.Arm;
using X10D.CompilerServices;
#if NET7_0_OR_GREATER
@ -66,47 +65,42 @@ public static class SpanExtensions
[MethodImpl(CompilerResources.MethodImplOptions)]
public static bool Contains<T>(this ReadOnlySpan<T> span, T value) where T : struct, Enum
{
unsafe
switch (Unsafe.SizeOf<T>())
{
#pragma warning disable CS8500
switch (sizeof(T))
#pragma warning restore CS8500
{
case 1:
{
ref byte enums = ref Unsafe.As<T, byte>(ref MemoryMarshal.GetReference(span));
return MemoryMarshal.CreateSpan(ref enums, span.Length).Contains(Unsafe.As<T, byte>(ref value));
}
case 1:
{
ref byte enums = ref Unsafe.As<T, byte>(ref MemoryMarshal.GetReference(span));
return MemoryMarshal.CreateSpan(ref enums, span.Length).Contains(Unsafe.As<T, byte>(ref value));
}
case 2:
{
ref ushort enums = ref Unsafe.As<T, ushort>(ref MemoryMarshal.GetReference(span));
return MemoryMarshal.CreateSpan(ref enums, span.Length).Contains(Unsafe.As<T, ushort>(ref value));
}
case 2:
{
ref ushort enums = ref Unsafe.As<T, ushort>(ref MemoryMarshal.GetReference(span));
return MemoryMarshal.CreateSpan(ref enums, span.Length).Contains(Unsafe.As<T, ushort>(ref value));
}
case 4:
{
ref uint enums = ref Unsafe.As<T, uint>(ref MemoryMarshal.GetReference(span));
return MemoryMarshal.CreateSpan(ref enums, span.Length).Contains(Unsafe.As<T, uint>(ref value));
}
case 4:
{
ref uint enums = ref Unsafe.As<T, uint>(ref MemoryMarshal.GetReference(span));
return MemoryMarshal.CreateSpan(ref enums, span.Length).Contains(Unsafe.As<T, uint>(ref value));
}
case 8:
{
ref ulong enums = ref Unsafe.As<T, ulong>(ref MemoryMarshal.GetReference(span));
return MemoryMarshal.CreateSpan(ref enums, span.Length).Contains(Unsafe.As<T, ulong>(ref value));
}
case 8:
{
ref ulong enums = ref Unsafe.As<T, ulong>(ref MemoryMarshal.GetReference(span));
return MemoryMarshal.CreateSpan(ref enums, span.Length).Contains(Unsafe.As<T, ulong>(ref value));
}
// dotcover disable
//NOSONAR
default:
// dotcover disable
//NOSONAR
default:
#if NET7_0_OR_GREATER
throw new UnreachableException(ExceptionMessages.EnumSizeIsUnexpected);
throw new UnreachableException(string.Format(ExceptionMessages.EnumSizeIsUnexpected, Unsafe.SizeOf<T>()));
#else
throw new ArgumentException(ExceptionMessages.EnumSizeIsUnexpected);
throw new ArgumentException(string.Format(ExceptionMessages.EnumSizeIsUnexpected, Unsafe.SizeOf<T>()));
#endif
//NOSONAR
// dotcover enable
}
//NOSONAR
// dotcover enable
}
}
@ -154,11 +148,6 @@ public static class SpanExtensions
return PackByteInternal_Sse2(source);
}
if (AdvSimd.IsSupported)
{
return PackByteInternal_AdvSimd(source);
}
return PackByteInternal_Fallback(source);
}
@ -263,10 +252,6 @@ public static class SpanExtensions
return PackInt32Internal_Sse2(source);
}
if (AdvSimd.IsSupported)
{
return PackInt32Internal_AdvSimd(source);
}
goto default;
default:
@ -392,35 +377,6 @@ public static class SpanExtensions
}
}
// dotcover disable
//NOSONAR
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
internal static int PackInt32Internal_AdvSimd(this ReadOnlySpan<bool> source)
{
unsafe
{
fixed (bool* pSource = source)
{
Vector128<ulong> vector1 = AdvSimd.LoadVector128((byte*)pSource).CorrectBoolean().AsUInt64();
Vector128<ulong> vector2 = AdvSimd.LoadVector128((byte*)(pSource + 16)).CorrectBoolean().AsUInt64();
Vector128<ulong> calc1 = IntrinsicUtility.Multiply(IntegerPackingMagicV128, vector1);
Vector128<ulong> calc2 = IntrinsicUtility.Multiply(IntegerPackingMagicV128, vector2);
calc1 = AdvSimd.ShiftRightLogical(calc1, 56);
calc2 = AdvSimd.ShiftRightLogical(calc2, 56);
Vector128<ulong> shift1 = AdvSimd.ShiftLogical(calc1, Vector128.Create(0, 8));
Vector128<ulong> shift2 = AdvSimd.ShiftLogical(calc2, Vector128.Create(16, 24));
return (int)(shift1.GetElement(0) | shift1.GetElement(1) | shift2.GetElement(0) | shift2.GetElement(1));
}
}
}
//NOSONAR
// dotcover enable
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
internal static int PackInt32Internal_Avx2(this ReadOnlySpan<bool> source)
@ -474,22 +430,4 @@ public static class SpanExtensions
}
}
}
// dotcover disable
//NOSONAR
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
internal static byte PackByteInternal_AdvSimd(this ReadOnlySpan<bool> source)
{
unsafe
{
fixed (bool* pSource = source)
{
Vector64<byte> load = AdvSimd.LoadVector64((byte*)pSource);
return unchecked((byte)(IntegerPackingMagic * load.CorrectBoolean().AsUInt64().GetElement(0) >> 56));
}
}
}
//NOSONAR
// dotcover enable
}

View File

@ -27,7 +27,7 @@ public static class ColorExtensions
/// When this method returns, contains the <see cref="Color.B" /> component of <paramref name="color" />.
/// </param>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static void Deconstruct(this Color color, out byte a, out byte r, out byte g, out byte b)
{
a = color.A;
@ -48,7 +48,7 @@ public static class ColorExtensions
/// When this method returns, contains the <see cref="Color.B" /> component of <paramref name="color" />.
/// </param>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static void Deconstruct(this Color color, out byte r, out byte g, out byte b)
{
r = color.R;
@ -63,7 +63,7 @@ public static class ColorExtensions
/// <returns>The closest <see cref="ConsoleColor" />.</returns>
/// <author>Glenn Slayden, https://stackoverflow.com/a/12340136/1467293</author>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ConsoleColor GetClosestConsoleColor(this Color color)
{
ConsoleColor result = 0;
@ -102,7 +102,7 @@ public static class ColorExtensions
/// <param name="color">The color to invert.</param>
/// <returns>The inverted color.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Color Inverted(this Color color)
{
return Color.FromArgb(color.A, 255 - color.R, 255 - color.G, 255 - color.B);
@ -120,7 +120,7 @@ public static class ColorExtensions
/// <see cref="Color.A" /> component is <paramref name="a" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Color WithA(this Color color, int a)
{
return Color.FromArgb(a, color.R, color.G, color.B);
@ -138,7 +138,7 @@ public static class ColorExtensions
/// <see cref="Color.B" /> component is <paramref name="b" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Color WithB(this Color color, int b)
{
return Color.FromArgb(color.A, color.R, color.G, b);
@ -156,7 +156,7 @@ public static class ColorExtensions
/// <see cref="Color.G" /> component is <paramref name="g" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Color WithG(this Color color, int g)
{
return Color.FromArgb(color.A, color.R, g, color.B);
@ -174,7 +174,7 @@ public static class ColorExtensions
/// <see cref="Color.R" /> component is <paramref name="r" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Color WithR(this Color color, int r)
{
return Color.FromArgb(color.A, r, color.G, color.B);

View File

@ -21,7 +21,7 @@ public static class PointExtensions
/// <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this Point point, LineF line)
{
return ((PointF)point).IsOnLine(line);
@ -38,7 +38,7 @@ public static class PointExtensions
/// <paramref name="end" />; otherwise <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this Point point, PointF start, PointF end)
{
return point.IsOnLine(new LineF(start, end));
@ -55,7 +55,7 @@ public static class PointExtensions
/// <paramref name="end" />; otherwise <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this Point point, Vector2 start, Vector2 end)
{
return point.IsOnLine(new LineF(start, end));
@ -67,7 +67,7 @@ public static class PointExtensions
/// <param name="point">The point to convert.</param>
/// <returns>The resulting <see cref="Size" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Size ToSize(this Point point)
{
return new Size(point.X, point.Y);

View File

@ -22,7 +22,7 @@ public static class PointFExtensions
/// <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this PointF point, LineF line)
{
(float x1, float x2) = (line.Start.X, line.End.X);
@ -42,7 +42,7 @@ public static class PointFExtensions
/// <paramref name="end" />; otherwise <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this PointF point, PointF start, PointF end)
{
return point.IsOnLine(new LineF(start, end));
@ -59,7 +59,7 @@ public static class PointFExtensions
/// <paramref name="end" />; otherwise <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this PointF point, Vector2 start, Vector2 end)
{
return point.IsOnLine(new LineF(start, end));
@ -71,7 +71,7 @@ public static class PointFExtensions
/// <param name="point">The point whose components to round.</param>
/// <returns>The rounded point.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static PointF Round(this PointF point)
{
return point.Round(1.0f);
@ -84,7 +84,7 @@ public static class PointFExtensions
/// <param name="nearest">The nearest multiple to which the components should be rounded.</param>
/// <returns>The rounded point.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static PointF Round(this PointF point, float nearest)
{
float x = point.X.Round(nearest);
@ -98,7 +98,7 @@ public static class PointFExtensions
/// <param name="point">The point to convert.</param>
/// <returns>The resulting <see cref="SizeF" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static SizeF ToSizeF(this PointF point)
{
return new SizeF(point.X, point.Y);

View File

@ -17,7 +17,7 @@ public static class SizeExtensions
/// <param name="size">The size to convert.</param>
/// <returns>The resulting <see cref="Point" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Point ToPoint(this Size size)
{
return new Point(size.Width, size.Height);
@ -29,7 +29,7 @@ public static class SizeExtensions
/// <param name="size">The size to convert.</param>
/// <returns>The resulting <see cref="PointF" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static PointF ToPointF(this Size size)
{
return new PointF(size.Width, size.Height);
@ -41,7 +41,7 @@ public static class SizeExtensions
/// <param name="size">The size to convert.</param>
/// <returns>The resulting <see cref="Vector2" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector2 ToVector2(this Size size)
{
return new Vector2(size.Width, size.Height);

View File

@ -150,7 +150,7 @@ namespace X10D {
}
/// <summary>
/// Looks up a localized string similar to The enum has a size that is not supported..
/// Looks up a localized string similar to Enum has unexpected size of {0} bytes..
/// </summary>
internal static string EnumSizeIsUnexpected {
get {

View File

@ -145,7 +145,7 @@
<value>Type provided must be an Enum.</value>
</data>
<data name="EnumSizeIsUnexpected" xml:space="preserve">
<value>The enum has a size that is not supported.</value>
<value>Enum has unexpected size of {0} bytes.</value>
</data>
<data name="ObjectIsNotAValidType" xml:space="preserve">
<value>The specified object is not a valid type.</value>

View File

@ -36,7 +36,7 @@ public static class BigIntegerExtensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int DigitalRoot(this BigInteger value)
{
BigInteger root = BigInteger.Abs(value).Mod(9);
@ -50,7 +50,7 @@ public static class BigIntegerExtensions
/// <returns>The factorial of <paramref name="value" />.</returns>
/// <exception cref="ArithmeticException"><paramref name="value" /> is less than 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static BigInteger Factorial(this BigInteger value)
{
if (value < 0)
@ -79,7 +79,7 @@ public static class BigIntegerExtensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static BigInteger GreatestCommonFactor(this BigInteger value, BigInteger other)
{
while (other != 0)
@ -99,7 +99,7 @@ public static class BigIntegerExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this BigInteger value)
{
return !value.IsEven;
@ -113,7 +113,7 @@ public static class BigIntegerExtensions
/// <see langword="true" /> if <paramref name="value" /> is prime; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPrime(this BigInteger value)
{
if (value <= 1)
@ -149,7 +149,7 @@ public static class BigIntegerExtensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static BigInteger LowestCommonMultiple(this BigInteger value, BigInteger other)
{
if (value == 0 || other == 0)
@ -185,7 +185,7 @@ public static class BigIntegerExtensions
/// <author>ShreevatsaR, https://stackoverflow.com/a/1082938/1467293</author>
/// <license>CC-BY-SA 2.5</license>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static BigInteger Mod(this BigInteger dividend, BigInteger divisor)
{
BigInteger r = dividend % divisor;
@ -201,7 +201,7 @@ public static class BigIntegerExtensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this BigInteger value)
{
var persistence = 0;
@ -246,7 +246,7 @@ public static class BigIntegerExtensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static BigInteger Wrap(this BigInteger value, BigInteger low, BigInteger high)
{
BigInteger difference = high - low;
@ -260,7 +260,7 @@ public static class BigIntegerExtensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static BigInteger Wrap(this BigInteger value, BigInteger length)
{
return ((value % length) + length) % length;

View File

@ -35,7 +35,7 @@ public static class ByteExtensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte DigitalRoot(this byte value)
{
int root = value % 9;
@ -48,7 +48,7 @@ public static class ByteExtensions
/// <param name="value">The value whose factorial to compute.</param>
/// <returns>The factorial of <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long Factorial(this byte value)
{
if (value == 0)
@ -72,7 +72,7 @@ public static class ByteExtensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte GreatestCommonFactor(this byte value, byte other)
{
return (byte)((long)value).GreatestCommonFactor(other);
@ -87,7 +87,7 @@ public static class ByteExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this byte value)
{
return (value & 1) == 0;
@ -102,7 +102,7 @@ public static class ByteExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this byte value)
{
return !value.IsEven();
@ -128,7 +128,7 @@ public static class ByteExtensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte LowestCommonMultiple(this byte value, byte other)
{
return (byte)((long)value).LowestCommonMultiple(other);
@ -143,7 +143,7 @@ public static class ByteExtensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this byte value)
{
return ((long)value).MultiplicativePersistence();
@ -157,7 +157,7 @@ public static class ByteExtensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte Wrap(this byte value, byte low, byte high)
{
return (byte)((ulong)value).Wrap(low, high);
@ -170,7 +170,7 @@ public static class ByteExtensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte Wrap(this byte value, byte length)
{
return (byte)((ulong)value).Wrap(length);

View File

@ -49,7 +49,7 @@ public static class ComparableExtensions
/// </example>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool Between<T1, T2, T3>(this T1 value, T2 lower, T3 upper,
InclusiveOptions inclusiveOptions = InclusiveOptions.None)
where T1 : IComparable<T2>, IComparable<T3>
@ -106,7 +106,7 @@ public static class ComparableExtensions
/// </example>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static T Clamp<T>(this T value, T lower, T upper)
where T : IComparable<T>
{
@ -148,7 +148,7 @@ public static class ComparableExtensions
/// </example>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool GreaterThan<T1, T2>(this T1 value, T2 other)
where T1 : IComparable<T2>
{
@ -183,7 +183,7 @@ public static class ComparableExtensions
/// </example>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool GreaterThanOrEqualTo<T1, T2>(this T1 value, T2 other)
where T1 : IComparable<T2>
{
@ -218,7 +218,7 @@ public static class ComparableExtensions
/// </example>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool LessThan<T1, T2>(this T1 value, T2 other)
where T1 : IComparable<T2>
{
@ -253,7 +253,7 @@ public static class ComparableExtensions
/// </example>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool LessThanOrEqualTo<T1, T2>(this T1 value, T2 other)
where T1 : IComparable<T2>
{
@ -287,7 +287,7 @@ public static class ComparableExtensions
/// </example>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static T Max<T>(this T value, T other)
where T : IComparable<T>
{
@ -321,7 +321,7 @@ public static class ComparableExtensions
/// </example>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static T Min<T>(this T value, T other)
where T : IComparable<T>
{

View File

@ -16,7 +16,7 @@ public static class DecimalExtensions
/// <param name="value">The number whose square root is to be found.</param>
/// <returns>The square root of <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Complex ComplexSqrt(this decimal value)
{
return Complex.Sqrt((double)value);
@ -31,7 +31,7 @@ public static class DecimalExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this decimal value)
{
return value % 2.0m == 0.0m;
@ -46,7 +46,7 @@ public static class DecimalExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this decimal value)
{
return !value.IsEven();
@ -58,7 +58,7 @@ public static class DecimalExtensions
/// <param name="value">The value to round.</param>
/// <returns><paramref name="value" /> rounded to the nearest whole number.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static decimal Round(this decimal value)
{
return value.Round(1.0m);
@ -71,7 +71,7 @@ public static class DecimalExtensions
/// <param name="nearest">The nearest multiple to which <paramref name="value" /> should be rounded.</param>
/// <returns><paramref name="value" /> rounded to the nearest multiple of <paramref name="nearest" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static decimal Round(this decimal value, decimal nearest)
{
return System.Math.Round(value / nearest) * nearest;
@ -84,7 +84,7 @@ public static class DecimalExtensions
/// <returns>The saturated value.</returns>
/// <remarks>This method clamps <paramref name="value" /> between 0 and 1.</remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static decimal Saturate(this decimal value)
{
return System.Math.Clamp(value, 0.0m, 1.0m);
@ -118,7 +118,7 @@ public static class DecimalExtensions
/// </list>
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Sign(this decimal value)
{
return System.Math.Sign(value);
@ -153,7 +153,7 @@ public static class DecimalExtensions
/// </returns>
/// <exception cref="ArgumentException"><paramref name="value" /> is negative.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static decimal Sqrt(this decimal value)
{
switch (value)
@ -183,7 +183,7 @@ public static class DecimalExtensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static decimal Wrap(this decimal value, decimal low, decimal high)
{
decimal difference = high - low;
@ -197,7 +197,7 @@ public static class DecimalExtensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static decimal Wrap(this decimal value, decimal length)
{
return ((value % length) + length) % length;

View File

@ -21,7 +21,7 @@ public static class DoubleExtensions
/// is equal to <see cref="double.NaN" />, less than -1, or greater than 1, <see cref="double.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Acos(this double value)
{
return System.Math.Acos(value);
@ -39,7 +39,7 @@ public static class DoubleExtensions
/// <paramref name="value" /> is less than 1 or equal to <see cref="double.NaN" />, <see cref="double.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Acosh(this double value)
{
return System.Math.Acosh(value);
@ -57,7 +57,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Asin(this double value)
{
return System.Math.Asin(value);
@ -75,7 +75,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" />, <see cref="double.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Asinh(this double value)
{
return System.Math.Asinh(value);
@ -92,7 +92,7 @@ public static class DoubleExtensions
/// <paramref name="value" /> is equal to <see cref="double.NaN" />, <see cref="double.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Atan(this double value)
{
return System.Math.Atan(value);
@ -111,7 +111,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Atanh(this double value)
{
return System.Math.Atanh(value);
@ -123,7 +123,7 @@ public static class DoubleExtensions
/// <param name="value">The number whose square root is to be found.</param>
/// <returns>The square root of <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Complex ComplexSqrt(this double value)
{
switch (value)
@ -153,7 +153,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Cos(this double value)
{
return System.Math.Cos(value);
@ -170,7 +170,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" />, <see cref="double.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Cosh(this double value)
{
return System.Math.Cosh(value);
@ -182,7 +182,7 @@ public static class DoubleExtensions
/// <param name="value">The angle in degrees to convert.</param>
/// <returns>The result of π * <paramref name="value" /> / 180.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double DegreesToRadians(this double value)
{
return value * (System.Math.PI / 180.0);
@ -197,7 +197,7 @@ public static class DoubleExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this double value)
{
return System.Math.Abs(value % 2.0) < double.Epsilon;
@ -212,7 +212,7 @@ public static class DoubleExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this double value)
{
return !value.IsEven();
@ -224,7 +224,7 @@ public static class DoubleExtensions
/// <param name="value">The angle in radians to convert.</param>
/// <returns>The result of π * <paramref name="value" /> / 180.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double RadiansToDegrees(this double value)
{
return value * (180.0 / System.Math.PI);
@ -236,7 +236,7 @@ public static class DoubleExtensions
/// <param name="value">The value to round.</param>
/// <returns><paramref name="value" /> rounded to the nearest whole number.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Round(this double value)
{
return value.Round(1.0);
@ -249,7 +249,7 @@ public static class DoubleExtensions
/// <param name="nearest">The nearest multiple to which <paramref name="value" /> should be rounded.</param>
/// <returns><paramref name="value" /> rounded to the nearest multiple of <paramref name="nearest" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Round(this double value, double nearest)
{
return System.Math.Round(value / nearest) * nearest;
@ -262,7 +262,7 @@ public static class DoubleExtensions
/// <returns>The saturated value.</returns>
/// <remarks>This method clamps <paramref name="value" /> between 0 and 1.</remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Saturate(this double value)
{
return System.Math.Clamp(value, 0.0, 1.0);
@ -278,7 +278,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Sin(this double value)
{
return System.Math.Sin(value);
@ -294,7 +294,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Sinh(this double value)
{
return System.Math.Sinh(value);
@ -329,7 +329,7 @@ public static class DoubleExtensions
/// </returns>
/// <exception cref="ArithmeticException"><paramref name="value" /> is equal to <see cref="double.NaN" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Sign(this double value)
{
return System.Math.Sign(value);
@ -365,7 +365,7 @@ public static class DoubleExtensions
/// <author>SLenik https://stackoverflow.com/a/6755197/1467293</author>
/// <license>CC BY-SA 3.0</license>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Sqrt(this double value)
{
switch (value)
@ -399,7 +399,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Tan(this double value)
{
return System.Math.Tan(value);
@ -416,7 +416,7 @@ public static class DoubleExtensions
/// <see cref="double.NaN" />, this method returns <see cref="double.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Tanh(this double value)
{
return System.Math.Tanh(value);
@ -430,7 +430,7 @@ public static class DoubleExtensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Wrap(this double value, double low, double high)
{
double difference = high - low;
@ -444,7 +444,7 @@ public static class DoubleExtensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Wrap(this double value, double length)
{
return ((value % length) + length) % length;

View File

@ -34,7 +34,7 @@ public static class Int16Extensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short DigitalRoot(this short value)
{
short root = System.Math.Abs(value).Mod(9);
@ -48,7 +48,7 @@ public static class Int16Extensions
/// <returns>The factorial of <paramref name="value" />.</returns>
/// <exception cref="ArithmeticException"><paramref name="value" /> is less than 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long Factorial(this short value)
{
if (value < 0)
@ -77,7 +77,7 @@ public static class Int16Extensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short GreatestCommonFactor(this short value, short other)
{
return (short)((long)value).GreatestCommonFactor(other);
@ -92,7 +92,7 @@ public static class Int16Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this short value)
{
return (value & 1) == 0;
@ -107,7 +107,7 @@ public static class Int16Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this short value)
{
return !value.IsEven();
@ -121,7 +121,7 @@ public static class Int16Extensions
/// <see langword="true" /> if <paramref name="value" /> is prime; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPrime(this short value)
{
return ((long)value).IsPrime();
@ -134,7 +134,7 @@ public static class Int16Extensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short LowestCommonMultiple(this short value, short other)
{
return (short)((long)value).LowestCommonMultiple(other);
@ -155,7 +155,7 @@ public static class Int16Extensions
/// <author>ShreevatsaR, https://stackoverflow.com/a/1082938/1467293</author>
/// <license>CC-BY-SA 2.5</license>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short Mod(this short dividend, short divisor)
{
int r = dividend % divisor;
@ -171,7 +171,7 @@ public static class Int16Extensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this short value)
{
return ((long)value).MultiplicativePersistence();
@ -205,7 +205,7 @@ public static class Int16Extensions
/// </list>
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Sign(this short value)
{
return System.Math.Sign(value);
@ -219,7 +219,7 @@ public static class Int16Extensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short Wrap(this short value, short low, short high)
{
return (short)((long)value).Wrap(low, high);
@ -232,7 +232,7 @@ public static class Int16Extensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short Wrap(this short value, short length)
{
return (short)((long)value).Wrap(length);

View File

@ -34,7 +34,7 @@ public static class Int32Extensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int DigitalRoot(this int value)
{
int root = System.Math.Abs(value).Mod(9);
@ -48,7 +48,7 @@ public static class Int32Extensions
/// <returns>The factorial of <paramref name="value" />.</returns>
/// <exception cref="ArithmeticException"><paramref name="value" /> is less than 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long Factorial(this int value)
{
if (value < 0)
@ -77,7 +77,7 @@ public static class Int32Extensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int GreatestCommonFactor(this int value, int other)
{
return (int)((long)value).GreatestCommonFactor(other);
@ -92,7 +92,7 @@ public static class Int32Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this int value)
{
return (value & 1) == 0;
@ -107,7 +107,7 @@ public static class Int32Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this int value)
{
return !value.IsEven();
@ -121,7 +121,7 @@ public static class Int32Extensions
/// <see langword="true" /> if <paramref name="value" /> is prime; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPrime(this int value)
{
return ((long)value).IsPrime();
@ -134,7 +134,7 @@ public static class Int32Extensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int LowestCommonMultiple(this int value, int other)
{
return (int)((long)value).LowestCommonMultiple(other);
@ -155,7 +155,7 @@ public static class Int32Extensions
/// <author>ShreevatsaR, https://stackoverflow.com/a/1082938/1467293</author>
/// <license>CC-BY-SA 2.5</license>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Mod(this int dividend, int divisor)
{
int r = dividend % divisor;
@ -171,7 +171,7 @@ public static class Int32Extensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this int value)
{
return ((long)value).MultiplicativePersistence();
@ -205,7 +205,7 @@ public static class Int32Extensions
/// </list>
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Sign(this int value)
{
return System.Math.Sign(value);
@ -219,7 +219,7 @@ public static class Int32Extensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Wrap(this int value, int low, int high)
{
return (int)((long)value).Wrap(low, high);
@ -232,7 +232,7 @@ public static class Int32Extensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Wrap(this int value, int length)
{
return (int)((long)value).Wrap(length);

View File

@ -34,7 +34,7 @@ public static class Int64Extensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long DigitalRoot(this long value)
{
long root = System.Math.Abs(value).Mod(9L);
@ -48,7 +48,7 @@ public static class Int64Extensions
/// <returns>The factorial of <paramref name="value" />.</returns>
/// <exception cref="ArithmeticException"><paramref name="value" /> is less than 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long Factorial(this long value)
{
if (value < 0)
@ -77,7 +77,7 @@ public static class Int64Extensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long GreatestCommonFactor(this long value, long other)
{
while (other != 0)
@ -97,7 +97,7 @@ public static class Int64Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this long value)
{
return (value & 1) == 0;
@ -112,7 +112,7 @@ public static class Int64Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this long value)
{
return !value.IsEven();
@ -126,7 +126,7 @@ public static class Int64Extensions
/// <see langword="true" /> if <paramref name="value" /> is prime; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPrime(this long value)
{
switch (value)
@ -158,7 +158,7 @@ public static class Int64Extensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long LowestCommonMultiple(this long value, long other)
{
if (value == 0 || other == 0)
@ -194,7 +194,7 @@ public static class Int64Extensions
/// <author>ShreevatsaR, https://stackoverflow.com/a/1082938/1467293</author>
/// <license>CC-BY-SA 2.5</license>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long Mod(this long dividend, long divisor)
{
long r = dividend % divisor;
@ -210,7 +210,7 @@ public static class Int64Extensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this long value)
{
var persistence = 0;
@ -275,7 +275,7 @@ public static class Int64Extensions
/// </list>
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Sign(this long value)
{
return System.Math.Sign(value);
@ -289,7 +289,7 @@ public static class Int64Extensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long Wrap(this long value, long low, long high)
{
long difference = high - low;
@ -303,7 +303,7 @@ public static class Int64Extensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long Wrap(this long value, long length)
{
return ((value % length) + length) % length;

View File

@ -70,7 +70,7 @@ public static class MathUtility
/// <param name="value">The gamma-encoded value to convert. Expected range is [0, 1].</param>
/// <returns>The linear value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float GammaToLinear(float value)
{
return GammaToLinear(value, DefaultGammaF);
@ -83,7 +83,7 @@ public static class MathUtility
/// <param name="gamma">The gamma value to use for decoding.</param>
/// <returns>The linear value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float GammaToLinear(float value, float gamma)
{
return MathF.Pow(value, 1.0f / gamma);
@ -95,7 +95,7 @@ public static class MathUtility
/// <param name="value">The gamma-encoded value to convert. Expected range is [0, 1].</param>
/// <returns>The linear value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double GammaToLinear(double value)
{
return GammaToLinear(value, DefaultGamma);
@ -108,7 +108,7 @@ public static class MathUtility
/// <param name="gamma">The gamma value to use for decoding.</param>
/// <returns>The linear value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double GammaToLinear(double value, double gamma)
{
return System.Math.Pow(value, 1.0 / gamma);
@ -123,7 +123,7 @@ public static class MathUtility
/// <param name="end">The end of the range.</param>
/// <returns>A value determined by <c>(alpha - start) / (end - start)</c>.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float InverseLerp(float alpha, float start, float end)
{
if (MathF.Abs(start - end) < float.Epsilon)
@ -143,7 +143,7 @@ public static class MathUtility
/// <param name="end">The end of the range.</param>
/// <returns>A value determined by <c>(alpha - start) / (end - start)</c>.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double InverseLerp(double alpha, double start, double end)
{
if (System.Math.Abs(start - end) < double.Epsilon)
@ -164,7 +164,7 @@ public static class MathUtility
/// The interpolation result as determined by <c>(1 - alpha) * value + alpha * target</c>.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Lerp(float value, float target, float alpha)
{
// rookie mistake: a + t * (b - a)
@ -182,7 +182,7 @@ public static class MathUtility
/// The interpolation result as determined by <c>(1 - alpha) * value + alpha * target</c>.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double Lerp(double value, double target, double alpha)
{
// rookie mistake: a + t * (b - a)
@ -196,7 +196,7 @@ public static class MathUtility
/// <param name="value">The linear value to convert. Expected range is [0, 1].</param>
/// <returns>The gamma-encoded value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float LinearToGamma(float value)
{
return LinearToGamma(value, DefaultGammaF);
@ -209,7 +209,7 @@ public static class MathUtility
/// <param name="gamma">The gamma value to use for encoding.</param>
/// <returns>The gamma-encoded value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float LinearToGamma(float value, float gamma)
{
return MathF.Pow(value, 1.0f / gamma);
@ -221,7 +221,7 @@ public static class MathUtility
/// <param name="value">The linear value to convert. Expected range is [0, 1].</param>
/// <returns>The gamma-encoded value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double LinearToGamma(double value)
{
return LinearToGamma(value, DefaultGamma);
@ -234,7 +234,7 @@ public static class MathUtility
/// <param name="gamma">The gamma value to use for encoding.</param>
/// <returns>The gamma-encoded value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double LinearToGamma(double value, double gamma)
{
return System.Math.Pow(value, 1.0 / gamma);
@ -302,7 +302,7 @@ public static class MathUtility
/// <param name="newMax">The new maximum value.</param>
/// <returns>The scaled value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float ScaleRange(float value, float oldMin, float oldMax, float newMin, float newMax)
{
float oldRange = oldMax - oldMin;
@ -321,7 +321,7 @@ public static class MathUtility
/// <param name="newMax">The new maximum value.</param>
/// <returns>The scaled value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static double ScaleRange(double value, double oldMin, double oldMax, double newMin, double newMax)
{
double oldRange = oldMax - oldMin;

View File

@ -35,7 +35,7 @@ public static class SByteExtensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte DigitalRoot(this sbyte value)
{
int root = System.Math.Abs(value).Mod(9);
@ -49,7 +49,7 @@ public static class SByteExtensions
/// <returns>The factorial of <paramref name="value" />.</returns>
/// <exception cref="ArithmeticException"><paramref name="value" /> is less than 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long Factorial(this sbyte value)
{
if (value < 0)
@ -78,7 +78,7 @@ public static class SByteExtensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte GreatestCommonFactor(this sbyte value, sbyte other)
{
return (sbyte)((long)value).GreatestCommonFactor(other);
@ -93,7 +93,7 @@ public static class SByteExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this sbyte value)
{
return (value & 1) == 0;
@ -108,7 +108,7 @@ public static class SByteExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this sbyte value)
{
return !value.IsEven();
@ -122,7 +122,7 @@ public static class SByteExtensions
/// <see langword="true" /> if <paramref name="value" /> is prime; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPrime(this sbyte value)
{
return ((long)value).IsPrime();
@ -135,7 +135,7 @@ public static class SByteExtensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte LowestCommonMultiple(this sbyte value, sbyte other)
{
return (sbyte)((long)value).LowestCommonMultiple(other);
@ -156,7 +156,7 @@ public static class SByteExtensions
/// <author>ShreevatsaR, https://stackoverflow.com/a/1082938/1467293</author>
/// <license>CC-BY-SA 2.5</license>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte Mod(this sbyte dividend, sbyte divisor)
{
int r = dividend % divisor;
@ -172,7 +172,7 @@ public static class SByteExtensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this sbyte value)
{
return ((long)value).MultiplicativePersistence();
@ -206,7 +206,7 @@ public static class SByteExtensions
/// </list>
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Sign(this sbyte value)
{
return System.Math.Sign(value);
@ -220,7 +220,7 @@ public static class SByteExtensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte Wrap(this sbyte value, sbyte low, sbyte high)
{
return (sbyte)((long)value).Wrap(low, high);
@ -233,7 +233,7 @@ public static class SByteExtensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte Wrap(this sbyte value, sbyte length)
{
return (sbyte)((long)value).Wrap(length);

View File

@ -21,7 +21,7 @@ public static class SingleExtensions
/// is equal to <see cref="float.NaN" />, less than -1, or greater than 1, <see cref="float.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Acos(this float value)
{
return MathF.Acos(value);
@ -39,7 +39,7 @@ public static class SingleExtensions
/// <paramref name="value" /> is less than 1 or equal to <see cref="float.NaN" />, <see cref="float.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Acosh(this float value)
{
return MathF.Acosh(value);
@ -57,7 +57,7 @@ public static class SingleExtensions
/// <see cref="float.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Asin(this float value)
{
return MathF.Asin(value);
@ -75,7 +75,7 @@ public static class SingleExtensions
/// <see cref="float.NaN" />, <see cref="float.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Asinh(this float value)
{
return MathF.Asinh(value);
@ -92,7 +92,7 @@ public static class SingleExtensions
/// <paramref name="value" /> is equal to <see cref="float.NaN" />, <see cref="float.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Atan(this float value)
{
return MathF.Atan(value);
@ -111,7 +111,7 @@ public static class SingleExtensions
/// <see cref="float.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Atanh(this float value)
{
return MathF.Atanh(value);
@ -123,7 +123,7 @@ public static class SingleExtensions
/// <param name="value">The number whose square root is to be found.</param>
/// <returns>The square root of <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Complex ComplexSqrt(this float value)
{
switch (value)
@ -153,7 +153,7 @@ public static class SingleExtensions
/// <see cref="float.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Cos(this float value)
{
return MathF.Cos(value);
@ -170,7 +170,7 @@ public static class SingleExtensions
/// <see cref="float.NaN" />, <see cref="double.NaN" /> is returned.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Cosh(this float value)
{
return MathF.Cosh(value);
@ -182,7 +182,7 @@ public static class SingleExtensions
/// <param name="value">The angle in degrees to convert.</param>
/// <returns>The result of π * <paramref name="value" /> / 180.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float DegreesToRadians(this float value)
{
return value * (MathF.PI / 180.0f);
@ -197,7 +197,7 @@ public static class SingleExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this float value)
{
return value % 2 == 0;
@ -212,7 +212,7 @@ public static class SingleExtensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this float value)
{
return !value.IsEven();
@ -224,7 +224,7 @@ public static class SingleExtensions
/// <param name="value">The angle in radians to convert.</param>
/// <returns>The result of π * <paramref name="value" /> / 180.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float RadiansToDegrees(this float value)
{
return value * (180.0f / MathF.PI);
@ -236,7 +236,7 @@ public static class SingleExtensions
/// <param name="value">The value to round.</param>
/// <returns><paramref name="value" /> rounded to the nearest whole number.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Round(this float value)
{
return value.Round(1.0f);
@ -249,7 +249,7 @@ public static class SingleExtensions
/// <param name="nearest">The nearest multiple to which <paramref name="value" /> should be rounded.</param>
/// <returns><paramref name="value" /> rounded to the nearest multiple of <paramref name="nearest" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Round(this float value, float nearest)
{
return MathF.Round(value / nearest) * nearest;
@ -262,7 +262,7 @@ public static class SingleExtensions
/// <returns>The saturated value.</returns>
/// <remarks>This method clamps <paramref name="value" /> between 0 and 1.</remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Saturate(this float value)
{
return System.Math.Clamp(value, 0.0f, 1.0f);
@ -296,7 +296,7 @@ public static class SingleExtensions
/// </list>
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Sign(this float value)
{
return MathF.Sign(value);
@ -332,7 +332,7 @@ public static class SingleExtensions
/// <author>SLenik https://stackoverflow.com/a/6755197/1467293</author>
/// <license>CC BY-SA 3.0</license>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Sqrt(this float value)
{
switch (value)
@ -366,7 +366,7 @@ public static class SingleExtensions
/// <see cref="double.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Sin(this float value)
{
return MathF.Sin(value);
@ -382,7 +382,7 @@ public static class SingleExtensions
/// <see cref="float.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Sinh(this float value)
{
return MathF.Sinh(value);
@ -398,7 +398,7 @@ public static class SingleExtensions
/// <see cref="float.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Tan(this float value)
{
return MathF.Sin(value);
@ -415,7 +415,7 @@ public static class SingleExtensions
/// <see cref="float.NaN" />, this method returns <see cref="float.NaN" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Tanh(this float value)
{
return MathF.Tanh(value);
@ -429,7 +429,7 @@ public static class SingleExtensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Wrap(this float value, float low, float high)
{
return (float)((double)value).Wrap(low, high);
@ -442,7 +442,7 @@ public static class SingleExtensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static float Wrap(this float value, float length)
{
return (float)((double)value).Wrap(length);

View File

@ -35,7 +35,7 @@ public static class UInt16Extensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ushort DigitalRoot(this ushort value)
{
var root = (ushort)(value % 9);
@ -48,7 +48,7 @@ public static class UInt16Extensions
/// <param name="value">The value whose factorial to compute.</param>
/// <returns>The factorial of <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong Factorial(this ushort value)
{
if (value == 0)
@ -73,7 +73,7 @@ public static class UInt16Extensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ushort GreatestCommonFactor(this ushort value, ushort other)
{
return (ushort)((long)value).GreatestCommonFactor(other);
@ -88,7 +88,7 @@ public static class UInt16Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this ushort value)
{
return (value & 1) == 0;
@ -102,7 +102,7 @@ public static class UInt16Extensions
/// <see langword="true" /> if <paramref name="value" /> is prime; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPrime(this ushort value)
{
return ((ulong)value).IsPrime();
@ -117,7 +117,7 @@ public static class UInt16Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this ushort value)
{
return !value.IsEven();
@ -131,7 +131,7 @@ public static class UInt16Extensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ushort LowestCommonMultiple(this ushort value, ushort other)
{
return (ushort)((ulong)value).LowestCommonMultiple(other);
@ -146,7 +146,7 @@ public static class UInt16Extensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this ushort value)
{
return ((ulong)value).MultiplicativePersistence();
@ -160,7 +160,7 @@ public static class UInt16Extensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ushort Wrap(this ushort value, ushort low, ushort high)
{
return (ushort)((ulong)value).Wrap(low, high);
@ -173,7 +173,7 @@ public static class UInt16Extensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ushort Wrap(this ushort value, ushort length)
{
return (ushort)((ulong)value).Wrap(length);

View File

@ -35,7 +35,7 @@ public static class UInt32Extensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static uint DigitalRoot(this uint value)
{
uint root = value % 9;
@ -48,7 +48,7 @@ public static class UInt32Extensions
/// <param name="value">The value whose factorial to compute.</param>
/// <returns>The factorial of <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong Factorial(this uint value)
{
if (value == 0)
@ -73,7 +73,7 @@ public static class UInt32Extensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static uint GreatestCommonFactor(this uint value, uint other)
{
return (uint)((long)value).GreatestCommonFactor(other);
@ -88,7 +88,7 @@ public static class UInt32Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this uint value)
{
return (value & 1) == 0;
@ -102,7 +102,7 @@ public static class UInt32Extensions
/// <see langword="true" /> if <paramref name="value" /> is prime; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPrime(this uint value)
{
return ((ulong)value).IsPrime();
@ -117,7 +117,7 @@ public static class UInt32Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this uint value)
{
return !value.IsEven();
@ -131,7 +131,7 @@ public static class UInt32Extensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static uint LowestCommonMultiple(this uint value, uint other)
{
return (uint)((ulong)value).LowestCommonMultiple(other);
@ -146,7 +146,7 @@ public static class UInt32Extensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this uint value)
{
return ((ulong)value).MultiplicativePersistence();
@ -160,7 +160,7 @@ public static class UInt32Extensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static uint Wrap(this uint value, uint low, uint high)
{
return (uint)((ulong)value).Wrap(low, high);
@ -173,7 +173,7 @@ public static class UInt32Extensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static uint Wrap(this uint value, uint length)
{
return (uint)((ulong)value).Wrap(length);

View File

@ -35,7 +35,7 @@ public static class UInt64Extensions
/// <para>For example, the digital root of 239 is 5: <c>2 + 3 + 9 = 14</c>, then <c>1 + 4 = 5</c>.</para>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong DigitalRoot(this ulong value)
{
ulong root = value % 9;
@ -48,7 +48,7 @@ public static class UInt64Extensions
/// <param name="value">The value whose factorial to compute.</param>
/// <returns>The factorial of <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong Factorial(this ulong value)
{
if (value == 0)
@ -73,7 +73,7 @@ public static class UInt64Extensions
/// <param name="other">The second value.</param>
/// <returns>The greatest common factor between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong GreatestCommonFactor(this ulong value, ulong other)
{
while (other != 0)
@ -93,7 +93,7 @@ public static class UInt64Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEven(this ulong value)
{
return (value & 1) == 0;
@ -107,7 +107,7 @@ public static class UInt64Extensions
/// <see langword="true" /> if <paramref name="value" /> is prime; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPrime(this ulong value)
{
switch (value)
@ -141,7 +141,7 @@ public static class UInt64Extensions
/// otherwise.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOdd(this ulong value)
{
return !value.IsEven();
@ -155,7 +155,7 @@ public static class UInt64Extensions
/// <param name="other">The second value.</param>
/// <returns>The lowest common multiple between <paramref name="value" /> and <paramref name="other" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong LowestCommonMultiple(this ulong value, ulong other)
{
if (value == 0 || other == 0)
@ -185,7 +185,7 @@ public static class UInt64Extensions
/// Multiplicative persistence is defined as the recursive digital product until that product is a single digit.
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int MultiplicativePersistence(this ulong value)
{
var persistence = 0;
@ -230,7 +230,7 @@ public static class UInt64Extensions
/// <param name="high">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong Wrap(this ulong value, ulong low, ulong high)
{
ulong difference = high - low;
@ -244,7 +244,7 @@ public static class UInt64Extensions
/// <param name="length">The exclusive upper bound.</param>
/// <returns>The wrapped value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong Wrap(this ulong value, ulong length)
{
return ((value % length) + length) % length;

View File

@ -23,7 +23,7 @@ public static class EndPointExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="endPoint" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string GetHost(this EndPoint endPoint)
{
if (endPoint is null)
@ -52,7 +52,7 @@ public static class EndPointExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="endPoint" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int GetPort(this EndPoint endPoint)
{
if (endPoint is null)

View File

@ -20,7 +20,7 @@ public static class IPAddressExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="address" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsIPv4(this IPAddress address)
{
if (address is null)
@ -40,7 +40,7 @@ public static class IPAddressExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="address" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsIPv6(this IPAddress address)
{
if (address is null)

View File

@ -16,7 +16,7 @@ public static class Int16Extensions
/// <param name="value">The value to convert, expressed in host byte order.</param>
/// <returns>An integer value, expressed in network byte order.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short HostToNetworkOrder(this short value)
{
return IPAddress.HostToNetworkOrder(value);
@ -28,7 +28,7 @@ public static class Int16Extensions
/// <param name="value">The value to convert, expressed in network byte order.</param>
/// <returns>An integer value, expressed in host byte order.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short NetworkToHostOrder(this short value)
{
return IPAddress.NetworkToHostOrder(value);

View File

@ -16,7 +16,7 @@ public static class Int32Extensions
/// <param name="value">The value to convert, expressed in host byte order.</param>
/// <returns>An integer value, expressed in network byte order.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int HostToNetworkOrder(this int value)
{
return IPAddress.HostToNetworkOrder(value);
@ -28,7 +28,7 @@ public static class Int32Extensions
/// <param name="value">The value to convert, expressed in network byte order.</param>
/// <returns>An integer value, expressed in host byte order.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int NetworkToHostOrder(this int value)
{
return IPAddress.NetworkToHostOrder(value);

View File

@ -16,7 +16,7 @@ public static class Int64Extensions
/// <param name="value">The value to convert, expressed in host byte order.</param>
/// <returns>An integer value, expressed in network byte order.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long HostToNetworkOrder(this long value)
{
return IPAddress.HostToNetworkOrder(value);
@ -28,7 +28,7 @@ public static class Int64Extensions
/// <param name="value">The value to convert, expressed in network byte order.</param>
/// <returns>An integer value, expressed in host byte order.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long NetworkToHostOrder(this long value)
{
return IPAddress.NetworkToHostOrder(value);

View File

@ -20,7 +20,7 @@ public static class ByteExtensions
/// <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.x86.popcnt?view=net-6.0">POPCNT</a>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PopCount(this byte value)
{
return ((uint)value).PopCount();
@ -35,7 +35,7 @@ public static class ByteExtensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte RotateLeft(this byte value, int count)
{
count = count.Mod(8);
@ -51,7 +51,7 @@ public static class ByteExtensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte RotateRight(this byte value, int count)
{
count = count.Mod(8);
@ -67,7 +67,7 @@ public static class ByteExtensions
/// is 0 or the result overflows.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte RoundUpToPowerOf2(this byte value)
{
return (byte)((uint)value).RoundUpToPowerOf2();

View File

@ -19,7 +19,7 @@ public static class Int16Extensions
/// <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.x86.popcnt?view=net-6.0">POPCNT</a>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PopCount(this short value)
{
return ((uint)value).PopCount();
@ -34,7 +34,7 @@ public static class Int16Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short RotateLeft(this short value, int count)
{
var unsigned = unchecked((ushort)value);
@ -50,7 +50,7 @@ public static class Int16Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short RotateRight(this short value, int count)
{
var unsigned = unchecked((ushort)value);
@ -66,7 +66,7 @@ public static class Int16Extensions
/// is 0 or the result overflows.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static short RoundUpToPowerOf2(this short value)
{
return (short)((uint)value).RoundUpToPowerOf2();

View File

@ -19,7 +19,7 @@ public static class Int32Extensions
/// <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.x86.popcnt?view=net-6.0">POPCNT</a>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PopCount(this int value)
{
return ((uint)value).PopCount();
@ -34,7 +34,7 @@ public static class Int32Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int RotateLeft(this int value, int count)
{
var unsigned = unchecked((uint)value);
@ -50,7 +50,7 @@ public static class Int32Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int RotateRight(this int value, int count)
{
var unsigned = unchecked((uint)value);
@ -66,7 +66,7 @@ public static class Int32Extensions
/// is 0 or the result overflows.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int RoundUpToPowerOf2(this int value)
{
return (int)((uint)value).RoundUpToPowerOf2();

View File

@ -19,7 +19,7 @@ public static class Int64Extensions
/// <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.x86.popcnt?view=net-6.0">POPCNT</a>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PopCount(this long value)
{
return ((ulong)value).PopCount();
@ -34,7 +34,7 @@ public static class Int64Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long RotateLeft(this long value, int count)
{
var unsigned = unchecked((ulong)value);
@ -50,7 +50,7 @@ public static class Int64Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long RotateRight(this long value, int count)
{
var unsigned = unchecked((ulong)value);
@ -66,7 +66,7 @@ public static class Int64Extensions
/// is 0 or the result overflows.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long RoundUpToPowerOf2(this long value)
{
return (long)((ulong)value).RoundUpToPowerOf2();

View File

@ -20,7 +20,7 @@ public static class SByteExtensions
/// <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.x86.popcnt?view=net-6.0">POPCNT</a>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PopCount(this sbyte value)
{
return ((uint)value).PopCount();
@ -35,7 +35,7 @@ public static class SByteExtensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte RotateLeft(this sbyte value, int count)
{
var signed = unchecked((byte)value);
@ -51,7 +51,7 @@ public static class SByteExtensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte RotateRight(this sbyte value, int count)
{
var signed = unchecked((byte)value);
@ -67,7 +67,7 @@ public static class SByteExtensions
/// is 0 or the result overflows.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static sbyte RoundUpToPowerOf2(this sbyte value)
{
return (sbyte)((uint)value).RoundUpToPowerOf2();

View File

@ -20,7 +20,7 @@ public static class UInt16Extensions
/// <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.x86.popcnt?view=net-6.0">POPCNT</a>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PopCount(this ushort value)
{
return ((uint)value).PopCount();
@ -35,7 +35,7 @@ public static class UInt16Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ushort RotateLeft(this ushort value, int count)
{
return (ushort)((ushort)(value << count) | (ushort)(value >> (16 - count)));
@ -50,7 +50,7 @@ public static class UInt16Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ushort RotateRight(this ushort value, int count)
{
return (ushort)((ushort)(value >> count) | (ushort)(value << (16 - count)));
@ -65,7 +65,7 @@ public static class UInt16Extensions
/// is 0 or the result overflows.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ushort RoundUpToPowerOf2(this ushort value)
{
return (ushort)((uint)value).RoundUpToPowerOf2();

View File

@ -21,7 +21,7 @@ public static class UInt32Extensions
/// <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.x86.popcnt?view=net-6.0">POPCNT</a>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PopCount(this uint value)
{
return BitOperations.PopCount(value);
@ -36,7 +36,7 @@ public static class UInt32Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static uint RotateLeft(this uint value, int count)
{
return (value << count) | (value >> (32 - count));
@ -51,7 +51,7 @@ public static class UInt32Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static uint RotateRight(this uint value, int count)
{
return (value >> count) | (value << (32 - count));
@ -66,7 +66,7 @@ public static class UInt32Extensions
/// is 0 or the result overflows.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static uint RoundUpToPowerOf2(this uint value)
{
return BitOperations.RoundUpToPowerOf2(value);

View File

@ -21,7 +21,7 @@ public static class UInt64Extensions
/// <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.x86.popcnt?view=net-6.0">POPCNT</a>
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PopCount(this ulong value)
{
return BitOperations.PopCount(value);
@ -36,7 +36,7 @@ public static class UInt64Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong RotateLeft(this ulong value, int count)
{
return (value << count) | (value >> (64 - count));
@ -51,7 +51,7 @@ public static class UInt64Extensions
/// </param>
/// <returns>The rotated value.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong RotateRight(this ulong value, int count)
{
return (value >> count) | (value << (64 - count));
@ -66,7 +66,7 @@ public static class UInt64Extensions
/// is 0 or the result overflows.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static ulong RoundUpToPowerOf2(this ulong value)
{
return BitOperations.RoundUpToPowerOf2(value);

View File

@ -35,7 +35,7 @@ public static class Vector2Extensions
/// <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this Vector2 point, LineF line)
{
(float x1, float x2) = (line.Start.X, line.End.X);
@ -55,7 +55,7 @@ public static class Vector2Extensions
/// <paramref name="end" />; otherwise <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this Vector2 point, PointF start, PointF end)
{
return point.IsOnLine(new LineF(start, end));
@ -72,7 +72,7 @@ public static class Vector2Extensions
/// <paramref name="end" />; otherwise <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsOnLine(this Vector2 point, Vector2 start, Vector2 end)
{
return point.IsOnLine(new LineF(start, end));
@ -84,7 +84,7 @@ public static class Vector2Extensions
/// <param name="vector">The vector whose components to round.</param>
/// <returns>The rounded vector.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector2 Round(this Vector2 vector)
{
return vector.Round(1.0f);
@ -97,7 +97,7 @@ public static class Vector2Extensions
/// <param name="nearest">The nearest multiple to which the components should be rounded.</param>
/// <returns>The rounded vector.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector2 Round(this Vector2 vector, float nearest)
{
float x = vector.X.Round(nearest);
@ -111,7 +111,7 @@ public static class Vector2Extensions
/// <param name="vector">The vector to convert.</param>
/// <returns>The resulting <see cref="PointF" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static PointF ToPointF(this Vector2 vector)
{
return new PointF(vector.X, vector.Y);
@ -123,7 +123,7 @@ public static class Vector2Extensions
/// <param name="vector">The vector to convert.</param>
/// <returns>The resulting <see cref="SizeF" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static SizeF ToSizeF(this Vector2 vector)
{
return new SizeF(vector.X, vector.Y);
@ -139,7 +139,7 @@ public static class Vector2Extensions
/// <paramref name="vector" />, and whose <see cref="Vector2.X" /> component is <paramref name="x" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector2 WithX(this Vector2 vector, float x)
{
return vector with {X = x};
@ -155,7 +155,7 @@ public static class Vector2Extensions
/// <paramref name="vector" />, and whose <see cref="Vector2.Y" /> component is <paramref name="y" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector2 WithY(this Vector2 vector, float y)
{
return vector with {Y = y};

View File

@ -31,7 +31,7 @@ public static class Vector3Extensions
/// <param name="vector">The vector whose components to round.</param>
/// <returns>The rounded vector.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector3 Round(this Vector3 vector)
{
return vector.Round(1.0f);
@ -44,7 +44,7 @@ public static class Vector3Extensions
/// <param name="nearest">The nearest multiple to which the components should be rounded.</param>
/// <returns>The rounded vector.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector3 Round(this Vector3 vector, float nearest)
{
float x = vector.X.Round(nearest);
@ -63,7 +63,7 @@ public static class Vector3Extensions
/// the same as that of <paramref name="vector" />, and whose <see cref="Vector3.Y" /> component is <paramref name="x" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector3 WithX(this Vector3 vector, float x)
{
return vector with {X = x};
@ -79,7 +79,7 @@ public static class Vector3Extensions
/// the same as that of <paramref name="vector" />, and whose <see cref="Vector3.Y" /> component is <paramref name="y" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector3 WithY(this Vector3 vector, float y)
{
return vector with {Y = y};
@ -95,7 +95,7 @@ public static class Vector3Extensions
/// the same as that of <paramref name="vector" />, and whose <see cref="Vector3.Z" /> component is <paramref name="z" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector3 WithZ(this Vector3 vector, float z)
{
return vector with {Z = z};

View File

@ -33,7 +33,7 @@ public static class Vector4Extensions
/// <param name="vector">The vector whose components to round.</param>
/// <returns>The rounded vector.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector4 Round(this Vector4 vector)
{
return vector.Round(1.0f);
@ -46,7 +46,7 @@ public static class Vector4Extensions
/// <param name="nearest">The nearest multiple to which the components should be rounded.</param>
/// <returns>The rounded vector.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector4 Round(this Vector4 vector, float nearest)
{
float x = vector.X.Round(nearest);
@ -68,7 +68,7 @@ public static class Vector4Extensions
/// <see cref="Vector4.X" /> component is <paramref name="x" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector4 WithX(this Vector4 vector, float x)
{
return vector with {X = x};
@ -86,7 +86,7 @@ public static class Vector4Extensions
/// <see cref="Vector4.Y" /> component is <paramref name="y" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector4 WithY(this Vector4 vector, float y)
{
return vector with {Y = y};
@ -104,7 +104,7 @@ public static class Vector4Extensions
/// <see cref="Vector4.Z" /> component is <paramref name="z" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector4 WithZ(this Vector4 vector, float z)
{
return vector with {Z = z};
@ -122,7 +122,7 @@ public static class Vector4Extensions
/// <see cref="Vector4.W" /> component is <paramref name="w" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static Vector4 WithW(this Vector4 vector, float w)
{
return vector with {W = w};

View File

@ -22,7 +22,7 @@ public static class MemberInfoExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="member" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool HasCustomAttribute<T>(this MemberInfo member)
where T : Attribute
{
@ -45,7 +45,7 @@ public static class MemberInfoExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="member" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool HasCustomAttribute(this MemberInfo member, Type attribute)
{
if (member is null)

View File

@ -18,7 +18,7 @@ public static class TypeExtensions
/// <returns><see langword="true" /> if the current exists on the type; otherwise, <see langword="false" />.</returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool Implements<T>(this Type value)
{
if (value is null)
@ -41,7 +41,7 @@ public static class TypeExtensions
/// <para><paramref name="interfaceType" /> is <see langword="null" />.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool Implements(this Type value, Type interfaceType)
{
if (value is null)
@ -77,7 +77,7 @@ public static class TypeExtensions
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
/// <exception cref="ArgumentException"><paramref name="value" /> is not a class.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool Inherits<T>(this Type value)
where T : class
{
@ -109,7 +109,7 @@ public static class TypeExtensions
/// <para><paramref name="type" /> is not a class.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool Inherits(this Type value, Type type)
{
if (value is null)

View File

@ -15,7 +15,7 @@ public static class CharExtensions
/// <param name="value">The character to check.</param>
/// <returns><see langword="true" /> if this character is an emoji; otherwise, <see langword="false" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEmoji(this char value)
{
#if NET7_0_OR_GREATER
@ -36,7 +36,7 @@ public static class CharExtensions
/// A <see cref="string" /> composed of <paramref name="value" /> repeated <paramref name="count" /> times.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string Repeat(this char value, int count)
{
return count switch

View File

@ -18,7 +18,7 @@ public static class Extensions
/// <typeparam name="T">The type of the value to convert.</typeparam>
/// <returns>A JSON string representing the object.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string ToJson<T>(this T value, JsonSerializerOptions? options = null)
{
return JsonSerializer.Serialize(value, options);

View File

@ -19,7 +19,7 @@ public static class RuneExtensions
/// <param name="value">The rune to check.</param>
/// <returns><see langword="true" /> if this rune is an emoji; otherwise, <see langword="false" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEmoji(this Rune value)
{
return value.ToString().IsEmoji();
@ -34,7 +34,7 @@ public static class RuneExtensions
/// A <see cref="string" /> composed of <paramref name="value" /> repeated <paramref name="count" /> times.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string Repeat(this Rune value, int count)
{
switch (count)

View File

@ -24,7 +24,7 @@ public static class StringExtensions
/// <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[return: NotNullIfNotNull("value")]
public static string? AsNullIfEmpty(this string? value)
{
@ -41,7 +41,7 @@ public static class StringExtensions
/// whitespace; otherwise, <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[return: NotNullIfNotNull("value")]
public static string? AsNullIfWhiteSpace(this string? value)
{
@ -55,7 +55,7 @@ public static class StringExtensions
/// <returns>The plain text string representation of <paramref name="value" />.</returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string Base64Decode(this string value)
{
if (value is null)
@ -73,7 +73,7 @@ public static class StringExtensions
/// <returns>The string representation, in base 64, of <paramref name="value" />.</returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string Base64Encode(this string value)
{
if (value is null)
@ -102,7 +102,7 @@ public static class StringExtensions
/// <paramref name="destinationEncoding" /> is <see langword="null" />.
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string ChangeEncoding(this string value, Encoding sourceEncoding, Encoding destinationEncoding)
{
if (value is null)
@ -535,7 +535,7 @@ public static class StringExtensions
/// (http://geekswithblogs.net/sdorman/Default.aspx).
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static T EnumParse<T>(this string value)
where T : struct, Enum
{
@ -554,7 +554,7 @@ public static class StringExtensions
/// (http://geekswithblogs.net/sdorman/Default.aspx).
/// </remarks>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static T EnumParse<T>(this string value, bool ignoreCase)
where T : struct, Enum
{
@ -595,7 +595,7 @@ public static class StringExtensions
/// <param name="value">The string to convert.</param>
/// <returns>Returns a <see cref="byte" />[].</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte[] GetBytes(this string value)
{
return value.GetBytes(Encoding.UTF8);
@ -612,7 +612,7 @@ public static class StringExtensions
/// <see langword="null" />.
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte[] GetBytes(this string value, Encoding encoding)
{
if (value is null)
@ -634,7 +634,7 @@ public static class StringExtensions
/// <param name="value">The input string.</param>
/// <returns><see langword="true" /> if this string is an emoji; otherwise, <see langword="false" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEmoji(this string value)
{
if (value is null)
@ -654,7 +654,7 @@ public static class StringExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsEmpty(this string value)
{
if (value is null)
@ -674,7 +674,7 @@ public static class StringExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLower(this string value)
{
if (value is null)
@ -710,7 +710,7 @@ public static class StringExtensions
/// <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsNullOrEmpty([NotNullWhen(false)] this string? value)
{
return string.IsNullOrEmpty(value);
@ -726,7 +726,7 @@ public static class StringExtensions
/// whitespace; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsNullOrWhiteSpace([NotNullWhen(false)] this string? value)
{
return string.IsNullOrWhiteSpace(value);
@ -743,7 +743,7 @@ public static class StringExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsPalindrome(this string value)
{
if (value is null)
@ -791,7 +791,7 @@ public static class StringExtensions
/// <see langword="true" /> if all alpha characters in this string are uppercase; otherwise, <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsUpper(this string value)
{
if (value is null)
@ -828,7 +828,7 @@ public static class StringExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsWhiteSpace(this string value)
{
if (value is null)
@ -860,7 +860,7 @@ public static class StringExtensions
/// <returns>A string containing <paramref name="value" /> repeated <paramref name="count" /> times.</returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string Repeat(this string value, int count)
{
if (value is null)
@ -937,7 +937,7 @@ public static class StringExtensions
/// <exception cref="ArgumentNullException"><paramref name="source" /> is <see langword="null" />.</exception>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="length" /> is less than 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string Randomize(this string source, int length, Random? random = null)
{
if (source is null)
@ -975,7 +975,7 @@ public static class StringExtensions
/// <param name="value">The string to reverse.</param>
/// <returns>A <see cref="string" /> whose characters are that of <paramref name="value" /> in reverse order.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string Reverse(this string value)
{
if (value is null)
@ -1009,7 +1009,7 @@ public static class StringExtensions
/// <returns>A new <see cref="string" /> containing the characters in <paramref name="value" />, rearranged.</returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static string Shuffled(this string value, Random? random = null)
{
if (value is null)
@ -1035,7 +1035,7 @@ public static class StringExtensions
/// </returns>
/// <exception cref="ArgumentNullException"><paramref name="value" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static IEnumerable<string> Split(this string value, int chunkSize)
{
if (value is null)
@ -1135,7 +1135,7 @@ public static class StringExtensions
/// <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[return: NotNullIfNotNull("alternative")]
public static string? WithEmptyAlternative(this string? value, string? alternative)
{
@ -1153,7 +1153,7 @@ public static class StringExtensions
/// whitespace; otherwise, <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[return: NotNullIfNotNull("alternative")]
public static string? WithWhiteSpaceAlternative(this string? value, string? alternative)
{

View File

@ -18,7 +18,7 @@ public static class ByteExtensions
/// </returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="value" /> is 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this byte value)
{
if (value == 0)
@ -44,7 +44,7 @@ public static class ByteExtensions
/// <para><paramref name="value" /> is greater than 253,402,300,799,999.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeMilliseconds(this byte value)
{
return DateTimeOffset.FromUnixTimeMilliseconds(value);
@ -65,7 +65,7 @@ public static class ByteExtensions
/// <para><paramref name="value" /> is greater than 253,402,300,799.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeSeconds(this byte value)
{
return DateTimeOffset.FromUnixTimeSeconds(value);
@ -77,7 +77,7 @@ public static class ByteExtensions
/// <param name="value">The duration, in ticks.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.Ticks" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Ticks(this byte value)
{
return TimeSpan.FromTicks(value);
@ -91,7 +91,7 @@ public static class ByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this byte value)
{
return TimeSpan.FromMilliseconds(value);
@ -105,7 +105,7 @@ public static class ByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this byte value)
{
return TimeSpan.FromSeconds(value);
@ -119,7 +119,7 @@ public static class ByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this byte value)
{
return TimeSpan.FromMinutes(value);
@ -133,7 +133,7 @@ public static class ByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this byte value)
{
return TimeSpan.FromHours(value);
@ -145,7 +145,7 @@ public static class ByteExtensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this byte value)
{
return TimeSpan.FromDays(value);
@ -159,7 +159,7 @@ public static class ByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this byte value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -58,7 +58,7 @@ public static class CharSpanExtensions
/// </param>
/// <returns>A new instance of <see cref="TimeSpan" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan ToTimeSpan(this ReadOnlySpan<char> input)
{
return TimeSpanParser.TryParse(input, out TimeSpan result) ? result : default;

View File

@ -16,7 +16,7 @@ public static class DateOnlyExtensions
/// <param name="value">The date from which to calculate.</param>
/// <returns>The rounded-down integer number of years since <paramref name="value" /> as of today.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static int Age(this DateOnly value)
{
@ -33,7 +33,7 @@ public static class DateOnlyExtensions
/// <paramref name="referenceDate" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Age(this DateOnly value, DateOnly referenceDate)
{
return value.ToDateTime(default).Age(referenceDate.ToDateTime(default));
@ -60,7 +60,7 @@ public static class DateOnlyExtensions
/// <param name="dayOfWeek">The day of the week.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the first occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateOnly First(this DateOnly value, DayOfWeek dayOfWeek)
{
DateOnly first = value.FirstDayOfMonth();
@ -79,7 +79,7 @@ public static class DateOnlyExtensions
/// <param name="value">The current date.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the first day of the current month.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateOnly FirstDayOfMonth(this DateOnly value)
{
return value.AddDays(1 - value.Day);
@ -113,7 +113,7 @@ public static class DateOnlyExtensions
/// <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this DateOnly value)
{
return DateTime.IsLeapYear(value.Year);
@ -126,7 +126,7 @@ public static class DateOnlyExtensions
/// <param name="dayOfWeek">The day of the week.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the final occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateOnly Last(this DateOnly value, DayOfWeek dayOfWeek)
{
DateOnly last = value.LastDayOfMonth();
@ -144,7 +144,7 @@ public static class DateOnlyExtensions
/// <param name="value">The current date.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the last day of the current month.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateOnly LastDayOfMonth(this DateOnly value)
{
int daysInMonth = DateTime.DaysInMonth(value.Year, value.Month);
@ -158,7 +158,7 @@ public static class DateOnlyExtensions
/// <param name="dayOfWeek">The day of the week.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the next occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateOnly Next(this DateOnly value, DayOfWeek dayOfWeek)
{
int offsetDays = dayOfWeek - value.DayOfWeek;
@ -178,7 +178,7 @@ public static class DateOnlyExtensions
/// <param name="time">A reference time to use with the current date.</param>
/// <returns>The number of milliseconds that have elapsed since 1970-01-01T00:00:00.000Z.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long ToUnixTimeMilliseconds(this DateOnly value, TimeOnly time)
{
return value.ToDateTime(time).ToUnixTimeMilliseconds();
@ -191,7 +191,7 @@ public static class DateOnlyExtensions
/// <param name="time">A reference time to use with the current date.</param>
/// <returns>The number of seconds that have elapsed since 1970-01-01T00:00:00.000Z.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long ToUnixTimeSeconds(this DateOnly value, TimeOnly time)
{
return value.ToDateTime(time).ToUnixTimeSeconds();

View File

@ -13,7 +13,7 @@ public static class DateTimeExtensions
{
/// <inheritdoc cref="DateTimeOffsetExtensions.Age(DateTimeOffset)" />
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static int Age(this DateTime value)
{
@ -22,7 +22,7 @@ public static class DateTimeExtensions
/// <inheritdoc cref="DateTimeOffsetExtensions.Age(DateTimeOffset, DateTimeOffset)" />
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Age(this DateTime value, DateTime referenceDate)
{
return ((DateTimeOffset)value).Age(referenceDate);
@ -31,7 +31,7 @@ public static class DateTimeExtensions
/// <inheritdoc cref="DateTimeOffsetExtensions.First(DateTimeOffset, DayOfWeek)" />
/// <returns>A <see cref="DateTime" /> representing the first occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTime First(this DateTime value, DayOfWeek dayOfWeek)
{
return ((DateTimeOffset)value).First(dayOfWeek).DateTime;
@ -40,7 +40,7 @@ public static class DateTimeExtensions
/// <inheritdoc cref="DateTimeOffsetExtensions.FirstDayOfMonth(DateTimeOffset)" />
/// <returns>A <see cref="DateTime" /> representing the first day of the current month.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTime FirstDayOfMonth(this DateTime value)
{
return ((DateTimeOffset)value).FirstDayOfMonth().DateTime;
@ -81,7 +81,7 @@ public static class DateTimeExtensions
/// <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this DateTime value)
{
return DateTime.IsLeapYear(value.Year);
@ -90,7 +90,7 @@ public static class DateTimeExtensions
/// <inheritdoc cref="DateTimeOffsetExtensions.Last(DateTimeOffset, DayOfWeek)" />
/// <returns>A <see cref="DateTimeOffset" /> representing the final occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTime Last(this DateTime value, DayOfWeek dayOfWeek)
{
return ((DateTimeOffset)value).Last(dayOfWeek).DateTime;
@ -99,7 +99,7 @@ public static class DateTimeExtensions
/// <inheritdoc cref="DateTimeOffsetExtensions.LastDayOfMonth(DateTimeOffset)" />
/// <returns>A <see cref="DateTimeOffset" /> representing the last day of the current month.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTime LastDayOfMonth(this DateTime value)
{
return ((DateTimeOffset)value).LastDayOfMonth().DateTime;
@ -108,7 +108,7 @@ public static class DateTimeExtensions
/// <inheritdoc cref="DateTimeOffsetExtensions.Next(DateTimeOffset, DayOfWeek)" />
/// <returns>A <see cref="DateTimeOffset" /> representing the next occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTime Next(this DateTime value, DayOfWeek dayOfWeek)
{
return ((DateTimeOffset)value).Next(dayOfWeek).DateTime;
@ -120,7 +120,7 @@ public static class DateTimeExtensions
/// <param name="value">The current date.</param>
/// <returns>The number of milliseconds that have elapsed since 1970-01-01T00:00:00.000Z.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long ToUnixTimeMilliseconds(this DateTime value)
{
return ((DateTimeOffset)value).ToUnixTimeMilliseconds();
@ -132,7 +132,7 @@ public static class DateTimeExtensions
/// <param name="value">The current date.</param>
/// <returns>The number of seconds that have elapsed since 1970-01-01T00:00:00.000Z.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long ToUnixTimeSeconds(this DateTime value)
{
return ((DateTimeOffset)value).ToUnixTimeSeconds();

View File

@ -16,7 +16,7 @@ public static class DateTimeOffsetExtensions
/// <param name="value">The date from which to calculate.</param>
/// <returns>The rounded-down integer number of years since <paramref name="value" /> as of today.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static int Age(this DateTimeOffset value)
{
@ -33,7 +33,7 @@ public static class DateTimeOffsetExtensions
/// <paramref name="referenceDate" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int Age(this DateTimeOffset value, DateTimeOffset referenceDate)
{
return (int)(((referenceDate.Date - TimeSpan.FromDays(1) - value.Date).TotalDays + 1) / 365.2425);
@ -46,7 +46,7 @@ public static class DateTimeOffsetExtensions
/// <param name="dayOfWeek">The day of the week.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the first occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset First(this DateTimeOffset value, DayOfWeek dayOfWeek)
{
var first = value.FirstDayOfMonth();
@ -65,7 +65,7 @@ public static class DateTimeOffsetExtensions
/// <param name="value">The current date.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the first day of the current month.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FirstDayOfMonth(this DateTimeOffset value)
{
return value.AddDays(1 - value.Day);
@ -99,7 +99,7 @@ public static class DateTimeOffsetExtensions
/// <see langword="false" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this DateTimeOffset value)
{
return DateTime.IsLeapYear(value.Year);
@ -112,7 +112,7 @@ public static class DateTimeOffsetExtensions
/// <param name="dayOfWeek">The day of the week.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the final occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset Last(this DateTimeOffset value, DayOfWeek dayOfWeek)
{
var last = value.LastDayOfMonth();
@ -130,7 +130,7 @@ public static class DateTimeOffsetExtensions
/// <param name="value">The current date.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the last day of the current month.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset LastDayOfMonth(this DateTimeOffset value)
{
int daysInMonth = DateTime.DaysInMonth(value.Year, value.Month);
@ -144,7 +144,7 @@ public static class DateTimeOffsetExtensions
/// <param name="dayOfWeek">The day of the week.</param>
/// <returns>A <see cref="DateTimeOffset" /> representing the next occurence of <paramref name="dayOfWeek" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset Next(this DateTimeOffset value, DayOfWeek dayOfWeek)
{
int offsetDays = dayOfWeek - value.DayOfWeek;

View File

@ -17,7 +17,7 @@ public static class DecimalExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this decimal value)
{
return TimeSpan.FromMilliseconds((double)value);
@ -31,7 +31,7 @@ public static class DecimalExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this decimal value)
{
return TimeSpan.FromSeconds((double)value);
@ -45,7 +45,7 @@ public static class DecimalExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this decimal value)
{
return TimeSpan.FromMinutes((double)value);
@ -59,7 +59,7 @@ public static class DecimalExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this decimal value)
{
return TimeSpan.FromHours((double)value);
@ -71,7 +71,7 @@ public static class DecimalExtensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this decimal value)
{
return TimeSpan.FromDays((double)value);
@ -85,7 +85,7 @@ public static class DecimalExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this decimal value)
{
return TimeSpan.FromDays((double)value * 7);

View File

@ -17,7 +17,7 @@ public static class DoubleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this double value)
{
return TimeSpan.FromMilliseconds(value);
@ -31,7 +31,7 @@ public static class DoubleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this double value)
{
return TimeSpan.FromSeconds(value);
@ -45,7 +45,7 @@ public static class DoubleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this double value)
{
return TimeSpan.FromMinutes(value);
@ -59,7 +59,7 @@ public static class DoubleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this double value)
{
return TimeSpan.FromHours(value);
@ -71,7 +71,7 @@ public static class DoubleExtensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this double value)
{
return TimeSpan.FromDays(value);
@ -85,7 +85,7 @@ public static class DoubleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this double value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -17,7 +17,7 @@ public static class HalfExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this Half value)
{
return TimeSpan.FromMilliseconds((float)value);
@ -31,7 +31,7 @@ public static class HalfExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this Half value)
{
return TimeSpan.FromSeconds((float)value);
@ -45,7 +45,7 @@ public static class HalfExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this Half value)
{
return TimeSpan.FromMinutes((float)value);
@ -59,7 +59,7 @@ public static class HalfExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this Half value)
{
return TimeSpan.FromHours((float)value);
@ -71,7 +71,7 @@ public static class HalfExtensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this Half value)
{
return TimeSpan.FromDays((float)value);
@ -85,7 +85,7 @@ public static class HalfExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this Half value)
{
return TimeSpan.FromDays((float)value * 7);

View File

@ -19,7 +19,7 @@ public static class Int16Extensions
/// </returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="value" /> is 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this short value)
{
if (value == 0)
@ -50,7 +50,7 @@ public static class Int16Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799,999.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeMilliseconds(this short value)
{
return DateTimeOffset.FromUnixTimeMilliseconds(value);
@ -71,7 +71,7 @@ public static class Int16Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeSeconds(this short value)
{
return DateTimeOffset.FromUnixTimeSeconds(value);
@ -83,7 +83,7 @@ public static class Int16Extensions
/// <param name="value">The duration, in ticks.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.Ticks" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Ticks(this short value)
{
return TimeSpan.FromTicks(value);
@ -97,7 +97,7 @@ public static class Int16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this short value)
{
return TimeSpan.FromMilliseconds(value);
@ -111,7 +111,7 @@ public static class Int16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this short value)
{
return TimeSpan.FromSeconds(value);
@ -125,7 +125,7 @@ public static class Int16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this short value)
{
return TimeSpan.FromMinutes(value);
@ -139,7 +139,7 @@ public static class Int16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this short value)
{
return TimeSpan.FromHours(value);
@ -151,7 +151,7 @@ public static class Int16Extensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this short value)
{
return TimeSpan.FromDays(value);
@ -165,7 +165,7 @@ public static class Int16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this short value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -19,7 +19,7 @@ public static class Int32Extensions
/// </returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="value" /> is 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this int value)
{
if (value == 0)
@ -50,7 +50,7 @@ public static class Int32Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799,999.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeMilliseconds(this int value)
{
return DateTimeOffset.FromUnixTimeMilliseconds(value);
@ -71,7 +71,7 @@ public static class Int32Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeSeconds(this int value)
{
return DateTimeOffset.FromUnixTimeSeconds(value);
@ -83,7 +83,7 @@ public static class Int32Extensions
/// <param name="value">The duration, in ticks.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.Ticks" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Ticks(this int value)
{
return TimeSpan.FromTicks(value);
@ -97,7 +97,7 @@ public static class Int32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this int value)
{
return TimeSpan.FromMilliseconds(value);
@ -111,7 +111,7 @@ public static class Int32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this int value)
{
return TimeSpan.FromSeconds(value);
@ -125,7 +125,7 @@ public static class Int32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this int value)
{
return TimeSpan.FromMinutes(value);
@ -139,7 +139,7 @@ public static class Int32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this int value)
{
return TimeSpan.FromHours(value);
@ -151,7 +151,7 @@ public static class Int32Extensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this int value)
{
return TimeSpan.FromDays(value);
@ -165,7 +165,7 @@ public static class Int32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this int value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -19,7 +19,7 @@ public static class Int64Extensions
/// </returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="value" /> is 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this long value)
{
if (value == 0)
@ -50,7 +50,7 @@ public static class Int64Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799,999.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeMilliseconds(this long value)
{
return DateTimeOffset.FromUnixTimeMilliseconds(value);
@ -71,7 +71,7 @@ public static class Int64Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeSeconds(this long value)
{
return DateTimeOffset.FromUnixTimeSeconds(value);
@ -83,7 +83,7 @@ public static class Int64Extensions
/// <param name="value">The duration, in ticks.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.Ticks" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Ticks(this long value)
{
return TimeSpan.FromTicks(value);
@ -97,7 +97,7 @@ public static class Int64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this long value)
{
return TimeSpan.FromMilliseconds(value);
@ -111,7 +111,7 @@ public static class Int64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this long value)
{
return TimeSpan.FromSeconds(value);
@ -125,7 +125,7 @@ public static class Int64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this long value)
{
return TimeSpan.FromMinutes(value);
@ -139,7 +139,7 @@ public static class Int64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this long value)
{
return TimeSpan.FromHours(value);
@ -151,7 +151,7 @@ public static class Int64Extensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this long value)
{
return TimeSpan.FromDays(value);
@ -165,7 +165,7 @@ public static class Int64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this long value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -20,7 +20,7 @@ public static class SByteExtensions
/// </returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="value" /> is 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this sbyte value)
{
if (value == 0)
@ -51,7 +51,7 @@ public static class SByteExtensions
/// <para><paramref name="value" /> is greater than 253,402,300,799,999.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeMilliseconds(this sbyte value)
{
return DateTimeOffset.FromUnixTimeMilliseconds(value);
@ -72,7 +72,7 @@ public static class SByteExtensions
/// <para><paramref name="value" /> is greater than 253,402,300,799.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeSeconds(this sbyte value)
{
return DateTimeOffset.FromUnixTimeSeconds(value);
@ -84,7 +84,7 @@ public static class SByteExtensions
/// <param name="value">The duration, in ticks.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.Ticks" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Ticks(this sbyte value)
{
return TimeSpan.FromTicks(value);
@ -98,7 +98,7 @@ public static class SByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this sbyte value)
{
return TimeSpan.FromMilliseconds(value);
@ -112,7 +112,7 @@ public static class SByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this sbyte value)
{
return TimeSpan.FromSeconds(value);
@ -126,7 +126,7 @@ public static class SByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this sbyte value)
{
return TimeSpan.FromMinutes(value);
@ -140,7 +140,7 @@ public static class SByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this sbyte value)
{
return TimeSpan.FromHours(value);
@ -152,7 +152,7 @@ public static class SByteExtensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this sbyte value)
{
return TimeSpan.FromDays(value);
@ -166,7 +166,7 @@ public static class SByteExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this sbyte value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -17,7 +17,7 @@ public static class SingleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this float value)
{
return TimeSpan.FromMilliseconds(value);
@ -31,7 +31,7 @@ public static class SingleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this float value)
{
return TimeSpan.FromSeconds(value);
@ -45,7 +45,7 @@ public static class SingleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this float value)
{
return TimeSpan.FromMinutes(value);
@ -59,7 +59,7 @@ public static class SingleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this float value)
{
return TimeSpan.FromHours(value);
@ -71,7 +71,7 @@ public static class SingleExtensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this float value)
{
return TimeSpan.FromDays(value);
@ -85,7 +85,7 @@ public static class SingleExtensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this float value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -58,7 +58,7 @@ public static class StringExtensions
/// <returns>A new instance of <see cref="TimeSpan" />.</returns>
/// <exception cref="ArgumentNullException"><paramref name="input" /> is <see langword="null" />.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan ToTimeSpan(this string input)
{
if (input is null)

View File

@ -17,7 +17,7 @@ public static class TimeSpanExtensions
/// A <see cref="DateTime" /> that is a duration of <paramref name="value" /> in the past relative to the current time.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTime Ago(this TimeSpan value)
{
return DateTime.Now.Subtract(value);
@ -31,7 +31,7 @@ public static class TimeSpanExtensions
/// A <see cref="DateTime" /> that is a duration of <paramref name="value" /> in the future relative to the current time.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTime FromNow(this TimeSpan value)
{
return DateTime.Now.Add(value);

View File

@ -25,7 +25,7 @@ public static class UInt16Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799,999.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeMilliseconds(this ushort value)
{
return DateTimeOffset.FromUnixTimeMilliseconds(value);
@ -46,7 +46,7 @@ public static class UInt16Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeSeconds(this ushort value)
{
return DateTimeOffset.FromUnixTimeSeconds(value);
@ -61,7 +61,7 @@ public static class UInt16Extensions
/// </returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="value" /> is 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this ushort value)
{
if (value == 0)
@ -78,7 +78,7 @@ public static class UInt16Extensions
/// <param name="value">The duration, in ticks.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.Ticks" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Ticks(this ushort value)
{
return TimeSpan.FromTicks(value);
@ -92,7 +92,7 @@ public static class UInt16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this ushort value)
{
return TimeSpan.FromMilliseconds(value);
@ -106,7 +106,7 @@ public static class UInt16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this ushort value)
{
return TimeSpan.FromSeconds(value);
@ -120,7 +120,7 @@ public static class UInt16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this ushort value)
{
return TimeSpan.FromMinutes(value);
@ -134,7 +134,7 @@ public static class UInt16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this ushort value)
{
return TimeSpan.FromHours(value);
@ -146,7 +146,7 @@ public static class UInt16Extensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this ushort value)
{
return TimeSpan.FromDays(value);
@ -160,7 +160,7 @@ public static class UInt16Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this ushort value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -25,7 +25,7 @@ public static class UInt32Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799,999.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeMilliseconds(this uint value)
{
return DateTimeOffset.FromUnixTimeMilliseconds(value);
@ -46,7 +46,7 @@ public static class UInt32Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeSeconds(this uint value)
{
return DateTimeOffset.FromUnixTimeSeconds(value);
@ -61,7 +61,7 @@ public static class UInt32Extensions
/// </returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="value" /> is 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this uint value)
{
if (value == 0)
@ -78,7 +78,7 @@ public static class UInt32Extensions
/// <param name="value">The duration, in ticks.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.Ticks" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Ticks(this uint value)
{
return TimeSpan.FromTicks(value);
@ -92,7 +92,7 @@ public static class UInt32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this uint value)
{
return TimeSpan.FromMilliseconds(value);
@ -106,7 +106,7 @@ public static class UInt32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this uint value)
{
return TimeSpan.FromSeconds(value);
@ -120,7 +120,7 @@ public static class UInt32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this uint value)
{
return TimeSpan.FromMinutes(value);
@ -134,7 +134,7 @@ public static class UInt32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this uint value)
{
return TimeSpan.FromHours(value);
@ -146,7 +146,7 @@ public static class UInt32Extensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this uint value)
{
return TimeSpan.FromDays(value);
@ -160,7 +160,7 @@ public static class UInt32Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this uint value)
{
return TimeSpan.FromDays(value * 7);

View File

@ -25,7 +25,7 @@ public static class UInt64Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799,999.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeMilliseconds(this ulong value)
{
return DateTimeOffset.FromUnixTimeMilliseconds((long)value);
@ -46,7 +46,7 @@ public static class UInt64Extensions
/// <para><paramref name="value" /> is greater than 253,402,300,799.</para>
/// </exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static DateTimeOffset FromUnixTimeSeconds(this ulong value)
{
return DateTimeOffset.FromUnixTimeSeconds((long)value);
@ -61,7 +61,7 @@ public static class UInt64Extensions
/// </returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="value" /> is 0.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool IsLeapYear(this ulong value)
{
if (value == 0)
@ -78,7 +78,7 @@ public static class UInt64Extensions
/// <param name="value">The duration, in ticks.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.Ticks" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Ticks(this ulong value)
{
return TimeSpan.FromTicks((long)value);
@ -92,7 +92,7 @@ public static class UInt64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMilliseconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Milliseconds(this ulong value)
{
return TimeSpan.FromMilliseconds((long)value);
@ -106,7 +106,7 @@ public static class UInt64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalSeconds" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Seconds(this ulong value)
{
return TimeSpan.FromSeconds((long)value);
@ -120,7 +120,7 @@ public static class UInt64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalMinutes" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Minutes(this ulong value)
{
return TimeSpan.FromMinutes((long)value);
@ -134,7 +134,7 @@ public static class UInt64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalHours" /> will equal <paramref name="value" />.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Hours(this ulong value)
{
return TimeSpan.FromHours((long)value);
@ -146,7 +146,7 @@ public static class UInt64Extensions
/// <param name="value">The duration, in days.</param>
/// <returns>A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" />.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Days(this ulong value)
{
return TimeSpan.FromDays((long)value);
@ -160,7 +160,7 @@ public static class UInt64Extensions
/// A <see cref="TimeSpan" /> whose <see cref="TimeSpan.TotalDays" /> will equal <paramref name="value" /> × 7.
/// </returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static TimeSpan Weeks(this ulong value)
{
return TimeSpan.FromDays((long)value * 7);