112 lines
1.9 KiB
C#
112 lines
1.9 KiB
C#
using System.Runtime.CompilerServices;
|
|
|
|
namespace PerfectNumbers.Core.Cpu;
|
|
|
|
public static class ByteExtensions
|
|
{
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static byte AddMod3(this byte value, byte delta)
|
|
{
|
|
const int Modulus = 3;
|
|
int sum = value + delta;
|
|
|
|
if (sum >= Modulus)
|
|
{
|
|
sum -= Modulus;
|
|
}
|
|
|
|
return (byte)sum;
|
|
}
|
|
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static byte AddMod7(this byte value, byte delta)
|
|
{
|
|
const int Modulus = 7;
|
|
int sum = value + delta;
|
|
|
|
if (sum >= Modulus)
|
|
{
|
|
sum -= Modulus;
|
|
}
|
|
|
|
return (byte)sum;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static byte AddMod13(this byte value, byte delta)
|
|
{
|
|
const int Modulus = 13;
|
|
int sum = value + delta;
|
|
|
|
if (sum >= Modulus)
|
|
{
|
|
sum -= Modulus;
|
|
}
|
|
|
|
return (byte)sum;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static byte AddMod17(this byte value, byte delta)
|
|
{
|
|
const int Modulus = 17;
|
|
int sum = value + delta;
|
|
|
|
if (sum >= Modulus)
|
|
{
|
|
sum -= Modulus;
|
|
}
|
|
|
|
return (byte)sum;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static byte AddMod19(this byte value, byte delta)
|
|
{
|
|
const int Modulus = 19;
|
|
int sum = value + delta;
|
|
|
|
if (sum >= Modulus)
|
|
{
|
|
sum -= Modulus;
|
|
}
|
|
|
|
return (byte)sum;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static byte AddMod10(this byte value, byte delta)
|
|
{
|
|
const int Modulus = 10;
|
|
int sum = value + delta;
|
|
|
|
if (sum >= Modulus)
|
|
{
|
|
sum -= Modulus;
|
|
}
|
|
|
|
return (byte)sum;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static byte AddMod11(this byte value, byte delta)
|
|
{
|
|
const int Modulus = 11;
|
|
int sum = value + delta;
|
|
|
|
if (sum >= Modulus)
|
|
{
|
|
sum -= Modulus;
|
|
}
|
|
|
|
return (byte)sum;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static byte AddMod8(this byte value, byte delta)
|
|
{
|
|
return (byte)((value + delta) & 7);
|
|
}
|
|
}
|