Obsolete AdvSimd intrinsic implementations, minor improvements in certain areas

This commit is contained in:
NN Huy Hoang 2023-11-22 22:29:46 +07:00
parent 5ff7b68b37
commit fa0ece667e
69 changed files with 604 additions and 621 deletions

View File

@ -226,21 +226,21 @@ public 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 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));
// }
#endif
[Test]
@ -345,25 +345,25 @@ public 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 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));
// }
#endif
[Test]

View File

@ -23,7 +23,7 @@ public static class ByteExtensions
/// <param name="value">The value to unpack.</param>
/// <returns>An array of <see cref="bool" /> with length 8.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool[] Unpack(this byte value)
{
var buffer = new bool[Size];
@ -38,7 +38,7 @@ public static class ByteExtensions
/// <param name="destination">When this method returns, contains the unpacked booleans from <paramref name="value" />.</param>
/// <exception cref="ArgumentException"><paramref name="destination" /> is not large enough to contain the result.</exception>
[ExcludeFromCodeCoverage]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static void Unpack(this byte value, Span<bool> destination)
{
if (destination.Length < Size)
@ -57,7 +57,7 @@ public static class ByteExtensions
UnpackInternal_Fallback(value, destination);
}
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static void UnpackInternal_Fallback(this byte value, Span<bool> destination)
{
for (var index = 0; index < Size; index++)
@ -67,7 +67,7 @@ public static class ByteExtensions
}
#if NETCOREAPP3_0_OR_GREATER
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal unsafe static void UnpackInternal_Ssse3(this byte value, Span<bool> destination)
{
fixed (bool* pDestination = destination)

View File

@ -23,7 +23,7 @@ public static class Int16Extensions
/// <param name="value">The value to unpack.</param>
/// <returns>An array of <see cref="bool" /> with length 16.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool[] Unpack(this short value)
{
var ret = new bool[Size];
@ -38,7 +38,7 @@ public static class Int16Extensions
/// <param name="destination">When this method returns, contains the unpacked booleans from <paramref name="value" />.</param>
/// <exception cref="ArgumentException"><paramref name="destination" /> is not large enough to contain the result.</exception>
[ExcludeFromCodeCoverage]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static void Unpack(this short value, Span<bool> destination)
{
if (destination.Length < Size)
@ -57,7 +57,7 @@ public static class Int16Extensions
UnpackInternal_Fallback(value, destination);
}
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static void UnpackInternal_Fallback(this short value, Span<bool> destination)
{
for (var index = 0; index < Size; index++)
@ -67,7 +67,7 @@ public static class Int16Extensions
}
#if NETCOREAPP3_0_OR_GREATER
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal unsafe static void UnpackInternal_Ssse3(this short value, Span<bool> destination)
{
fixed (bool* pDestination = destination)

View File

@ -23,7 +23,7 @@ public static class Int32Extensions
/// <param name="value">The value to unpack.</param>
/// <returns>An array of <see cref="bool" /> with length 32.</returns>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool[] Unpack(this int value)
{
var ret = new bool[Size];
@ -38,7 +38,7 @@ public static class Int32Extensions
/// <param name="destination">When this method returns, contains the unpacked booleans from <paramref name="value" />.</param>
/// <exception cref="ArgumentException"><paramref name="destination" /> is not large enough to contain the result.</exception>
[ExcludeFromCodeCoverage]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static void Unpack(this int value, Span<bool> destination)
{
if (destination.Length < Size)
@ -63,7 +63,7 @@ public static class Int32Extensions
UnpackInternal_Fallback(value, destination);
}
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static void UnpackInternal_Fallback(this int value, Span<bool> destination)
{
for (var index = 0; index < Size; index++)
@ -73,7 +73,7 @@ public static class Int32Extensions
}
#if NETCOREAPP3_0_OR_GREATER
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static unsafe void UnpackInternal_Ssse3(this int value, Span<bool> destination)
{
fixed (bool* pDestination = destination)

View File

@ -269,20 +269,9 @@ public static class ListExtensions
}
#endif
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

@ -5,9 +5,9 @@ namespace X10D.CompilerServices;
internal static class CompilerResources
{
#if NETCOREAPP3_0_OR_GREATER
public const MethodImplOptions MethodImplOptions = System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining |
public const MethodImplOptions MaxOptimization = System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining |
System.Runtime.CompilerServices.MethodImplOptions.AggressiveOptimization;
#else
public const MethodImplOptions MethodImplOptions = System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining;
public const MethodImplOptions MaxOptimization = System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining;
#endif
}

View File

@ -30,7 +30,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>();
@ -65,7 +65,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)
{
@ -88,7 +88,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)
{
@ -112,7 +112,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)
{
@ -120,7 +120,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>();
@ -135,7 +135,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);
@ -145,7 +145,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>();
@ -160,7 +160,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);
@ -170,7 +170,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>();
@ -182,7 +182,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

@ -33,7 +33,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)
{
@ -64,7 +64,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)
{
@ -92,7 +92,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();
@ -116,7 +116,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();
@ -142,7 +142,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)
{
@ -173,7 +173,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)
{
@ -181,7 +181,7 @@ public static class IntrinsicUtility
}
// Helper methods
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector64<T> GetUninitializedVector64<T>() where T : struct
{
#if NET6_0_OR_GREATER
@ -192,7 +192,7 @@ public static class IntrinsicUtility
#endif
}
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector128<T> GetUninitializedVector128<T>() where T : struct
{
#if NET6_0_OR_GREATER
@ -203,7 +203,7 @@ public static class IntrinsicUtility
#endif
}
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static Vector256<T> GetUninitializedVector256<T>() where T : struct
{
#if NET6_0_OR_GREATER
@ -215,7 +215,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();
@ -230,7 +230,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>();
@ -249,7 +249,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);
@ -266,7 +266,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
@ -283,7 +283,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>();
@ -299,7 +299,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

@ -7,7 +7,6 @@ using X10D.CompilerServices;
#if NETCOREAPP3_0_OR_GREATER
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;
using System.Runtime.Intrinsics.Arm;
#endif
#if NET7_0_OR_GREATER
@ -49,7 +48,7 @@ public static class SpanExtensions
/// </returns>
/// <exception cref="ArgumentException">The size of <typeparamref name="T" /> is unsupported.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool Contains<T>(this Span<T> span, T value) where T : struct, Enum
{
return Contains((ReadOnlySpan<T>)span, value);
@ -68,15 +67,11 @@ public static class SpanExtensions
/// </returns>
/// <exception cref="ArgumentException">The size of <typeparamref name="T" /> is unsupported.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static bool Contains<T>(this ReadOnlySpan<T> span, T value) where T : struct, Enum
{
#if NET6_0_OR_GREATER
unsafe
{
#pragma warning disable CS8500
switch (sizeof(T))
#pragma warning restore CS8500
switch (Unsafe.SizeOf<T>())
{
case 1:
{
@ -106,14 +101,13 @@ public static class SpanExtensions
//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
}
}
#else
foreach (var it in span)
{
@ -134,7 +128,7 @@ public static class SpanExtensions
/// <returns>An 8-bit unsigned integer containing the packed booleans.</returns>
/// <exception cref="ArgumentException"><paramref name="source" /> contains more than 8 elements.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static byte PackByte(this Span<bool> source)
{
return PackByte((ReadOnlySpan<bool>)source);
@ -147,7 +141,7 @@ public static class SpanExtensions
/// <returns>An 8-bit unsigned integer containing the packed booleans.</returns>
/// <exception cref="ArgumentException"><paramref name="source" /> contains more than 8 elements.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static byte PackByte(this ReadOnlySpan<bool> source)
{
@ -172,10 +166,10 @@ public static class SpanExtensions
return PackByteInternal_Sse2(source);
}
if (AdvSimd.IsSupported)
{
return PackByteInternal_AdvSimd(source);
}
// if (AdvSimd.IsSupported)
// {
// return PackByteInternal_AdvSimd(source);
// }
#endif
return PackByteInternal_Fallback(source);
@ -201,7 +195,7 @@ public static class SpanExtensions
/// <returns>A 16-bit signed integer containing the packed booleans.</returns>
/// <exception cref="ArgumentException"><paramref name="source" /> contains more than 16 elements.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static short PackInt16(this ReadOnlySpan<bool> source)
{
@ -240,7 +234,7 @@ public static class SpanExtensions
/// <returns>A 32-bit signed integer containing the packed booleans.</returns>
/// <exception cref="ArgumentException"><paramref name="source" /> contains more than 32 elements.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static int PackInt32(this Span<bool> source)
{
return PackInt32((ReadOnlySpan<bool>)source);
@ -253,7 +247,7 @@ public static class SpanExtensions
/// <returns>A 32-bit signed integer containing the packed booleans.</returns>
/// <exception cref="ArgumentException"><paramref name="source" /> contains more than 32 elements.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
[ExcludeFromCodeCoverage]
public static int PackInt32(this ReadOnlySpan<bool> source)
{
@ -285,10 +279,10 @@ public static class SpanExtensions
return PackInt32Internal_Sse2(source);
}
if (AdvSimd.IsSupported)
{
return PackInt32Internal_AdvSimd(source);
}
// if (AdvSimd.IsSupported)
// {
// return PackInt32Internal_AdvSimd(source);
// }
#endif
goto default;
@ -304,7 +298,7 @@ public static class SpanExtensions
/// <returns>A 64-bit signed integer containing the packed booleans.</returns>
/// <exception cref="ArgumentException"><paramref name="source" /> contains more than 64 elements.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long PackInt64(this Span<bool> source)
{
return PackInt64((ReadOnlySpan<bool>)source);
@ -317,7 +311,7 @@ public static class SpanExtensions
/// <returns>A 64-bit signed integer containing the packed booleans.</returns>
/// <exception cref="ArgumentException"><paramref name="source" /> contains more than 64 elements.</exception>
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
public static long PackInt64(this ReadOnlySpan<bool> source)
{
switch (source.Length)
@ -342,7 +336,7 @@ public static class SpanExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static byte PackByteInternal_Fallback(this ReadOnlySpan<bool> source)
{
byte result = 0;
@ -356,7 +350,7 @@ public static class SpanExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static short PackInt16Internal_Fallback(this ReadOnlySpan<bool> source)
{
short result = 0;
@ -370,7 +364,7 @@ public static class SpanExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static int PackInt32Internal_Fallback(this ReadOnlySpan<bool> source)
{
var result = 0;
@ -385,7 +379,7 @@ public static class SpanExtensions
#if NETCOREAPP3_0_OR_GREATER
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static byte PackByteInternal_Sse2(this ReadOnlySpan<bool> source)
{
unsafe
@ -399,7 +393,7 @@ public static class SpanExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static short PackInt16Internal_Sse2(this ReadOnlySpan<bool> source)
{
unsafe
@ -418,35 +412,35 @@ 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));
}
}
}
// [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)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static int PackInt32Internal_Avx2(this ReadOnlySpan<bool> source)
{
unsafe
@ -471,7 +465,7 @@ public static class SpanExtensions
}
[Pure]
[MethodImpl(CompilerResources.MethodImplOptions)]
[MethodImpl(CompilerResources.MaxOptimization)]
internal static int PackInt32Internal_Sse2(this ReadOnlySpan<bool> source)
{
unsafe
@ -499,24 +493,24 @@ public static class SpanExtensions
}
}
#if NET5_0_OR_GREATER
// 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
#endif
// #if NET5_0_OR_GREATER
// // 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
// #endif
#endif
}

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;
@ -110,7 +110,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);
@ -128,7 +128,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);
@ -146,7 +146,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);
@ -164,7 +164,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);
@ -182,7 +182,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>
@ -110,7 +110,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>
{
@ -156,7 +156,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>
{
@ -195,7 +195,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>
{
@ -234,7 +234,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>
{
@ -273,7 +273,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>
{
@ -311,7 +311,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>
{
@ -349,7 +349,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);
@ -318,7 +318,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;
@ -337,7 +337,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 NET6_0_OR_GREATER
@ -56,7 +56,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 NET6_0_OR_GREATER

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 NET6_0_OR_GREATER
@ -44,7 +44,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 NET6_0_OR_GREATER

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)
{
#if NETCOREAPP3_1_OR_GREATER
@ -49,7 +49,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));
@ -64,7 +64,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));
@ -79,7 +79,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)
{
#if NET6_0_OR_GREATER

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)
{
#if NETCOREAPP3_1_OR_GREATER
@ -49,7 +49,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));
@ -64,7 +64,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));
@ -79,7 +79,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)
{
#if NET6_0_OR_GREATER

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
{
@ -48,7 +48,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 NET6_0_OR_GREATER

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 NET6_0_OR_GREATER
@ -45,7 +45,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 NET6_0_OR_GREATER
@ -86,7 +86,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
{
@ -122,7 +122,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 NET6_0_OR_GREATER

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)
{
return value.ToString().IsEmoji();
@ -30,7 +30,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

@ -19,7 +19,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

@ -20,7 +20,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();
@ -35,7 +35,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

@ -26,7 +26,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)
{
@ -43,7 +43,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)
{
@ -57,7 +57,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 NET6_0_OR_GREATER
@ -79,7 +79,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 NET6_0_OR_GREATER
@ -112,7 +112,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 NET6_0_OR_GREATER
@ -351,7 +351,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
{
@ -370,7 +370,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
{
@ -417,7 +417,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);
@ -434,7 +434,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 NET6_0_OR_GREATER
@ -461,7 +461,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 NET6_0_OR_GREATER
@ -485,7 +485,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 NET6_0_OR_GREATER
@ -509,7 +509,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 NET6_0_OR_GREATER
@ -563,7 +563,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);
@ -579,7 +579,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);
@ -596,7 +596,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 NET6_0_OR_GREATER
@ -670,7 +670,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 NET6_0_OR_GREATER
@ -725,7 +725,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 NET6_0_OR_GREATER
@ -762,7 +762,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 string Repeat(this string value, int count)
{
#if NET6_0_OR_GREATER
@ -807,7 +807,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 NET6_0_OR_GREATER
@ -849,7 +849,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 NET6_0_OR_GREATER
@ -887,7 +887,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 NET6_0_OR_GREATER
@ -917,7 +917,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 NET6_0_OR_GREATER
@ -1029,7 +1029,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)
{
@ -1047,7 +1047,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

@ -17,7 +17,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)
{
@ -34,7 +34,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));
@ -61,7 +61,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();
@ -80,7 +80,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);
@ -114,7 +114,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);
@ -127,7 +127,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();
@ -145,7 +145,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);
@ -159,7 +159,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;
@ -179,7 +179,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();
@ -192,7 +192,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

@ -18,7 +18,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);
@ -32,7 +32,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);
@ -46,7 +46,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);
@ -60,7 +60,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);
@ -72,7 +72,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);
@ -86,7 +86,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 NET6_0_OR_GREATER

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);