Discrete Fourier Transform Calculator
Compute DFT, inverse DFT, FFT and IFFT for real or complex sequences up to 64 samples. Compare all bins, inspect magnitudes, share inputs and export results.
Enter values to calculate.
Trust summary CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance · all published modes
- Input interpretation
- Enter values to calculate.
- Result
- —
- Verified scope
- all published modes
- Assurance
- Core
- Declared partition coverage
- PASS · 7/7 declared partitions (scaled-components, numerical-range, dft, idft, fft, ifft, invalid-domain) · Matrix
- Known limitations
- Core CVP does not include live graph, viewport, or pointer interaction.
- Model
- Direct DFT / IDFT and radix-2 FFT / IFFT of a length-N sequence, N≤64, with an engine-linked stem figure of |X[k]| or |x[n]|.
- Scope
- Direct O(N²) DFT/IDFT; radix-2 FFT/IFFT
- Verification
- Engine tested · Source checked · v1.2.3 · CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance · all published modes· View Manifest · CVP overview · Specification
- Versions
- Calculation 1.2.3 · CVP protocol 1.0.0-proposed · Evidence 2026-10-28.metric-scope-v3
- Verification revision
- 2026-10-28.metric-scope-v3 · 1/1 property · digest 260dbe79dcfc
- Legacy regression
- 17/17 tests · Production surface contract 6/6
- Trust layers
- Verification VERIFIED · Production CURRENT · Overall CVP state: VERIFIED under CVP 1.0.0-proposed
- Reference
- O1 model · O2 expected_values · O2 expected_values · O2 numerical_behavior
- Interfaces
- PASS · UI (SSR) / REST / MCP
- Supplemental domain review
- Not performed
- Named expert review
- Not performed
- CVP suite
- 145/145 golden · 3/3 CVP boundary · 14/14 invalid · 1/1 property · 2/2 metamorphic · 7/7 cross-interface · 6/6 CVP contract · Manifest
- Sources
- ISO 80000-2:2019 Quantities and units — Mathematics
- Oppenheim & Schafer, Discrete-Time Signal Processing — DFT / radix-2 FFT, Numpy backward normalization
- NumPy — Discrete Fourier Transform
- Evidence
- 6 legacy golden · 3 legacy boundary · legacy regression suite · 145/145 oracle-backed golden · 14/14 invalid · Artifact integrity PASS
- Semantic contract
- PASS
Full verification
Formulas
Core equations used by this calculator.
How to use
Choose DFT, IDFT, FFT, or IFFT
Enter a real list (optional im of the same length). N must be 1–64. FFT/IFFT also require N=2^k.
Read X[k] or x[n]
Impulse → all ones. DC → N at bin 0. Round-trip recovers the samples. The stem figure shows |X[k]| (forward) or |x[n]| (inverse), marker at index 0.
Example calculations
Common configurations with formula and result.
Impulse
samples = 1,0,0,0
DC
samples = 1,1,1,1
Inverse DC
mode=idft, samples = 4,0,0,0
Discrete Fourier Transform calculator specification
Version 1.2.3 · Engine tested
- Engine tested 17/17 tests · Production surface contract 6/6
- Named expert review Not performed
- Calculation version 1.2.3
- Definition
- The unnormalized DFT is X[k]=Σ_n x[n] e^{−2πi kn/N}. The inverse (Numpy backward) is x[n]=(1/N) Σ_k X[k] e^{2πi kn/N}. Direct O(N²) for any N≤64; radix-2 Cooley–Tukey when N=2^k. Discovery /dft, /inverse-dft, /fft, /ifft. Not Laplace. Not Z. Not CAS.
- What it calculates
- Direct DFT / IDFT and radix-2 FFT / IFFT of a length-N sequence, N≤64, with an engine-linked stem figure of |X[k]| or |x[n]|.
- Inputs
- mode
- samples
- im?
- Outputs
- n
- re
- im
- mag
- algorithm
- normalization
- Formula
X[k]=Σ x[n] e^{−2πi kn/N}; x[n]=(1/N) Σ X[k] e^{2πi kn/N}- Assumptions
- Direct O(N²) DFT/IDFT; radix-2 FFT/IFFT
- Numpy backward normalization
- N ≤ 64; FFT N = 2^k
- The Result Card includes an engine-linked stem figure of |X[k]| (forward) or |x[n]| (inverse); marker is index 0. Same mag as REST/MCP.
- Not Laplace / Z
- Not CAS
- Units
- dimensionless
- Boundary conditions
- empty samples → INVALID_INPUT
- N > 64 → INVALID_INPUT
- im length mismatch → INVALID_INPUT
- N not a power of 2 on FFT → INVALID_INPUT
- unknown mode (including laplace, cas) → INVALID_MODE
- Example
- mode=dft samples=1,0,0,0 → X=[1,1,1,1]
- Validation cases
3 published on this page · 17/17 tests · Production surface contract 6/6 · View evidence
- mode=dft samples=1,0,0,0 → re=[1,1,1,1]
- mode=dft samples=1,1,1,1 → re=[4,0,0,0]
- mode=fft samples=1,0,0,0 → re=[1,1,1,1]
- Sources
- ISO 80000-2:2019 Quantities and units — MathematicsSupports: Mathematical symbols and notation. This standard is not numerical verification or an endorsement of this implementation.
- Oppenheim & Schafer, Discrete-Time Signal Processing — DFT / radix-2 FFT, Numpy backward normalizationSupports: X[k]=Σ x[n] e^{−2πi kn/N}; inverse 1/N; radix-2 Cooley–Tukey when N=2^k
- NumPy — Discrete Fourier TransformSupports: DFT and inverse-DFT definitions, frequency ordering, and backward normalization; does not establish this implementation’s accuracy.
- ISO 80000-2:2019 Quantities and units — Mathematics
- Calculation version
- 1.2.3
Background
Interpretation and common distinctions.
What does this discrete fourier transform calculator compute?
The unnormalized DFT is X[k]=Σ_n x[n] e^{−2πi kn/N}. The inverse (Numpy backward) is x[n]=(1/N) Σ_k X[k] e^{2πi kn/N}. Direct O(N²) for any N≤64; radix-2 Cooley–Tukey when N=2^k.
The published formula or method is X[k]=Σ x[n] e^{−2πi kn/N}; x[n]=(1/N) Σ X[k] e^{2πi kn/N}. The following references support the stated mathematics or method:
- NumPy — Discrete Fourier Transform: DFT and inverse-DFT definitions, frequency ordering, and backward normalization; does not establish this implementation’s accuracy.
Which inputs and limits should you check?
Retain the full complex sequence and distinguish the unnormalized forward transform from the 1/N inverse normalization. FFT presets also impose the stated sequence-length restrictions.
The worked example uses samples = 1,0,0,0 with X = [1, 1, 1, 1]. Compare it with the Example calculations and the complete result for the same inputs.
How can you verify and cite this result?
CalculatorX is responsible for this page. The mathematical references above explain the model; implementation checks and their scope are documented separately in the math.transform.dft v1.2.3 Evidence and capability contract. Read the displayed verification and production state together with the specification's numerical limits.
Use the clean calculator URL to cite the tool. A shared input link identifies a particular calculation. Content updates, numerical verification, and domain reviews have separate dates and scopes.
Numerical precision and input policy
Use 1–64 finite binary64 samples; FFT/IFFT require a power-of-two length. Decimal scalar, CSV/JSON sequence, real array, [re, im] pairs, and objects with re/im are supported. Optional im must have the same length. Supplied samples/x/re, mode/method, and embedded/separate imaginary components must agree; malformed lists, empty required values and unknown fields are rejected. Locked entry presets choose their displayed mode.
Forward transforms are unnormalized; inverse transforms divide by N. Exact dyadic sums and products of binary64 samples and binary64 twiddle approximations avoid intermediate overflow and preserve cancellation in these operations. Cardinal roots of unity are exact. Other trigonometric factors remain approximate: this is a floating-point transform, not an exact symbolic transform. Input echoes preserve binary64 precision; output components and magnitudes publish 12 significant digits.
The independent listed-fixture comparison uses component relative 1e-8 plus spectrum-peak absolute 1e-12, allowing four smallest subnormal ulps. This is a verification budget, not a per-input error bound. Relative accuracy can weaken near zero bins or cancellation, even though the transform has good normwise conditioning. Nonzero decimal input that converts to zero returns NUMERIC_UNDERFLOW. A nonzero evaluated output component that rounds to zero, or a nonfinite output/magnitude, returns NUMERICAL_RANGE_ERROR; roundoff near a mathematical zero can also trigger this refusal at extreme scales.
The stem plot shows magnitudes by discrete bin/sample index, with index 0 highlighted. It is not a physical-frequency spectrum or phase plot. Bins too small relative to the peak can be visually indistinguishable from zero; the complete numeric sequence and exports retain their published values.
Ordinary calculations run locally. A shared URL sends inputs to the server and may appear in server logs; browser history may store results on this device. REST/MCP requests send inputs to the service. No zero-log, retention-period or processing-region guarantee is implied. Shared version labels identify the requested calculation; they do not provide an archived browser engine.
Related tools
Other calculators in this family: DFT Calculator, FFT Calculator, Inverse DFT Calculator, Inverse FFT Calculator, Inverse Laplace Calculator, Inverse Z Calculator, Laplace Transform Calculator, Z Transform Calculator . Explore all Transforms.
Frequently asked questions
Key distinctions behind the calculation.
Is this an FFT?
FFT is a mode on this engine (radix-2 Cooley–Tukey, N=2^k). Direct DFT is still O(N²) for arbitrary N≤64. Discovery /fft and /ifft. Not a second engine. Not CAS.
Is this Laplace or Z?
No. Laplace and Z are separate canonicals, not modes here. Not CAS.
Where does this run?
Locally in the browser by default. REST and MCP call the same discrete-fourier-transform engine.