Skip to content

Commit c0b45f2

Browse files
author
Overmind
committed
cm: mx4_ctx reshape prev[0]>>3 + prev[1]>>4 (drop bp, widen prev[0]) — -21 bytes Canterbury tier-2
1 parent dac38a4 commit c0b45f2

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

lib/cm/cm.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)