Я разрабатываю программное обеспечение C / C ++ для встраиваемой системы Linux с процессором AT91SAM9G20 от Atmel. Мне нужно быстро вычислить БПФ с использованием математики с фиксированной запятой (или, возможно, с плавающей запятой), используя программу Linux. Я понимаю, что ассемблер может быть подходящим для реализации способом, и что при компиляции с использованием компилятора gcc может потребоваться дополнительный ключ -mpcu. Каков наилучший способ продолжить эту реализацию, и есть ли хорошие справочники книг или оптимизированные библиотеки FOSS?
Мне нужно реализовать некоторые алгоритмы, которые также требуют, чтобы небольшая длина БПФ (т. Е. 1024 точки) применялась несколько раз, и мне хотелось бы знать, будут ли некоторые библиотеки (например, kissfft) работать так же хорошо. Меня также интересуют большие длины БПФ, так что FFTW, как предлагается в ответе ниже, также будет работать хорошо.
В связи с этим вопросом мне также интересно, как обрабатывается целочисленное деление в программе ARM9 для Linux. Если я разделю два целых числа (например, 25/4), будет ли деление с использованием мягких чисел с плавающей запятой? Мне также нужно реализовать некоторые алгоритмы сжатия больших чисел, и мне интересно, лучше ли использовать фиксированную точку здесь, чем математика с плавающей запятой, и как компилятор gcc действительно обрабатывает вещи.