SoatDev IT Consulting
SoatDev IT Consulting
  • About us
  • Expertise
  • Services
  • How it works
  • Contact Us
  • News
  • February 3, 2024
  • Rss Fetcher

Some readers will look at the title of this post and think “Ah yes, the FFT. I use it all the time. But what is this quadratic reciprocity?”

Others will look at the same title and think “Gauss called the quadratic reciprocity theorem the jewel in the crown of mathematics. But what is this FFT thing? I think I remember an engineer saying something about that.”

Gauss proved a theorem that relates quadratic reciprocity and the FFT:

left(frac{p}{q}right) left(frac{q}{p}right) = frac{text{Tr} {cal F}_{pq}}{ text{Tr} {cal F}_p, text{Tr} {cal F}_q}

I’ll spend the rest of this post unpacking this equation.

Legendre symbols

The expressions on the left are not fractions but rather Legendre symbols. The parentheses are not for grouping but are part of the symbol.

The Legendre symbol

left(frac{a}{r}right)

is defined to be 0 if a is a multiple of r, 1 if a has a square root mod r, and -1 otherwise.

Fourier transforms

The Discrete Fourier Transform (DFT) of a vector of length n multiplies the vector by the n by n Fourier matrix Fp whose j, k entry is equal to exp(2πijk/n). The Fast Fourier Transform (FFT) is a way to compute the DFT more quickly than directly multiplying by the Fourier matrix. Since the DFT is nearly always computed using the FFT algorithm, the DFT is commonly referred to as the FFT.

Matrix trace

The trace of a matrix is the sum of the elements along the main diagonal. So the trace of the Fourier matrix of size n is

text{Tr} {cal F}_n = sum_{j=1}^n exp(2pi ij^2/n)

Illustration

The quadratic reciprocity theorem, also due to Gauss, is usually stated as

left(frac{p}{q}right) left(frac{q}{p}right) = (-1)^{frac{p-1}{2}frac{q-1}{2}}

We won’t give a proof of the theorem at the top of the page but we will illustrate it numerically with the following Python code, using the quadratic reciprocity theorem to evaluate the product of the Legendre symbols.

from numpy import exp, pi

tr = lambda p: sum(exp(2j*pi*k**2/p) for k in range(1, p+1))
p, q = 59, 17
print( tr(p*q)/(tr(p)*tr(q)) )
print( (-1)**((p-1)*(q-1)/4) ) 

The first print statement produces (0.9999999999998136-1.4048176871018313e-13j) due to some loss of precision due to floating point calculations, but this is essentially 1, which is what the second print statement produces.

If we change q to 19, both statements print −1 (after rounding the first result).

Related posts

  • Computing Legendre and Jacobi symbols
  • Quadratic reciprocity algorithm

The post Connecting the FFT and quadratic reciprocity first appeared on John D. Cook.

Previous Post
Next Post

Recent Posts

  • OpenAI’s marketing head takes leave to undergo breast cancer treatment
  • Kaspersky Exposes Labubu Doll Scams on Fraudulent Sites
  • IRCAI & Zindi, in Partnership with AWS, Announce AI for Equity Challenge Winners
  • Questions about Gemini, Claude, and ChatGPT? Prompt engineering is the answer
  • How is Technology Modernizing Recruitment in Temporary Employment Services

Categories

  • Industry News
  • Programming
  • RSS Fetched Articles
  • Uncategorized

Archives

  • June 2025
  • May 2025
  • April 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023

Tap into the power of Microservices, MVC Architecture, Cloud, Containers, UML, and Scrum methodologies to bolster your project planning, execution, and application development processes.

Solutions

  • IT Consultation
  • Agile Transformation
  • Software Development
  • DevOps & CI/CD

Regions Covered

  • Montreal
  • New York
  • Paris
  • Mauritius
  • Abidjan
  • Dakar

Subscribe to Newsletter

Join our monthly newsletter subscribers to get the latest news and insights.

© Copyright 2023. All Rights Reserved by Soatdev IT Consulting Inc.