All pastes #1966378 Raw Edit

Watch Out For Snakes

public text v1 · immutable
#1966378 ·published 2010-10-19 00:27 UTC
rendered paste body
static void fft16(float *vec)
{
  float temp10, temp11, temp12, temp13, temp14, temp15, temp16, temp17,
    temp18, temp19, temp110, temp111, temp112, temp113, temp114, temp115;
  float temp20, temp21, temp22, temp23, temp24, temp25, temp26, temp27,
    temp28, temp29, temp210, temp211, temp212, temp213, temp214, temp215;
  float vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7,
    vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;

  vec0 = vec[0] + vec[16];
  vec1 = vec[1] + vec[17];
  vec2 = vec[2] + vec[18];
  vec3 = vec[3] + vec[19];
  vec4 = vec[4] + vec[20];
  vec5 = vec[5] + vec[21];
  vec6 = vec[6] + vec[22];
  vec7 = vec[7] + vec[23];
  vec8 = vec[8] + vec[24];
  vec9 = vec[9] + vec[25];
  vec10 = vec[10] + vec[26];
  vec11 = vec[11] + vec[27];
  vec12 = vec[12] + vec[28];
  vec13 = vec[13] + vec[29];
  vec14 = vec[14] + vec[30];
  vec15 = vec[15] + vec[31];

  temp10  = vec0 + vec8;
  temp12  = vec0 - vec8;
  temp11  = vec1 + vec9;
  temp13  = vec1 - vec9;
  temp14  = vec2 + vec10;
  temp16  = vec2 - vec10;
  temp15  = vec3 + vec11;
  temp17  = vec3 - vec11;
  temp18  = vec4 + vec12;
  temp110 = vec4 - vec12;
  temp19  = vec5 + vec13;
  temp111 = vec5 - vec13;
  temp112 = vec6 + vec14;
  temp114 = vec6 - vec14;
  temp113 = vec7 + vec15;
  temp115 = vec7 - vec15;

  temp20  =  temp10 + temp18;
  temp24  =  temp10 - temp18;
  temp21  =  temp11 + temp19;
  temp25  =  temp11 - temp19;
  temp28  =  temp12 - temp111;
  temp210 =  temp12 + temp111;
  temp29  =  temp13 + temp110;
  temp211 =  temp13 - temp110;
  temp22  =  temp14 + temp112;
  temp27  =  temp14 - temp112;
  temp23  =  temp15 + temp113;
  temp26  =  temp113- temp15;

  temp11  =  temp16 + temp114;
  temp12  =  temp16 - temp114;
  temp10  =  temp17 + temp115;
  temp13  =  temp17 - temp115;

  temp212 = (temp10 + temp12) *  INV_SQRT2;
  temp214 = (temp10 - temp12) *  INV_SQRT2;
  temp213 = (temp13 - temp11) *  INV_SQRT2;
  temp215 = (temp11 + temp13) * -INV_SQRT2;

  vec0 = vec[0] - vec[16];
  vec1 = vec[1] - vec[17];
  vec2 = vec[2] - vec[18];
  vec3 = vec[3] - vec[19];
  vec4 = vec[4] - vec[20];
  vec5 = vec[5] - vec[21];
  vec6 = vec[6] - vec[22];
  vec7 = vec[7] - vec[23];
  vec8 = vec[8] - vec[24];
  vec9 = vec[9] - vec[25];
  vec10 = vec[10] - vec[26];
  vec11 = vec[11] - vec[27];
  vec12 = vec[12] - vec[28];
  vec13 = vec[13] - vec[29];
  vec14 = vec[14] - vec[30];
  vec15 = vec[15] - vec[31];

  temp19  = (vec2 + vec14) * -COS_3PI_DIV8;
  temp110 = (vec2 - vec14) * COS_PI_DIV8;
  temp18  = (vec3 + vec15) * COS_3PI_DIV8;
  temp111 = (vec3 - vec15) *  COS_PI_DIV8;
  temp15  = (vec4 + vec12) * -INV_SQRT2;
  temp16  = (vec4 - vec12) * INV_SQRT2;
  temp14  = (vec5 + vec13) * INV_SQRT2;
  temp17  = (vec5 - vec13) *  INV_SQRT2;
  temp113 = (vec6 + vec10) * -COS_PI_DIV8;
  temp114 = (vec6 - vec10) * COS_3PI_DIV8;
  temp112 = (vec7 + vec11) * COS_PI_DIV8;
  temp115 = (vec7 - vec11) *  COS_3PI_DIV8;

  vec2 = temp18  * SQRT2PLUS1  - temp112 * SQRT2MINUS1;
  vec3 = temp19  * SQRT2PLUS1  - temp113 * SQRT2MINUS1;
  vec4 = temp110 * SQRT2MINUS1 - temp114 * SQRT2PLUS1;
  vec5 = temp111 * SQRT2MINUS1 - temp115 * SQRT2PLUS1;

  temp18 += temp112;
  temp19 += temp113;
  temp110+= temp114;
  temp111+= temp115;

  vec6   = vec0  + temp14;
  vec10  = vec0  - temp14;
  vec7   = vec1  + temp15;
  vec11  = vec1  - temp15;

  vec12  = temp16 - vec9;
  vec14  = temp16 + vec9;
  vec13  = vec8  + temp17;
  vec15  = vec8  - temp17;
 
  temp10  = vec6  - vec14;
  temp12  = vec6  + vec14;
  temp11  = vec7  + vec15;
  temp13  = vec7  - vec15;
  temp14  = vec10 + vec12;
  temp16  = vec10 - vec12;
  temp15  = vec11 + vec13;
  temp17  = vec11 - vec13;

  vec10  = temp18 + temp110;
  temp110 = temp18 - temp110;
  vec11  = temp19 + temp111;
  temp111 = temp19 - temp111;

  temp112 = vec2  + vec4;
  temp114 = vec2  - vec4;
  temp113 = vec3  + vec5;
  temp115 = vec3  - vec5;

  *vec++ = temp20 + temp22;
  *vec++ = temp21 + temp23;
  *vec++ = temp12 + vec10;
  *vec++ = temp13 + vec11;
  *vec++ = temp210+ temp212;
  *vec++ = temp211+ temp213;
  *vec++ = temp10 + temp112;
  *vec++ = temp11 + temp113;
  *vec++ = temp24 - temp26;
  *vec++ = temp25 - temp27;
  *vec++ = temp16 + temp114;
  *vec++ = temp17 + temp115;
  *vec++ = temp28 + temp214;
  *vec++ = temp29 + temp215;
  *vec++ = temp14 + temp110;
  *vec++ = temp15 + temp111;
  *vec++ = temp20 - temp22;
  *vec++ = temp21 - temp23;
  *vec++ = temp12 - vec10;
  *vec++ = temp13 - vec11;
  *vec++ = temp210- temp212;
  *vec++ = temp211- temp213;
  *vec++ = temp10 - temp112;
  *vec++ = temp11 - temp113;
  *vec++ = temp24 + temp26;
  *vec++ = temp25 + temp27;
  *vec++ = temp16 - temp114;
  *vec++ = temp17 - temp115;
  *vec++ = temp28 - temp214;
  *vec++ = temp29 - temp215;
  *vec++ = temp14 - temp110;
  *vec++ = temp15 + temp111;
  *vec++ = temp20 - temp22;
  *vec++ = temp21 - temp23;
  *vec++ = temp12 - vec10;
  *vec++ = temp13 - vec11;
  *vec++ = temp210- temp212;
  *vec++ = temp211- temp213;
  *vec++ = temp10 - temp112;
  *vec++ = temp11 - temp113;
  *vec++ = temp24 + temp26;
  *vec++ = temp25 + temp27;
  *vec++ = temp16 - temp114;
  *vec++ = temp17 - temp115;
  *vec++ = temp28 - temp214;
  *vec++ = temp29 - temp215;
  *vec++ = temp14 - temp110;
  *vec++ = temp15 - temp111;
}