|
latest generator.image (
Balloon-Engine-Pools-JB.2
CMakeVMMaker-EstebanLorenzano.192
Cog-IgorStasenko.57
VMMaker-oscog-EstebanLorenzano.234
)
generate FFTPlugin>>primitiveFFTTransformData with odd indent.
regards.
/* example begin */
EXPORT(sqInt)
primitiveFFTTransformData(void)
{
// FFTPlugin>>#primitiveFFTTransformData
sqInt fftScale;
sqInt fftSize2;
sqInt fftSize4;
sqInt forward;
sqInt i;
sqInt ii;
float imagT;
float imagU;
sqInt ip;
sqInt j;
sqInt lev;
sqInt lev1;
sqInt level;
sqInt rcvr;
float realT;
float realU;
sqInt theta;
forward = booleanValueOf(stackValue(0));
rcvr = stackObjectValue(1);
if (!(loadFFTFrom(rcvr))) {
return null;
}
/* begin transformData: */
permuteData();
if (failed()) {
/* ifTrue: */
permuteData();
null;
goto l1;
}
/* begin transformForward: */
fftSize2 = ((sqInt) fftSize >> 1);
fftSize4 = ((sqInt) fftSize >> 2);
for (level = 1; level <= nu; level += 1) {
lev = 1 << level;
lev1 = ((sqInt) lev >> 1);
fftScale = fftSize / lev;
for (j = 1; j <= lev1; j += 1) {
/* fftScale */
theta = (j - 1) * fftScale;
if (theta < fftSize4) {
/* fftSize4 */
/* fftSize4 */
realU = sinTable[(sinTableSize - theta) - 1];
imagU = sinTable[theta];
}
else {
realU = 0.0 - (sinTable[theta - fftSize4]);
imagU = sinTable[fftSize2 - theta];
}
if (!forward) {
imagU = 0.0 - imagU;
}
i = j;
while (i <= fftSize) {
ip = (i + lev1) - 1;
ii = i - 1;
realT = ((realData[ip]) * realU) - ((imagData[ip]) * imagU);
imagT = ((realData[ip]) * imagU) + ((imagData[ip]) * realU);
realData[ip] = ((realData[ii]) - realT);
imagData[ip] = ((imagData[ii]) - imagT);
realData[ii] = ((realData[ii]) + realT);
imagData[ii] = ((imagData[ii]) + imagT);
i += lev;
}
}
}
if (!forward) {
scaleData();
}
l1: /* end transformData: */;
if (!(failed())) {
pop(1);
}
}
/* example end */
--
--
"NISHIHARA Satoshi"
[:goonsh :nsh | ^ nishis perform: goonsh with: nsh]
|