y1 = ADD16(y[i], PSHR(mem1[0],LPC_SHIFT));
y1 = ADD16(y[i], EXTRACT16(PSHR32(mem1[0],LPC_SHIFT)));
void compute_impulse_response(const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack){   int i,j;   spx_word16_t y1, ny1i, ny2i;   VARDECL(spx_mem_t *mem1);   VARDECL(spx_mem_t *mem2);   ALLOC(mem1, ord, spx_mem_t);   ALLOC(mem2, ord, spx_mem_t);      for (i=0;i<ord+1;i++)      y[i] = awk1[i];   for (;i<N;i++)      y[i] = VERY_SMALL;      for (i=0;i<ord;i++)      mem1[i] = mem2[i] = 0;   for (i=0;i<N;i++)   {      y1 = ADD16(y[i], PSHR(mem1[0],LPC_SHIFT));      ny1i = NEG16(y1);      y[i] = ADD16(SHL(y1,1), PSHR(mem2[0],LPC_SHIFT));      ny2i = NEG16(y[i]);      for (j=0;j<ord-1;j++)      {         mem1[j] = MAC16_16(mem1[j+1], awk2[j+1],ny1i);         mem2[j] = MAC16_16(mem2[j+1], ak[j+1],ny2i);      }      mem1[ord-1] = MULT16_16(awk2[ord],ny1i);      mem2[ord-1] = MULT16_16(ak[ord],ny2i);   }}