Skip to content
Back to skills

Fast Fourier Transform

ASecurity

Use when you must compute the frequency content of a sampled signal with the discrete Fourier transform or the radix-2 fast Fourier transform: apply the DFT definition for small N, use the Cooley-Tukey decomposition when N is a power of two, extract the magnitude and phase spectrum, and recover the time series with the inverse FFT. Produces the complex spectrum, the magnitude, phase, and power spectra, and the reconstructed signal with Parseval energy checks that gate spectral analysis of sam...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentspython

Works with

  • claude code

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 27, 2026

npx -y skills add ashfordeOU/aero-agent-skills --skill fast-fourier-transform --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fast Fourier Transform?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fast Fourier Transform
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ashfordeou-fast-fourier-transform/badge)](https://www.skillsdirectory.com/skills/ashfordeou-fast-fourier-transform)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fast-fourier-transform
description: "Use when you must compute the frequency content of a sampled signal with the discrete Fourier transform or the radix-2 fast Fourier transform: apply the DFT definition for small N, use the Cooley-Tukey decomposition when N is a power of two, extract the magnitude and phase spectrum, and recover the time series with the inverse FFT. Produces the complex spectrum, the magnitude, phase, and power spectra, and the reconstructed signal with Parseval energy checks that gate spectral analysis of sampled time series. Trigger: fast fourier transform, discrete fourier transform, cooley tukey, radix 2, magnitude spectrum, phase spectrum, inverse fft, frequency bin, parseval."
license: Apache-2.0
compliance: STANDARDS-REF
standards:
  - id: naca-tr-824
    reference-only: true
gated: false
domain: cross-cutting
pack: cross-cutting
compatibility: "agentskills.io SKILL.md; any SKILL.md host (Claude Code, Hermes, OpenClaw)"
metadata:
  domain: cross-cutting
  subdomain: numerics
  tags: [fast-fourier-transform, discrete-fourier-transform, cooley-tukey, radix-2, magnitude-spectrum, phase-spectrum, inverse-fft, parseval]
  version: 0.1.0
  author: Aero Agent Skills
---

# Fast Fourier Transform (cross-cutting/numerics/fast-fourier-transform)

Use when the task is transforming a sampled signal into its frequency
content: computing the DFT or the radix-2 FFT, extracting the
magnitude and phase spectrum, or inverting back to the time series.

## Domain quick reference

- DFT definition: X[k] = sum_{n=0}^{N-1} x[n] * exp(-2 pi i k n / N),
  one complex sinusoid per bin k. Worked anchor for N = 4 with
  x = [1, 2, 3, 4]: X = [10, -2+2i, -2, -2-2i]. The transform is
  exact by definition: it is a change of basis, not an approximation.
- Impulse anchor: x = [1, 0, 0, 0] gives X = [1, 1, 1, 1], all bins
  equal to one, because only the n = 0 sample contributes.
- Radix-2 Cooley-Tukey decomposition: requires N a power of two,
  splits the sequence into even and odd indexed samples, transforms
  each half recursively, and recombines with the twiddle factors
  exp(-2 pi i k / N). Cost drops from O(N^2) for the plain DFT to
  O(N log2 N). fft([1, 2, 3, 4]) equals dft([1, 2, 3, 4]) exactly in
  value: [10, -2+2i, -2, -2-2i].
- Inverse FFT: x[n] = (1/N) sum_{k=0}^{N-1} X[k] * exp(+2 pi i k n / N),
  the forward transform with the sign of the exponent flipped and a
  1/N scale. Round trip: ifft(fft(x)) == x; ifft([1, 1, 1, 1]) =
  [1, 0, 0, 0].
- Magnitude and phase spectrum: |X[k]| and arg(X[k]) per bin. A pure
  sine at bin k0 with N samples peaks at bins k0 and N-k0 with
  magnitude N/2: for x[n] = sin(pi n / 2), N = 8, the magnitude
  spectrum is 4.0 at bins 2 and 6 and near zero elsewhere; the phase
  is -pi/2 at bin 2 and +pi/2 at bin 6. A cosine at its bin gives
  phase 0.
- Parseval energy check: sum |x[n]|^2 = (1/N) sum |X[k]|^2. Worked
  anchor: x = [1, 2, 3, 4] gives 30 = 120/4, so parseval_ratio
  returns 1.0. Any transform implementation that breaks this ratio is
  wrong, no matter how clean the spectrum looks.
- All functions are deterministic and stdlib-only (math, cmath); no
  network, no third-party numerical libraries.

## Workflow

1. Collect the sampled sequence x (real or complex values) and its
   length N.
2. For a general N use the DFT definition (dft). For a power-of-two N
   use the radix-2 FFT (fft), which returns the same values in
   O(N log2 N) time.
3. Extract the magnitude, phase, and power spectra with
   magnitude_spectrum, phase_spectrum, and power_spectrum; identify
   the dominant bin k0 and its mirror N-k0.
4. Verify the transform: check parseval_ratio(x) equals 1.0 and the
   round trip ifft(fft(x)) recovers x within floating point
   tolerance.
5. Report the peak bin, its magnitude (N/2 for a pure sine), and the
   physical frequency k0 * fs / N when the sample rate fs is known.

## Pitfalls

- Calling fft or ifft on a non-power-of-two length: both raise
  ValueError; use dft for a general N. The spectrum helpers
  (magnitude_spectrum, phase_spectrum, power_spectrum) dispatch
  automatically and accept any N.
- Passing an empty sequence: every function raises ValueError; there
  is no spectrum of nothing.
- Confusing the DFT with numerical integration: quadrature rules
  (trapezoid, Simpson, Gauss-Legendre) approximate the integral of a
  function and carry error estimates; the DFT sums weighted samples
  and is exact by definition, with no quadrature error to estimate.
- Confusing the spectrum with interpolation: interpolation fits
  values between tabulated data points; the DFT is a global change of
  basis of the whole sequence into sinusoids, never a table lookup
  between bins.
- Confusing the transform with finite differences:
  finite-difference-derivatives estimates local slopes of a function
  with step-size truncation error; the FFT is a decomposition of a
  sequence into frequency components and produces no derivative
  estimates at all.
- Reading the peak bin as the physical frequency: bin k is the
  frequency k * fs / N, not k Hz, and for a real signal the mirror
  bin N-k duplicates the peak, so both bins report the same tone.
- Expecting a real spectrum from a real input: the spectrum is
  complex; only the magnitude is real, and the phase must be read
  from arg(X[k]), which the phase spectrum returns on (-pi, pi].
- Forgetting the 1/N scale on the inverse: ifft carries the 1/N;
  omitting it returns N times the original signal. The Parseval ratio
  and the round trip both catch this scaling error.

## Behavior contract (gate 3)

The DFT, radix-2 Cooley-Tukey FFT, inverse FFT, magnitude, phase, and
power spectra, and the Parseval energy check are exercised by the
gate 3 contract test: scripts/test_fast_fourier_transform.py against
scripts/fast_fourier_transform_logic.py (stdlib unittest, offline,
27 cases). Run: python3 scripts/test_fast_fourier_transform.py

## Compliance

- Standards referenced, not reproduced: NACA TR-824 anchors the
  pack's public-domain reference set; the DFT and the Cooley-Tukey
  decomposition are classical numerical-analysis methodology
  (Abramowitz and Stegun), summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.

Files in this skill

  • SKILL.md6.1 KB
  • scripts/fast_fourier_transform_logic.py6.1 KB
  • scripts/test_fast_fourier_transform.py8.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…