Цитата
А у него точно long длиной в 32 бита?
у армовского кейла точно.
Цитата
Может быть для уверенности лучше написать uint32_t
.....
Поэтому, на мой взгляд, было бы проще объявить входные и выходные данные не как массив из 32-битных целых, а как массив структур из 16-битных real и image полей:
беззнаковые?

тут нужны знаковые массивы, т.к. в них же функция пишет коэффициенты синусов и косинусов после БПФ. но идея понятна.
кстати вычислил мощность спектра по функции powerMag из примера - похоже на правду. разве что не понятно - почему размер массива lBUFMAG у них NPT+NPT/2. Ну и запись в той же функции
Код
lX= (lBUFOUT[i]<<16)>>16; /* sine_cosine --> cos */
просто поставила в ступор. Интересный способ обнулить старшие 2 байта

В асм не раскладывал но подозреваю что запись
Код
lX= lBUFOUT[i] & 0xFFFF
будет выполняться быстрее.
Также вычислял время обработки: 64 точки БПФ считает ~600мкс, мощность 6мс. Одуреть.

Надо будет подставить другую функцию извлечения квадратного корня.
в общем буду дальше разбираться.
Сообщение отредактировал Halfback - Oct 11 2012, 14:27