¿Es una implementación radix-4 más rápida que una radix-2 FFT equivalentemente codificada? Y si es así, ¿por qué sería más rápido?
Depende. Teóricamente, puede guardar algunas multiplicaciones con un radix-4, ya que radix-4 tiene un 1/4 del número de mariposas y 3 mpy + 8 adiciones por mariposa (si está estructurado adecuadamente) y el radix 2 tiene 1 mpy + 2 agregados por mariposa .
Por lo tanto, en términos de multiplicaciones, es un poco mejor, sin embargo, existe una mayor complejidad en términos de estructura de código, manejo de excepciones, gestión de coeficientes, gestión de registros, direccionamiento de inversión de dígitos, etc.
Por lo tanto, solo es una ventaja si el número de mpy es el factor limitante que para la mayoría del hardware en estos días no es el caso.
el número neto de multiplicaciones y adiciones creo que es el mismo, pero la mariposa radix-4 se puede hacer todo en el banco de registros del procesador (creo que hay alrededor de 16 registros de punto flotante diferentes y necesita 8 para las partes real e imag de los 4 valores, 2 registros para los twiddles de pecado y coseno, y tal vez algún otro registro o dos para scratch). Esto es más rápido que hacerlo en la memoria.
En la raíz 2, el número de muestra es en términos de potencia de potencia 2 pero en la raíz 4 el número de muestras pertenece es una potencia de 4.