@@ -883,7 +883,7 @@ private static ulong BitReverseU64(ulong d, int bits)
883883 [ MethodImpl ( MethodImplOptions . AggressiveInlining | MethodImplOptions . AggressiveOptimization ) ]
884884 private static int GetBits ( ReadOnlySpan < byte > input , int bit , int len )
885885 {
886- ReadOnlySpan < byte > slice = input [ ( bit / 8 ) ..] ;
886+ ReadOnlySpan < byte > slice = input [ ( bit / 8 ) ..] ;
887887 int bitBuffer ;
888888 if ( slice . Length >= sizeof ( int ) )
889889 {
@@ -894,7 +894,7 @@ private static int GetBits(ReadOnlySpan<byte> input, int bit, int len)
894894 Span < byte > temp = stackalloc byte [ sizeof ( int ) ] ;
895895 slice . CopyTo ( temp ) ;
896896 bitBuffer = BinaryPrimitives . ReadInt32LittleEndian ( temp ) ;
897- }
897+ }
898898 return ( bitBuffer >> ( bit % 8 ) ) & ( ( 1 << len ) - 1 ) ;
899899 }
900900
@@ -996,10 +996,12 @@ private static void SetEndpointBlueClamp(Span<int> endpoint, int r1, int g1, int
996996 [ MethodImpl ( MethodImplOptions . AggressiveInlining | MethodImplOptions . AggressiveOptimization ) ]
997997 private static byte SelectColor ( int v0 , int v1 , int weight )
998998 {
999- return ( byte ) ( ( ( ( ( v0 << 8 | v0 ) * ( 64 - weight ) + ( v1 << 8 | v1 ) * weight + 32 ) >> 6 ) * 255 + 32768 ) / 65536 ) ;
999+ const int SignAdjustment = short . MaxValue + 1 ;
1000+ const int MaxValue = ushort . MaxValue + 1 ;
1001+ return ( byte ) ( ( ( ( ( v0 << 8 | v0 ) * ( 64 - weight ) + ( v1 << 8 | v1 ) * weight + 32 ) >> 6 ) * byte . MaxValue + SignAdjustment ) / MaxValue ) ;
10001002 }
10011003
1002- private static readonly byte [ ] BitReverseTable =
1004+ private static ReadOnlySpan < byte > BitReverseTable =>
10031005 [
10041006 0x00 , 0x80 , 0x40 , 0xC0 , 0x20 , 0xA0 , 0x60 , 0xE0 , 0x10 , 0x90 , 0x50 , 0xD0 , 0x30 , 0xB0 , 0x70 , 0xF0 ,
10051007 0x08 , 0x88 , 0x48 , 0xC8 , 0x28 , 0xA8 , 0x68 , 0xE8 , 0x18 , 0x98 , 0x58 , 0xD8 , 0x38 , 0xB8 , 0x78 , 0xF8 ,
@@ -1019,30 +1021,30 @@ private static byte SelectColor(int v0, int v1, int weight)
10191021 0x0F , 0x8F , 0x4F , 0xCF , 0x2F , 0xAF , 0x6F , 0xEF , 0x1F , 0x9F , 0x5F , 0xDF , 0x3F , 0xBF , 0x7F , 0xFF
10201022 ] ;
10211023
1022- private static readonly int [ ] WeightPrecTableA = [ 0 , 0 , 0 , 3 , 0 , 5 , 3 , 0 , 0 , 0 , 5 , 3 , 0 , 5 , 3 , 0 ] ;
1023- private static readonly int [ ] WeightPrecTableB = [ 0 , 0 , 1 , 0 , 2 , 0 , 1 , 3 , 0 , 0 , 1 , 2 , 4 , 2 , 3 , 5 ] ;
1024+ private static ReadOnlySpan < int > WeightPrecTableA => [ 0 , 0 , 0 , 3 , 0 , 5 , 3 , 0 , 0 , 0 , 5 , 3 , 0 , 5 , 3 , 0 ] ;
1025+ private static ReadOnlySpan < int > WeightPrecTableB => [ 0 , 0 , 1 , 0 , 2 , 0 , 1 , 3 , 0 , 0 , 1 , 2 , 4 , 2 , 3 , 5 ] ;
10241026
1025- private static readonly int [ ] CemTableA = [ 0 , 3 , 5 , 0 , 3 , 5 , 0 , 3 , 5 , 0 , 3 , 5 , 0 , 3 , 5 , 0 , 3 , 0 , 0 ] ;
1026- private static readonly int [ ] CemTableB = [ 8 , 6 , 5 , 7 , 5 , 4 , 6 , 4 , 3 , 5 , 3 , 2 , 4 , 2 , 1 , 3 , 1 , 2 , 1 ] ;
1027+ private static ReadOnlySpan < int > CemTableA => [ 0 , 3 , 5 , 0 , 3 , 5 , 0 , 3 , 5 , 0 , 3 , 5 , 0 , 3 , 5 , 0 , 3 , 0 , 0 ] ;
1028+ private static ReadOnlySpan < int > CemTableB => [ 8 , 6 , 5 , 7 , 5 , 4 , 6 , 4 , 3 , 5 , 3 , 2 , 4 , 2 , 1 , 3 , 1 , 2 , 1 ] ;
10271029
1028- private static readonly int [ ] DImt = [ 0 , 2 , 4 , 5 , 7 ] ;
1029- private static readonly int [ ] DImq = [ 0 , 3 , 5 ] ;
1030- private static readonly int [ ] DITritsTable =
1030+ private static ReadOnlySpan < int > DImt => [ 0 , 2 , 4 , 5 , 7 ] ;
1031+ private static ReadOnlySpan < int > DImq => [ 0 , 3 , 5 ] ;
1032+ private static ReadOnlySpan < int > DITritsTable =>
10311033 [
10321034 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 0 , 0 , 1 , 2 , 1 , 0 , 1 , 2 , 2 , 0 , 1 , 2 , 2 ,
10331035 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 2 , 2 , 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 2 , 2 , 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 2 , 2 , 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 2 , 2 , 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 2 , 2 , 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 2 , 2 , 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 2 , 2 , 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 1 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 2 , 2 , 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 1 ,
10341036 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 ,
10351037 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 ,
10361038 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2
10371039 ] ;
1038- private static readonly int [ ] DIQuintsTable =
1040+ private static ReadOnlySpan < int > DIQuintsTable =>
10391041 [
10401042 0 , 1 , 2 , 3 , 4 , 0 , 4 , 4 , 0 , 1 , 2 , 3 , 4 , 1 , 4 , 4 , 0 , 1 , 2 , 3 , 4 , 2 , 4 , 4 , 0 , 1 , 2 , 3 , 4 , 3 , 4 , 4 , 0 , 1 , 2 , 3 , 4 , 0 , 4 , 0 , 0 , 1 , 2 , 3 , 4 , 1 , 4 , 1 , 0 , 1 , 2 , 3 , 4 , 2 , 4 , 2 , 0 , 1 , 2 , 3 , 4 , 3 , 4 , 3 , 0 , 1 , 2 , 3 , 4 , 0 , 2 , 3 , 0 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 0 , 1 , 2 , 3 , 4 , 2 , 2 , 3 , 0 , 1 , 2 , 3 , 4 , 3 , 2 , 3 , 0 , 1 , 2 , 3 , 4 , 0 , 0 , 1 , 0 , 1 , 2 , 3 , 4 , 1 , 0 , 1 , 0 , 1 , 2 , 3 , 4 , 2 , 0 , 1 , 0 , 1 , 2 , 3 , 4 , 3 , 0 , 1 ,
10411043 0 , 0 , 0 , 0 , 0 , 4 , 4 , 4 , 1 , 1 , 1 , 1 , 1 , 4 , 4 , 4 , 2 , 2 , 2 , 2 , 2 , 4 , 4 , 4 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 0 , 0 , 0 , 0 , 0 , 4 , 0 , 4 , 1 , 1 , 1 , 1 , 1 , 4 , 1 , 4 , 2 , 2 , 2 , 2 , 2 , 4 , 2 , 4 , 3 , 3 , 3 , 3 , 3 , 4 , 3 , 4 , 0 , 0 , 0 , 0 , 0 , 4 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 4 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 4 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 4 , 3 , 3 , 0 , 0 , 0 , 0 , 0 , 4 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 4 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 4 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 4 , 3 , 3 ,
10421044 0 , 0 , 0 , 0 , 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 3 , 4 , 1 , 1 , 1 , 1 , 1 , 1 , 4 , 4 , 1 , 1 , 1 , 1 , 1 , 1 , 4 , 4 , 1 , 1 , 1 , 1 , 1 , 1 , 4 , 4 , 1 , 1 , 1 , 1 , 1 , 1 , 4 , 4 , 2 , 2 , 2 , 2 , 2 , 2 , 4 , 4 , 2 , 2 , 2 , 2 , 2 , 2 , 4 , 4 , 2 , 2 , 2 , 2 , 2 , 2 , 4 , 4 , 2 , 2 , 2 , 2 , 2 , 2 , 4 , 4 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 ,
10431045 ] ;
10441046
1045- private static readonly int [ ] DETritsTable = [ 0 , 204 , 93 , 44 , 22 , 11 , 5 ] ;
1046- private static readonly int [ ] DEQuintsTable = [ 0 , 113 , 54 , 26 , 13 , 6 ] ;
1047+ private static ReadOnlySpan < int > DETritsTable => [ 0 , 204 , 93 , 44 , 22 , 11 , 5 ] ;
1048+ private static ReadOnlySpan < int > DEQuintsTable => [ 0 , 113 , 54 , 26 , 13 , 6 ] ;
10471049 }
10481050}
0 commit comments