@@ -862,7 +862,7 @@ static uint16_t cm_predict(cm_t *cm, uint32_t pos, int bp, float *str, uint16_t
862862 float m1 = mixer_mix (& cm -> mx1 [(cm -> prev [0 ] << 4 ) | (cm -> prev [1 ] >> 6 << 3 ) | bp ], str );
863863 float m2 = mixer_mix (& cm -> mx2 [((char_class (cm -> prev [0 ]) << 4 ) | (bp << 1 ) | (cm -> prev [1 ] >> 7 )) & 127 ], str );
864864 float m3 = mixer_mix (& cm -> mx3 [bp ], str );
865- int mx4_ctx = (((cm -> prev [0 ] >> 4 ) << 5 ) | (( cm -> prev [1 ] >> 4 ) << 1 ) | bp / 4 ) & 1023 ;
865+ int mx4_ctx = (((cm -> prev [0 ] >> 3 ) << 4 ) | (cm -> prev [1 ] >> 4 )) & 1023 ;
866866 float m4 = mixer_mix (& cm -> mx4 [mx4_ctx ], str );
867867 int mx5_ctx = (cm -> word_hash ^ (cm -> word_hash >> 9 )) & 511 ;
868868 float m5 = mixer_mix (& cm -> mx5 [mx5_ctx ], str );
@@ -1046,7 +1046,7 @@ static void cm_update(cm_t *cm, uint32_t pos, int bp, int bit,
10461046 mixer_learn (& cm -> mx2 [((char_class (cm -> prev [0 ]) << 4 ) | (bp << 1 ) | (cm -> prev [1 ] >> 7 )) & 127 ], str , bit , lr );
10471047 mixer_learn (& cm -> mx3 [bp ], str , bit , lr * 0.7f );
10481048 {
1049- int mx4_ctx = (((cm -> prev [0 ] >> 4 ) << 5 ) | (( cm -> prev [1 ] >> 4 ) << 1 ) | bp / 4 ) & 1023 ;
1049+ int mx4_ctx = (((cm -> prev [0 ] >> 3 ) << 4 ) | (cm -> prev [1 ] >> 4 )) & 1023 ;
10501050 mixer_learn (& cm -> mx4 [mx4_ctx ], str , bit , lr );
10511051 int mx5_ctx = (cm -> word_hash ^ (cm -> word_hash >> 9 )) & 511 ;
10521052 mixer_learn (& cm -> mx5 [mx5_ctx ], str , bit , lr * 3.0f );
0 commit comments