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