All pastes #797408 Raw Edit

Someone

public c v1 · immutable
#797408 ·published 2007-11-25 23:39 UTC
rendered paste body
static void fct3_4(float *x){  float tmp00, tmp01, tmp10, tmp11, wc, ws;  COUNT_sub_start("fct3_4");  MULT(1); STORE(1);  x[1] *= 0.7071067812f;  ADD(2);  tmp00 = x[0] + x[1];  tmp01 = x[0] - x[1];  wc = 0.923879532511287f;  ws = 0.382683432365090f;  MULT(3); MAC(1); ADD(1);  tmp10 = x[2] * wc + x[3] * ws;  tmp11 = x[2] * ws - x[3] * wc;  ADD(4); STORE(4);  x[0] = tmp00 + tmp10;  x[3] = tmp00 - tmp10;  x[1] = tmp01 + tmp11;  x[2] = tmp01 - tmp11;  COUNT_sub_end();}static void fst3_4r(float *x){  float tmp00, tmp01, tmp10, tmp11, wc, ws;  COUNT_sub_start("fst3_4r");  MULT(1); STORE(1);  x[2] *= 0.7071067812f;  ADD(2);  tmp00 = x[3] + x[2];  tmp01 = x[3] - x[2];  wc = 0.923879532511287f;  ws = 0.382683432365090f;  MULT(3); MAC(1); ADD(1);  tmp10 = x[1] * wc + x[0] * ws;  tmp11 = x[0] * wc - x[1] * ws;  ADD(4); STORE(4);  x[3] = tmp00 + tmp10;  x[0] = tmp10 - tmp00;  x[2] = tmp11 - tmp01;  x[1] = tmp11 + tmp01;  COUNT_sub_end();}static void fct4_4r(float *x){  float tmp00, tmp01, tmp10, tmp11, wc, ws;  COUNT_sub_start("fct4_4r");  wc = 0.7071067812f;  MULT(1); STORE(1);  x[1] *= wc;  ADD(2);  tmp00 = x[0] + x[1];  tmp01 = x[0] - x[1];  MULT(1); STORE(1);  x[2] *= wc;  ADD(2);  tmp11 = x[3] - x[2];  tmp10 = x[3] + x[2];  wc = 0.980785280403230f;  ws = 0.195090322016128f;  MULT(3); MAC(1); ADD(1); STORE(2);  x[3] = tmp00 * wc + tmp10 * ws;  x[0] = tmp00 * ws - tmp10 * wc;  wc = 0.831469612302545f;  ws = 0.555570233019602f;  MULT(3); MAC(1); ADD(1); STORE(2);  x[2] = tmp01 * wc - tmp11 * ws;  x[1] = tmp01 * ws + tmp11 * wc;  COUNT_sub_end();}static void fst4_4(float *x){  float tmp00, tmp01, tmp10, tmp11, wc, ws;  COUNT_sub_start("fst4_4");  wc = 0.7071067812f;  MULT(1); STORE(1);  x[1] *= wc;  ADD(2);  tmp10 = x[0] + x[1];  tmp11 = x[0] - x[1];  MULT(1); STORE(1);  x[2] *= wc;  ADD(2);  tmp01 = x[3] - x[2];  tmp00 = x[3] + x[2];  wc = 0.980785280403230f;  ws = 0.195090322016128f;  MULT(3); MAC(1); ADD(1); STORE(2);  x[0] = tmp00 * wc + tmp10 * ws;  x[3] = tmp10 * wc - tmp00 * ws;  wc = 0.831469612302545f;  ws = 0.555570233019602f;  MULT(3); MAC(1); ADD(1); STORE(2);  x[1] = tmp11 * ws - tmp01 * wc;  x[2] = tmp01 * ws + tmp11 * wc;  COUNT_sub_end();}static void fct3_64(float *a){  int k;  const float *tPtr;  float wc, ws;  float xp;  COUNT_sub_start("fct3_64");  /* bit reversal */  MOVE(3 * 28);  xp =  a[1];  a[1] = a[32]; a[32] = xp;  xp =  a[2];  a[2] = a[16]; a[16] = xp;  xp =  a[3];  a[3] = a[48]; a[48] = xp;  xp =  a[4];  a[4] =  a[8];  a[8] = xp;  xp =  a[5];  a[5] = a[40]; a[40] = xp;  xp =  a[6];  a[6] = a[24]; a[24] = xp;  xp =  a[7];  a[7] = a[56]; a[56] = xp;  xp =  a[9];  a[9] = a[36]; a[36] = xp;  xp = a[10]; a[10] = a[20]; a[20] = xp;  xp = a[11]; a[11] = a[52]; a[52] = xp;  xp = a[13]; a[13] = a[44]; a[44] = xp;  xp = a[14]; a[14] = a[28]; a[28] = xp;  xp = a[15]; a[15] = a[60]; a[60] = xp;  xp = a[17]; a[17] = a[34]; a[34] = xp;  xp = a[19]; a[19] = a[50]; a[50] = xp;  xp = a[21]; a[21] = a[42]; a[42] = xp;  xp = a[22]; a[22] = a[26]; a[26] = xp;  xp = a[23]; a[23] = a[58]; a[58] = xp;  xp = a[25]; a[25] = a[38]; a[38] = xp;  xp = a[27]; a[27] = a[54]; a[54] = xp;  xp = a[29]; a[29] = a[46]; a[46] = xp;  xp = a[31]; a[31] = a[62]; a[62] = xp;  xp = a[35]; a[35] = a[49]; a[49] = xp;  xp = a[37]; a[37] = a[41]; a[41] = xp;  xp = a[39]; a[39] = a[57]; a[57] = xp;  xp = a[43]; a[43] = a[53]; a[53] = xp;  xp = a[47]; a[47] = a[61]; a[61] = xp;  xp = a[55]; a[55] = a[59]; a[59] = xp;  ADD(2 * 15); STORE(15); MOVE(15);  xp = a[33] + a[62]; a[62] -= a[33]; a[33] = xp;  xp = a[34] + a[60]; a[60] -= a[34]; a[34] = xp;  xp = a[35] + a[61]; a[61] -= a[35]; a[35] = xp;  xp = a[36] + a[56]; a[56] -= a[36]; a[36] = xp;  xp = a[37] + a[57]; a[57] -= a[37]; a[37] = xp;  xp = a[38] + a[58]; a[58] -= a[38]; a[38] = xp;  xp = a[39] + a[59]; a[59] -= a[39]; a[39] = xp;  xp = a[40] + a[48]; a[48] -= a[40]; a[40] = xp;  xp = a[41] + a[49]; a[49] -= a[41]; a[41] = xp;  xp = a[42] + a[50]; a[50] -= a[42]; a[42] = xp;  xp = a[43] + a[51]; a[51] -= a[43]; a[43] = xp;  xp = a[44] + a[52]; a[52] -= a[44]; a[44] = xp;  xp = a[45] + a[53]; a[53] -= a[45]; a[45] = xp;  xp = a[46] + a[54]; a[54] -= a[46]; a[46] = xp;  xp = a[47] + a[55]; a[55] -= a[47]; a[47] = xp;  ADD(2 * 7); STORE(7); MOVE(7);  xp = a[17] + a[30]; a[30] -= a[17]; a[17] = xp;  xp = a[18] + a[28]; a[28] -= a[18]; a[18] = xp;  xp = a[19] + a[29]; a[29] -= a[19]; a[19] = xp;  xp = a[20] + a[24]; a[24] -= a[20]; a[20] = xp;  xp = a[21] + a[25]; a[25] -= a[21]; a[21] = xp;  xp = a[22] + a[26]; a[26] -= a[22]; a[22] = xp;  xp = a[23] + a[27]; a[27] -= a[23]; a[23] = xp;  ADD(2 * 3 * 3); STORE(3 * 3); MOVE(3 * 3);  xp =  a[9] + a[14]; a[14] -=  a[9];  a[9] = xp;  xp = a[10] + a[12]; a[12] -= a[10]; a[10] = xp;  xp = a[11] + a[13]; a[13] -= a[11]; a[11] = xp;  xp = a[41] + a[46]; a[46] -= a[41]; a[41] = xp;  xp = a[42] + a[44]; a[44] -= a[42]; a[42] = xp;  xp = a[43] + a[45]; a[45] -= a[43]; a[43] = xp;  xp = a[49] + a[54]; a[49] -= a[54]; a[54] = xp;  xp = a[50] + a[52]; a[50] -= a[52]; a[52] = xp;  xp = a[51] + a[53]; a[51] -= a[53]; a[53] = xp;  ADD(2 * 5); STORE(5); MOVE(5);  xp =  a[5] +  a[6]; a[6]  -=  a[5];  a[5] = xp;  xp = a[21] + a[22]; a[22] -= a[21]; a[21] = xp;  xp = a[25] + a[26]; a[25] -= a[26]; a[26] = xp;  xp = a[37] + a[38]; a[38] -= a[37]; a[37] = xp;  xp = a[57] + a[58]; a[57] -= a[58]; a[58] = xp;  FUNC(1);  fct3_4(a);  PTR_INIT(1); FUNC(1);  fct4_4r(a+4);  PTR_INIT(1); FUNC(1);  fct3_4(a+8);  PTR_INIT(1); FUNC(1);  fst3_4r(a+12);  PTR_INIT(1); FUNC(1);  fct3_4(a+16);  PTR_INIT(1); FUNC(1);  fct4_4r(a+20);  PTR_INIT(1); FUNC(1);  fst4_4(a+24);  PTR_INIT(1); FUNC(1);  fst3_4r(a+28);  PTR_INIT(1); FUNC(1);  fct3_4(a+32);  PTR_INIT(1); FUNC(1);  fct4_4r(a+36);  PTR_INIT(1); FUNC(1);  fct3_4(a+40);  PTR_INIT(1); FUNC(1);  fst3_4r(a+44);  PTR_INIT(1); FUNC(1);  fct3_4(a+48);  PTR_INIT(1); FUNC(1);  fst3_4r(a+52);  PTR_INIT(1); FUNC(1);  fst4_4(a+56);  PTR_INIT(1); FUNC(1);  fst3_4r(a+60);  LOOP(1);  for (k=0; k<4; k++) {    ADD(2 * 5); STORE(5); MOVE(5);    xp      =    a[k] +  a[7-k];    a[7-k]  =    a[k] -  a[7-k];    a[k]    = xp;    xp      = a[16+k] + a[23-k];    a[23-k] = a[16+k] - a[23-k];    a[16+k] = xp;    xp      = a[24+k] + a[31-k];    a[24+k] = a[24+k] - a[31-k];    a[31-k] = xp;    xp      = a[32+k] + a[39-k];    a[39-k] = a[32+k] - a[39-k];    a[32+k] = xp;    xp      = a[56+k] + a[63-k];    a[56+k] = a[56+k] - a[63-k];    a[63-k] = xp;  }  tPtr = trigData_fct4_8;  LOOP(1);  for (k=0; k<4; k++) {    wc = *tPtr++;    ws = *tPtr++;    MULT(3 * 3); MAC(3); ADD(3); STORE(3); MOVE(3);    xp      =  a[8+k]*wc + a[15-k]*ws;    a[8+k]  =  a[8+k]*ws - a[15-k]*wc;    a[15-k] = xp;    xp      = a[40+k]*wc + a[47-k]*ws;    a[40+k] = a[40+k]*ws - a[47-k]*wc;    a[47-k] = xp;    xp      = a[48+k]*ws + a[55-k]*wc;    a[55-k] = a[48+k]*wc - a[55-k]*ws;    a[48+k] = xp;  }  LOOP(1);  for (k=0; k<8; k++) {    ADD(2 * 3); STORE(3); MOVE(3);    xp      =    a[k] + a[15-k];    a[15-k] =    a[k] - a[15-k];    a[k]    = xp;    xp      = a[32+k] + a[47-k];    a[47-k] = a[32+k] - a[47-k];    a[32+k] = xp;    xp      = a[48+k] + a[63-k];    a[48+k] = a[48+k] - a[63-k];    a[63-k] = xp;  }  tPtr = trigData_fct4_16;  LOOP(1);  for (k=0; k<8; k++) {    wc = *tPtr++;    ws = *tPtr++;    MULT(3); MAC(1); ADD(1); STORE(1); MOVE(1);    xp      = a[16+k]*wc + a[31-k]*ws;    a[16+k] = a[16+k]*ws - a[31-k]*wc;    a[31-k] = xp;  }  LOOP(1);  for (k=0; k<16; k++) {    ADD(2); STORE(1); MOVE(1);    xp      = a[k] + a[31-k];    a[31-k] = a[k] - a[31-k];    a[k]    = xp;  }  tPtr = trigData_fct4_32;  LOOP(1);  for (k=0; k<16; k++) {    wc = *tPtr++;    ws = *tPtr++;    MULT(3); MAC(1); ADD(1); STORE(1); MOVE(1);    xp = a[32+k]*wc + a[63-k]*ws;    a[32+k] = a[32+k]*ws - a[63-k]*wc;    a[63-k] = xp;  }  LOOP(1);  for (k=0; k<32; k++) {    ADD(2); STORE(1); MOVE(1);    xp      = a[k] + a[63-k];    a[63-k] = a[k] - a[63-k];    a[k]    = xp;  }  COUNT_sub_end();}static void fst3_64(float *a){  int k;  float xp;  COUNT_sub_start("fst3_64");  /* reorder input */  LOOP(1);  for (k=0; k<32; k++) {    MOVE(3);    xp = a[k];    a[k] = a[63-k];    a[63-k] = xp;  }  FUNC(1);  fct3_64(a);  LOOP(1);  for (k=1; k<64; k+=2) {    MULT(1); STORE(1);    a[k] = -a[k];  }  COUNT_sub_end();}