u16_t m[]={1000,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1010,1000,1010,1010,1010};
u8_t i;
s32_t an = m[0];
float sf = m[0];
for (i = 1; i < sizeof(m)/2; i++) {
sf += (3 * (m[i] - sf))/16;
an = an + (3 *(256*m[i] - an)) / 16;
}
an = an / 256; // 971
sf = sf; //1007