Fast-Fourier-Transformation

Muss ich multiplizieren von zwei Polynomen mit jeweils kleinen integralen Koeffizienten. Ich brauche eine schnelle FFT-routine in C/C++, die kann convolve Sie. Ich habe gesehen, dass mehrere Bibliotheken, aber Sie scheinen zu groß zu sein, verteilt über mehrere Dateien. Was wichtig ist ich brauche code ist nicht zu lang und kann sehr leicht verwendet und zusammengestellt in einem einzigen .c/.cpp - Datei.

  1. FFT optimiert werden sollte für real-Eingänge, zumindest dann, wenn nicht kleine zahlen.
  2. Radix-4-Implementierung, wenn verfügbar, würde auch in Ordnung sein.
  3. Kompilieren Sie sollten nehmen Sie keine spezielle Zusammenstellung der Flaggen Zusammenstellung des Programms hat zu sein getan, im externen Umfeld, die ich nicht kontrollieren kann.

Eine, die sehr gut passt zu meinen Bedürfnissen ist hier. Aber ich brauche etwas, was doppelt so schnell.

  • Was ist deine Frage? Ich brauche eine million Dollar. Außerdem mag ich Käse. VIEL.
  • Real Polynom convolution ist ein wichtiges problem in sich selbst und daher denke ich, dass seine Natürliche, diese Frage zu stellen. Ich brauche nicht die volle Leistung der FFT, sondern nur eine bestimmte Teilmenge und die Tatsache, dass es eine OS Implementierung fast passend meine Bedürfnisse, bedeutet, dass es nicht unrealistisch sei.
  • Wie groß sind die Polynome? FFT hat eine bessere Komplexität als die direkte Faltung, aber auch eine deutlich höhere Konstante, für die kleinen Probleme die direkte Faltung schneller gehen würde.
  • Ziemlich groß ist. Grad ist um 10^6. Ich bin sicher, dass ein O(N^2) Algorithmus wird nicht in einer angemessenen Frist.
InformationsquelleAutor Nikhil Garg | 2011-03-10
Schreibe einen Kommentar