CS 294-73 Software Engineering for Scientific Computing Guest - - PowerPoint PPT Presentation
CS 294-73 Software Engineering for Scientific Computing Guest - - PowerPoint PPT Presentation
CS 294-73 Software Engineering for Scientific Computing Guest Lecture: The Discrete Fourier Transform Doru Thom Popovici <latexit
x[n]
<latexit sha1_base64="XOABTpY1U4xvcE3evEjtmvulCDI=">AB63icbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9IQ5lMJ+3QmUmYmYgl9BfcuFDErT/kzr8xSYOo9cCFwzn3cu89fsSZNrb9aZWldW18rlY3Nre2d6u5eR4exIrRNQh6qno815UzStmG016kKBY+p1/cp353XuqNAvlnZlG1BN4JFnACDaZ9OBKb1Ct2XU7B1okTkFqUKA1qH70hyGJBZWGcKy169iR8RKsDCOczir9WNMIkwkeUTelEguqvS/dYaOUmWIglClJQ3K1Z8TCRZaT4Wfdgpsxvqvl4n/eW5sgsvYTKDZVkviIOTIhyh5HQ6YoMXyaEkwUS29FZIwVJiaNp5KHcJnh7PvlRdI5qTun9cZto9a8KuIowEcwjE4cA5NuIEWtIHAGB7hGV4sYT1Zr9bvLVkFTP78AvW+xcuVo54</latexit>- Given a continuous function , its Fourier transform is defined as
- The inverse Fourier transform is defined as
The Discrete Fourier Transform
1
ˆ x[k] =
N−1
X
n=0
x[n]e−i 2π
N kn, ∀
0 ≤ k < N
<latexit sha1_base64="YGj54hj8biR3Jivrlx3Jby2/lZU=">ACPnicbVBNaxRBEO2JX3H92ujRS+EieDLTBI0gkLQi6clgpsEpidLTW9Ntpmenkl3j2Rp5pd58Td48+jFgyJePdq7WUSNDxpev1dFVb28UdK6OP4UrV26fOXqtfXrvRs3b92+09+4e2Dr1gai1rV5ihHS0pqGjvpFB01hrDKFR3m5auFf/iOjJW1fuvmDWUVnmhZSIEuSJP+mM/Q+bMuLTN4Ady21bEfbSbdxOvwjzs4S3UGdOw3JfDCoPBbvJGdH3VQgu4e86I2qBQ/bXEKMVd0CuXz0aQ/iIfxEnCRJCsyYCvsT/of+bQWbUXaCYXWpkncuMyjcVIo6nq8tdSgKPGE0kA1VmQzvzy/g4dBmUJYJDztYKn+2eGxsnZe5aGyQjez/3oL8X9e2rpiN/NSN60jLc4HFa0CV8MiS5hKQ8KpeSAojAy7gphCMmFxHvLEJ4t8OT3yRfJwdYw2R7uvNkZ7L1cxbHO7rMH7BFL2FO2x16zfTZmgr1n9lX9i36EH2Jvkc/zkvXolXPfYXop+/AEAprho=</latexit>x[n] = 1 N
N−1
X
k=0
ˆ x[k]ei 2π
N kn, ∀
0 ≤ n < N
<latexit sha1_base64="1GldZPDeBE6r6p2cTSilwsFl3Y=">ACRnicbVBNaxsxFHzrfiXul9scxE1hR5as5uGfkADobnkZBKok8BqY7Ty21isVruRtCVG7K/Lpefe+hNySGh9BqtbUrbdEAwzMzjPU1aSWFsGP4IOnfu3rv/YGW1+/DR4ydPe8+eH5iy1hxHvJSlPkqZQSkUjqywEo8qjaxIJR6m+U7rH35FbUSpvthZhUnBTpTIBGfWS+NecharhGwRmnGXdS4YUNXRy74ZuoGbt8K2wInTLrzpo4TwgeO7GIbtBKtGmSE9W8plmpmZT0tGYTElKJp0R9IsNxrx8OwjnIbRItSR+W2Bv3vtNJyesCleWSGRNHYWUTx7QVXGLTpbXBivGcnWDsqWIFmsTNa2jIS69MiL/EP2XJXP1zwrHCmFmR+mTB7NT867Xi/7y4tmHxAlV1RYVXyzKaklsSdpOyURo5FbOPGFcC38r4VPmW7K+e68hI8t3v3+8m1ysDGI3g429zf725+XdazAOryAVxDBe9iGXdiDEXA4hwu4guvgW3AZ/Ax+LaKdYDmzBn+hAzewebFl</latexit>The Discrete Fourier Transform – Change of Basis
2
- It maps a signal/function from the time/space domain to the frequency domain
Time domain Frequency domain
ˆ x[k] =
N−1
X
n=0
x[n]e−i 2π
N kn
<latexit sha1_base64="AbEnM6/Ty6HhApZSZF3NVYSw+fc=">ACJ3icbVDLSgMxFM3UV62vqks3wSK4scxo8bFQim5ciYK1hZlpyaQZG5rJDElGWsL8jRt/xY2gIr0T8zUIr4OXDg515y7wkSRqWy7TerMDE5NT1TnC3NzS8sLpWXV65knApMGjhmsWgFSBJGOWkoqhpJYKgKGCkGfRPcr95Q4SkMb9Uw4T4EbrmNKQYKSN1ykdeDyk9yNy+Dw+hJ9Oorc+2nKyjuXnbGRy43Iekrbco9EKBsN72Eprpswz2Ic865YpdtUeAf4kzJhUwxnmn/Oh1Y5xGhCvMkJSuYyfK10goihnJSl4qSYJwH10T1COIiJ9PbozgxtG6cIwFqa4giP1+4RGkZTDKDCdEVI9+dvLxf8N1Xhvq8pT1JFOP78KEwZVDHMQ4NdKghWbGgIwoKaXSHuIZOGMtGWRiEc5Nj9OvkvudquOjvV2kWtUj8ex1Ea2AdbAIH7IE6OAXnoAEwuAX34Ak8W3fWg/VivX62FqzxzCr4Aev9A1FopSI=</latexit>ˆ x[k]
<latexit sha1_base64="+l/DcmlgqPQjZ+7+nbJhahKkfOs=">AB8XicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9MQ5lMJ+3QySTMTMQS+hduXCji1r9x5984SYP4OnDhcM693HuPH3OmtG1/WKWFxaXlfJqZW19Y3Orur3TUVEiCW2TiEey52NFORO0rZnmtBdLikOf064/ucz87h2VikXiRk9j6oV4JFjACNZGu2PsU7vZ+7EG1Rrdt3Ogf4SpyA1KNAaVN/7w4gkIRWacKyU69ix9lIsNSOczir9RNEYkwkeUdQgUOqvDS/eIYOjDJEQSRNCY1y9ftEikOlpqFvOkOsx+q3l4n/eW6igzMvZSJONBVkvihIONIRyt5HQyYp0XxqCaSmVsRGWOJiTYhVfIQzjOcfL38l3SO6s5xvXHdqDUvijKsAf7cAgOnEITrqAFbSAg4AGe4NlS1qP1Yr3OW0tWMbMLP2C9fQL7kpFC</latexit>x[n]
<latexit sha1_base64="XOABTpY1U4xvcE3evEjtmvulCDI=">AB63icbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9IQ5lMJ+3QmUmYmYgl9BfcuFDErT/kzr8xSYOo9cCFwzn3cu89fsSZNrb9aZWldW18rlY3Nre2d6u5eR4exIrRNQh6qno815UzStmG016kKBY+p1/cp353XuqNAvlnZlG1BN4JFnACDaZ9OBKb1Ct2XU7B1okTkFqUKA1qH70hyGJBZWGcKy169iR8RKsDCOczir9WNMIkwkeUTelEguqvS/dYaOUmWIglClJQ3K1Z8TCRZaT4Wfdgpsxvqvl4n/eW5sgsvYTKDZVkviIOTIhyh5HQ6YoMXyaEkwUS29FZIwVJiaNp5KHcJnh7PvlRdI5qTun9cZto9a8KuIowEcwjE4cA5NuIEWtIHAGB7hGV4sYT1Zr9bvLVkFTP78AvW+xcuVo54</latexit>x[n] = 1 N
N−1
X
k=0
ˆ x[k]ei 2π
N kn
<latexit sha1_base64="hwkoM3v5ocBQP7G+OxFZ9HIWAoE=">ACLnicbVDLSsQwFE3H9/gadekmOAhuHFodfCwEUQRXouDoQFuHNJM6oWlaklQcQr/Ijb+iC0F3PoZp1BfB0IHM45l5t7gpRqWz72aqMjI6NT0xOVadnZufmawuLFzLJBCYtnLBEtAMkCaOctBRVjLRTQVAcMHIZRIeFf3lDhKQJP1f9lPgxuY0pBgpI3VqR7cu9+Ee9EKBsHZyfZJ7Mouv9Mm6k3d0tGfn0OshpW9zN/IhudJ0EN3wUlqkYQR53qnV7YZdAv4lzpDUwRCndqj101wFhOuMENSuo6dKl8joShmJK96mSQpwhG6Jq6hHMVE+ro8N4erRunCMBHmcQVL9fuERrGU/TgwyRipnvztFeJ/npupcMfXlKeZIhwPFoUZgyqBRXewSwXBivUNQVhQ81eIe8i0oUzD1bKE3QJbXyf/JRcbDWez0Txr1vcPhnVMgmWwAtaA7bBPjgGp6AFMLgD+AFvFr31pP1Zr0PohVrOLMEfsD6+ATsuKk/</latexit>The Circular Convolution
12
3
The Circular Convolution
12
4
ˆ x[k]
<latexit sha1_base64="+l/DcmlgqPQjZ+7+nbJhahKkfOs=">AB8XicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9MQ5lMJ+3QySTMTMQS+hduXCji1r9x5984SYP4OnDhcM693HuPH3OmtG1/WKWFxaXlfJqZW19Y3Orur3TUVEiCW2TiEey52NFORO0rZnmtBdLikOf064/ucz87h2VikXiRk9j6oV4JFjACNZGu2PsU7vZ+7EG1Rrdt3Ogf4SpyA1KNAaVN/7w4gkIRWacKyU69ix9lIsNSOczir9RNEYkwkeUdQgUOqvDS/eIYOjDJEQSRNCY1y9ftEikOlpqFvOkOsx+q3l4n/eW6igzMvZSJONBVkvihIONIRyt5HQyYp0XxqCaSmVsRGWOJiTYhVfIQzjOcfL38l3SO6s5xvXHdqDUvijKsAf7cAgOnEITrqAFbSAg4AGe4NlS1qP1Yr3OW0tWMbMLP2C9fQL7kpFC</latexit>ˆ h[k]
<latexit sha1_base64="IAw6GuUSDg+3BwtjQ8vJpCWmxfo=">AB8XicbVDLSsNAFJ3UV62vqks3g0VwVRItPnZFNy4r2AemoUymk3boZBJmboQS+hduXCji1r9x5984SYOo9cCFwzn3cu89fiy4Btv+tEpLyura+X1ysbm1vZOdXevo6NEUdamkYhUzyeaCS5ZGzgI1osVI6EvWNefXGd+94EpzSN5B9OYeSEZSR5wSsBI9/0xgXQ8cyfeoFqz63YOvEicgtRQgdag+tEfRjQJmQqiNauY8fgpUQBp4LNKv1Es5jQCRkx1BJQqa9NL94ho+MsRBpExJwLn6cyIlodbT0DedIYGx/utl4n+em0Bw4aVcxgkwSeLgkRgiHD2Ph5yxSiIqSGEKm5uxXRMFKFgQqrkIVxmOPt+eZF0TurOab1x26g1r4o4yugAHaJj5KBz1EQ3qIXaiCKJHtEzerG09WS9Wm/z1pJVzOyjX7DevwDjEpEy</latexit>ˆ y[k]
<latexit sha1_base64="DN73jmH109VNIai4aPtTfXB2Es=">AB8XicbVDLSsNAFJ3UV62vqks3g0VwVItPnZFNy4r2AemoUymk3boZBJmboQ+hduXCji1r9x5984SYOo9cCFwzn3cu89XiS4Btv+tEpLyura+X1ysbm1vZOdXevq8NYUdahoQhV3yOaCS5ZBzgI1o8UI4EnWM+bXmd+74EpzUN5B0nE3ICMJfc5JWCk+8GEQJrMnKk7rNbsup0DL5JGQWqoQHtY/RiMQhoHTAIVRGunYUfgpkQBp4LNKoNYs4jQKRkzx1BJAqbdNL94ho+MsJ+qExJwLn6cyIlgdZJ4JnOgMBE/Uy8T/PicG/cFMuoxiYpPNFfiwhDh7H4+4YhREYgihiptbMZ0QRSiYkCp5CJcZzr5fXiTdk3rjtN68bdZaV0UcZXSADtExaqBz1EI3qI06iCKJHtEzerG09WS9Wm/z1pJVzOyjX7DevwD9GpFD</latexit>The Circular Convolution
Precomputed Values/Closed Form Function
12
5
ˆ x[k]
<latexit sha1_base64="+l/DcmlgqPQjZ+7+nbJhahKkfOs=">AB8XicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9MQ5lMJ+3QySTMTMQS+hduXCji1r9x5984SYP4OnDhcM693HuPH3OmtG1/WKWFxaXlfJqZW19Y3Orur3TUVEiCW2TiEey52NFORO0rZnmtBdLikOf064/ucz87h2VikXiRk9j6oV4JFjACNZGu2PsU7vZ+7EG1Rrdt3Ogf4SpyA1KNAaVN/7w4gkIRWacKyU69ix9lIsNSOczir9RNEYkwkeUdQgUOqvDS/eIYOjDJEQSRNCY1y9ftEikOlpqFvOkOsx+q3l4n/eW6igzMvZSJONBVkvihIONIRyt5HQyYp0XxqCaSmVsRGWOJiTYhVfIQzjOcfL38l3SO6s5xvXHdqDUvijKsAf7cAgOnEITrqAFbSAg4AGe4NlS1qP1Yr3OW0tWMbMLP2C9fQL7kpFC</latexit>ˆ h[k]
<latexit sha1_base64="IAw6GuUSDg+3BwtjQ8vJpCWmxfo=">AB8XicbVDLSsNAFJ3UV62vqks3g0VwVRItPnZFNy4r2AemoUymk3boZBJmboQS+hduXCji1r9x5984SYOo9cCFwzn3cu89fiy4Btv+tEpLyura+X1ysbm1vZOdXevo6NEUdamkYhUzyeaCS5ZGzgI1osVI6EvWNefXGd+94EpzSN5B9OYeSEZSR5wSsBI9/0xgXQ8cyfeoFqz63YOvEicgtRQgdag+tEfRjQJmQqiNauY8fgpUQBp4LNKv1Es5jQCRkx1BJQqa9NL94ho+MsRBpExJwLn6cyIlodbT0DedIYGx/utl4n+em0Bw4aVcxgkwSeLgkRgiHD2Ph5yxSiIqSGEKm5uxXRMFKFgQqrkIVxmOPt+eZF0TurOab1x26g1r4o4yugAHaJj5KBz1EQ3qIXaiCKJHtEzerG09WS9Wm/z1pJVzOyjX7DevwDjEpEy</latexit>ˆ y[k]
<latexit sha1_base64="DN73jmH109VNIai4aPtTfXB2Es=">AB8XicbVDLSsNAFJ3UV62vqks3g0VwVItPnZFNy4r2AemoUymk3boZBJmboQ+hduXCji1r9x5984SYOo9cCFwzn3cu89XiS4Btv+tEpLyura+X1ysbm1vZOdXevq8NYUdahoQhV3yOaCS5ZBzgI1o8UI4EnWM+bXmd+74EpzUN5B0nE3ICMJfc5JWCk+8GEQJrMnKk7rNbsup0DL5JGQWqoQHtY/RiMQhoHTAIVRGunYUfgpkQBp4LNKoNYs4jQKRkzx1BJAqbdNL94ho+MsJ+qExJwLn6cyIlgdZJ4JnOgMBE/Uy8T/PicG/cFMuoxiYpPNFfiwhDh7H4+4YhREYgihiptbMZ0QRSiYkCp5CJcZzr5fXiTdk3rjtN68bdZaV0UcZXSADtExaqBz1EI3qI06iCKJHtEzerG09WS9Wm/z1pJVzOyjX7DevwD9GpFD</latexit>! 𝒊 [ 𝒍 ] c a n b e a n y t h i n g
Not Only Circular Convolution
- Time Shift
- Convolution
- Correlation
- Time Difference
- Differentiation
13
6
y[n] = x[n − n0] ↔ ˆ y[k] = ˆ x[k] · e−i 2π
N nok
<latexit sha1_base64="YXAHRpciV1ZUmF7SKN58IiPTG3k=">ACQXicbVBNb9QwFHRa+sFCy1KOvVisKnHpKluqfhwqVXDhVBWJbVdKQuR4X3atdezIfimNovy1XvgH3Lhz4QCqeuWCk6qQjuSpXkz82R7klwKi7/3VtYfLK0vL6tPs+dr6i+7LjTOrC8NhyLXUZpQwC1IoGKJACaPcAMsSCefJ7H3jn1+AsUKrT1jmEGVsokQqOEMnxd1RGaiIHtHLQG2r2I9oKCFIyZTZMboLzScMqzKOpg1qXa4bIeQjzVS+FxtizA1jFc7YS7q6qSmKtZ0Vsfdnt/3W9CHZDAnPTLHadz9Fo41LzJQyCWzNhj4OUYVMyi4hLoTFhZyxmdsAoGjimVgo6ptoKZbThnTVBt3FNJWvb9RsczaMktcMmM4tf97jfiYFxSYHkSVUHmBoPjtRWkhKWra1EnHwgBHWTrCuBHurZRPmesDXemdtoTDBnt3X35Iznb6g7f93Y+7veN38zpWySZ5Td6QAdknx+QDOSVDwskV+UF+kd/eV+nd+3d3EYXvPnOK/IPvD9/AfrDsLg=</latexit>y[n] = x[n] ~ h[n] ↔ ˆ y[k] = ˆ x[k] · ˆ h[k]
<latexit sha1_base64="F51RMZynmrQ7XJdVOJvruLo3xK8=">ACPHicbVBNT9wEHWAFth+sNAjF4tVpZ5W2RbR9oCE4MIRVBaQkmg1cZyNtY4d2RNKFO0P49If0RsnLj20Qlw518muEJQ+yfKbNzOamRcXUlj0/WtvYXHpxcvldXOq9dv3q51zdOrS4N40OmpTbnMVguheJDFCj5eWE45LHkZ/HkoMmfXBjhVYnWBU8ymGsRCoYoJNG3W9VoCK6Sy/dFzJhmOQJWKRZE0ueohHjDMEY/Z2GWBdTYNJ09AGl20QskTjTMgaYdTt+X2/BX1OBnPSI3Mcjbo/w0SzMucKmQRrg4FfYFSDQeH2mXbC0vIC2ATGPHBUQc5tVLfHT+l7pyQ01cY9hbRVH3fUkFtb5bGrzAEz+2+uEf+XC0pMv0S1UEWJXLHZoLSUFDVtnKSJMJyhrBwBZoTblbIMDB0fndaE742Hk4+Tk5/dgfOpvH2/39vbndqyQTbJFPpAB+Uz2yCE5IkPCyBW5Ib/JH+H98u79e5mpQvevOcdeQLv/i+GfK+r</latexit>y[n] = x[n] ? h[n] ↔ ˆ y[k] = ˆ x[k] · ˆ h∗[k]
<latexit sha1_base64="58E80I2ojbTiLOzq7R9qrJLp06M=">ACOHicbVDPb9MwGHUKG6WMLWPHXSwqJMShSlm1wQGpYhduK9L6Q0pC5bhOY9WxI/sLaxT1z+LCn7HbxIUDaNqVv2BOWiGgPMny+973PtnfizLBDXjejdN48HBn91HzcevJ3tP9A/fw2cioXFM2pEoPYmIYJLNgQOgk0yzUgaCTaOFudVf/yZacOVvIQiY2FK5pLHnBKw0tS9KHwZ4nd4a/ANE4qZhgMWg+T6yg1RUOEgJlsfIXlbUulnUR0JmCtZCsPr2y0tRtex2vBt4m3Q1pow0GU/c6mCmap0wCFcQYv+tlEJZEA6eCrVpBblhG6ILMmW+pJCkzYVkvsIvrDLDsdL2SMC1+udESVJjijSyzpRAYv7tVeL/en4O8Zuw5DLgUm6fijOBQaFqxTxjGtGQRSWEKq5/SumCdGEgs26VYfwtsLp75W3yeh1p3vS6X3stfvN3E0TF6jl6iLjpDfQBDdAQUfQFfUM/0E/nq/PduXu1taGs5k5Qn/B+XUPnkqtpw=</latexit>N−1
X
l=0
αl · y[n − l] =
M−1
X
l=0
βl · x[n − l] ↔ ˆ y[k] = ˆ x[k] · PM−1
l=0
βl · e−i 2π
N lk
PN−1
l=0 αl · e−i 2π
N lk
<latexit sha1_base64="50WIohXVZPWkMq2cPS+QnfuGw8g=">AC5HichVJLb9QwEHbCqyvBY5cLFZIXHaVtBW0B6QKLlyoisS2lTZpNPE6G2udh+wJNLJy5sIBhLjyo7jxW7jgPFRSsVIlr6Z+b6xZ8ZxKYVGz/vpuFeuXrt+Y+Pm6NbtO3fvje8/ONRFpRifs0IW6jgGzaXI+RwFSn5cKg5ZLPlRvH7V5o/ec6VFkb/DuRhBqtcJIB2lA0/hXoKjsx+1O/iYykL6jX0ABkmUIkA7YskNaLnE6pDG2u5745x405nlFPB2ogeYJKrFIEpYoPNEgBTd0s1l2R1jltnU4UJAqYubwy7UvzEzMVPXczKEVj9hsq6bpzH8buFQajSfezOuMXgT+ACZksINo/CNYFqzKeI5MgtYL3ysxNKBQMmbUVBpXgJbw4ovLMwh4zo03ZIa+sRGljQplD050i76p8JApnWdxZaZAab671wb/FduUWGyExqRlxXynPUXJZWkWNB243QpFGcoawuAKWHfSlkKdhxo/8WoG8Jua8/OWr4IDjdn/tZs+32ZO/lMI4N8og8Jk+JT56TPfKaHJA5YQ4H53Pzhc3cT+5X91vPdV1Bs1Dcs7c78B5rzoBg=</latexit>y(t) = d dtx(t)|t=kn ↔ ˆ y[k] = ˆ x[k] · ˆ h[k]
<latexit sha1_base64="Fk497dHl6/q70c056paC308Yk=">ACQ3icbZBPb9MwGMadMWB0wAocuVirkLpLlbJqjAPStF12LNL6RzR5ThOY9WxI/vNaBTy3bjsC+zGF9hlh0T10lz0moCyiNZet7f+76y/QSp4AZc95ez8WTz6bPnWy8a2y9fvd5pvnk7NCrTlA2oEkqPA2KY4JINgINg41QzkgSCjYL5SdUfnTNtuJnkKfMT8hM8ohTAhZNm9/yNuzhL9iLNKFWBYhlAuLfkwLsHguS+wJFoHmsxiI1uo79mICRV5O5n61VxWLuvBoqGAJ4gpMmy2349bC6a7Mi20Un/avPRCRbOESaCGDPpuin4BdHAqWBlw8sMSwmdkxmbWCtJwoxf1BmU+IMlIY6UtkcCrumfGwVJjMmTwE4mBGLzb6+C/+tNMogO/YLNAMm6fKiKBMYFK4CxSHXjILIrSFUc/tWTGNi0wQbe6MO4XOlg8cvr5vhx053v9P72msdHa/i2ELv0S5qoy76hI7QKeqjAaLoJ7pCN+jWuXCunTvn93J0w1ntvEN/ybl/ADqxseg=</latexit>x[n]
<latexit sha1_base64="XOABTpY1U4xvcE3evEjtmvulCDI=">AB63icbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9IQ5lMJ+3QmUmYmYgl9BfcuFDErT/kzr8xSYOo9cCFwzn3cu89fsSZNrb9aZWldW18rlY3Nre2d6u5eR4exIrRNQh6qno815UzStmG016kKBY+p1/cp353XuqNAvlnZlG1BN4JFnACDaZ9OBKb1Ct2XU7B1okTkFqUKA1qH70hyGJBZWGcKy169iR8RKsDCOczir9WNMIkwkeUTelEguqvS/dYaOUmWIglClJQ3K1Z8TCRZaT4Wfdgpsxvqvl4n/eW5sgsvYTKDZVkviIOTIhyh5HQ6YoMXyaEkwUS29FZIwVJiaNp5KHcJnh7PvlRdI5qTun9cZto9a8KuIowEcwjE4cA5NuIEWtIHAGB7hGV4sYT1Zr9bvLVkFTP78AvW+xcuVo54</latexit>- Given a continuous function , its Fourier transform is defined as
- Important mathematical kernel
- How to efficiently compute it?
The Discrete Fourier Transform
7
ˆ x[k] =
N−1
X
n=0
x[n]e−i 2π
N kn, ∀
0 ≤ k < N
<latexit sha1_base64="YGj54hj8biR3Jivrlx3Jby2/lZU=">ACPnicbVBNaxRBEO2JX3H92ujRS+EieDLTBI0gkLQi6clgpsEpidLTW9Ntpmenkl3j2Rp5pd58Td48+jFgyJePdq7WUSNDxpev1dFVb28UdK6OP4UrV26fOXqtfXrvRs3b92+09+4e2Dr1gai1rV5ihHS0pqGjvpFB01hrDKFR3m5auFf/iOjJW1fuvmDWUVnmhZSIEuSJP+mM/Q+bMuLTN4Ady21bEfbSbdxOvwjzs4S3UGdOw3JfDCoPBbvJGdH3VQgu4e86I2qBQ/bXEKMVd0CuXz0aQ/iIfxEnCRJCsyYCvsT/of+bQWbUXaCYXWpkncuMyjcVIo6nq8tdSgKPGE0kA1VmQzvzy/g4dBmUJYJDztYKn+2eGxsnZe5aGyQjez/3oL8X9e2rpiN/NSN60jLc4HFa0CV8MiS5hKQ8KpeSAojAy7gphCMmFxHvLEJ4t8OT3yRfJwdYw2R7uvNkZ7L1cxbHO7rMH7BFL2FO2x16zfTZmgr1n9lX9i36EH2Jvkc/zkvXolXPfYXop+/AEAprho=</latexit>- Apply a DFT of size 16 on the input vector 𝑦
Cooley-Tukey for The DFT of Size 16
8
x
<latexit sha1_base64="30P4nwdawvL2qXr06tn9rtYMLMY=">AB6HicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKbly2YB/QhjKZTtqxk0mYmYgl9AvcuFDErZ/kzr9xkgZR64ELh3Pu5d57vIgzpW370yosLa+srhXSxubW9s75d29tgpjSWiLhDyUXQ8rypmgLc0p91IUhx4nHa8yXqd+6pVCwUt3oaUTfAI8F8RrA2UvNhUK7YVTsDWiROTiqQozEof/SHIYkDKjThWKmeY0faTbDUjHA6K/VjRSNMJnhEe4YKHFDlJtmhM3RklCHyQ2lKaJSpPycSHCg1DTzTGWA9Vn+9VPzP68Xav3ATJqJYU0Hmi/yYIx2i9Gs0ZJISzaeGYCKZuRWRMZaYaJNKQvhMsXZ98uLpH1SdU6rtWatUr/K4yjCARzCMThwDnW4gQa0gACFR3iGF+vOerJerbd5a8HKZ/bhF6z3L/9TjTQ=</latexit>ˆ x[k] =
15
X
n=0
x[n]e−i 2π
16 kn
<latexit sha1_base64="fzGq2mnRqNtuV1wA2Y6OISwnEI=">ACJ3icbVDLSgMxFM3UV62vqks3wSK4sczU90IpunFZwVZhZloyaYNzWSGJCMtYf7Gjb/iRlARXfonpg/E14ELJ+fcS+49QcKoVLb9buWmpmdm5/LzhYXFpeWV4upaQ8apwKSOYxaLmwBJwigndUVIzeJICgKGLkOeudD/qWCEljfqUGCfEj1OE0pBgpI7WKp14XKd3P3J4PT6An06ipnf2spbl52hnsu9yHpKl3KPRCgbCueAnNtHOQwR7kWatYsv2CPAvcSakBCaotYpPXjvGaUS4wgxJ6Tp2onyNhKYkazgpZIkCPdQh7iGchQR6evRnRncMkobhrEwxRUcqd8nNIqkHESB6YyQ6srf3lD8z3NTFR75mvIkVYTj8UdhyqCK4TA02KaCYMUGhiAsqNkV4i4ycSgTbWEUwvEQB18n/yWNStnZLe9d7pWqZ5M48mADbIJt4IBDUAUXoAbqAIM78ACewYt1bz1ar9buDVnTWbWwQ9YH58ObKT1</latexit>ˆ e[k] =
7
X
n=0
x[2 · n]e−i 2π
8 kn
<latexit sha1_base64="x8hGrHrMBop3iArdk/RxfQyg6wo=">ACLXicbVDBShxBEO0xJjEbEzfJ0UvhIuTiMrsuUQ8BSTx4VHBVmBmXnt4at9menqG7RrI080O5FdE8GAIufob9q6LmOiDgtfvVdFVLy2VtBSGN8HCi8WXr14vWm8X73fqX54eOxLSojsC8KVZjTlFtUmOfJCk8LQ3yPFV4ko6/T/2TCzRWFvqIJiUmOT/XMpOCk5cGzb14xMlhHY0T+AqxrfIzt1UPnPavsIYfURdiMSwIdAJ45jYkxJnhwnXjUtZu4Yx6HrQbIXtcAZ4Sjpz0mJzHAyaV/GwEFWOmoTi1kadsKTEcUNSKwbcWx5GLMzHyVPMcbeJm19aw7pUhZIXxpQlm6uMJx3NrJ3nqO3NOI/u/NxWf86Ksu3ESV1WhFrcf5RVCqiAaXQwlAYFqYknXBjpdwUx4j4N8gE3ZiHsTPHl4eSn5Ljb7my2e4e91u63eRxLbJWtsc+sw7bYLtnB6zPBPvJLtkN+x38Cq6DP8Hf+9aFYD7zif2D4PYOgfenOA=</latexit>- Apply a DFT of size 16 on the input vector 𝑦
Cooley-Tukey for The DFT of Size 16
9
x
<latexit sha1_base64="30P4nwdawvL2qXr06tn9rtYMLMY=">AB6HicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKbly2YB/QhjKZTtqxk0mYmYgl9AvcuFDErZ/kzr9xkgZR64ELh3Pu5d57vIgzpW370yosLa+srhXSxubW9s75d29tgpjSWiLhDyUXQ8rypmgLc0p91IUhx4nHa8yXqd+6pVCwUt3oaUTfAI8F8RrA2UvNhUK7YVTsDWiROTiqQozEof/SHIYkDKjThWKmeY0faTbDUjHA6K/VjRSNMJnhEe4YKHFDlJtmhM3RklCHyQ2lKaJSpPycSHCg1DTzTGWA9Vn+9VPzP68Xav3ATJqJYU0Hmi/yYIx2i9Gs0ZJISzaeGYCKZuRWRMZaYaJNKQvhMsXZ98uLpH1SdU6rtWatUr/K4yjCARzCMThwDnW4gQa0gACFR3iGF+vOerJerbd5a8HKZ/bhF6z3L/9TjTQ=</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>- Apply a DFT of size 16 on the input vector 𝑦
Cooley-Tukey for The DFT of Size 16
10
x
<latexit sha1_base64="30P4nwdawvL2qXr06tn9rtYMLMY=">AB6HicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKbly2YB/QhjKZTtqxk0mYmYgl9AvcuFDErZ/kzr9xkgZR64ELh3Pu5d57vIgzpW370yosLa+srhXSxubW9s75d29tgpjSWiLhDyUXQ8rypmgLc0p91IUhx4nHa8yXqd+6pVCwUt3oaUTfAI8F8RrA2UvNhUK7YVTsDWiROTiqQozEof/SHIYkDKjThWKmeY0faTbDUjHA6K/VjRSNMJnhEe4YKHFDlJtmhM3RklCHyQ2lKaJSpPycSHCg1DTzTGWA9Vn+9VPzP68Xav3ATJqJYU0Hmi/yYIx2i9Gs0ZJISzaeGYCKZuRWRMZaYaJNKQvhMsXZ98uLpH1SdU6rtWatUr/K4yjCARzCMThwDnW4gQa0gACFR3iGF+vOerJerbd5a8HKZ/bhF6z3L/9TjTQ=</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>ˆ e[k] =
7
X
n=0
x[2 · n]e−i 2π
8 kn
<latexit sha1_base64="x8hGrHrMBop3iArdk/RxfQyg6wo=">ACLXicbVDBShxBEO0xJjEbEzfJ0UvhIuTiMrsuUQ8BSTx4VHBVmBmXnt4at9menqG7RrI080O5FdE8GAIufob9q6LmOiDgtfvVdFVLy2VtBSGN8HCi8WXr14vWm8X73fqX54eOxLSojsC8KVZjTlFtUmOfJCk8LQ3yPFV4ko6/T/2TCzRWFvqIJiUmOT/XMpOCk5cGzb14xMlhHY0T+AqxrfIzt1UPnPavsIYfURdiMSwIdAJ45jYkxJnhwnXjUtZu4Yx6HrQbIXtcAZ4Sjpz0mJzHAyaV/GwEFWOmoTi1kadsKTEcUNSKwbcWx5GLMzHyVPMcbeJm19aw7pUhZIXxpQlm6uMJx3NrJ3nqO3NOI/u/NxWf86Ksu3ESV1WhFrcf5RVCqiAaXQwlAYFqYknXBjpdwUx4j4N8gE3ZiHsTPHl4eSn5Ljb7my2e4e91u63eRxLbJWtsc+sw7bYLtnB6zPBPvJLtkN+x38Cq6DP8Hf+9aFYD7zif2D4PYOgfenOA=</latexit>ˆ
- [k] =
7
X
n=0
x[2 · n + 1]e−i 2π
8 kn
<latexit sha1_base64="fs1u8VMKhY1d6l7CaZ35PtlM/cg=">ACMXicbVBSxtBFJ61tY1Ra2yPXh4NgiCG3RjUHgqhvXhUaFTYXcPsZNYMmZ1Zt4Ww7B/qZf+k9KLh5bi1T/hJIbSqh8+Ob73mPe+7JSCotheBMsvXi5/Op1Y6W5urb+ZqO1+fbM6sowPmBanORUculUHyAiW/KA2nRSb5eTb5Pv3JjhVZfcFrytKBXSuSCUfTSsHWcjCk6XceTFD5CYqvi0h3WQ6f8K6zhOu5CwkYaQcEuRCnwS7cnIMkNZa6blKJ2RzVMQNXDVjvshHPAUxItSJscDJs/UhGmlUFV8gktTaOwhJTRw0KJndTCrLS8om9IrHnipacJu6+cU1bHtlBLk2vhTCXP13wtHC2mR+c6C4tg+9mbic15cYX6UOqHKCrliDx/lQTUMIsPRsJwhnLqCWVG+F2BjalPA3IzXkIH2Y4+HvyU3LW7UT7nd5pr93/tIijQbIe7JDInJI+uSYnJABYeQb+Ul+kd/B9+Am+BPcPrQuBYuZd+Q/BHf3YDeoBg=</latexit>ˆ
- 0[k] = e−i 2π
16 k · ˆ
- [k]
- Apply a DFT of size 16 on the input vector 𝑦
Cooley-Tukey for The DFT of Size 16
11
x
<latexit sha1_base64="30P4nwdawvL2qXr06tn9rtYMLMY=">AB6HicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKbly2YB/QhjKZTtqxk0mYmYgl9AvcuFDErZ/kzr9xkgZR64ELh3Pu5d57vIgzpW370yosLa+srhXSxubW9s75d29tgpjSWiLhDyUXQ8rypmgLc0p91IUhx4nHa8yXqd+6pVCwUt3oaUTfAI8F8RrA2UvNhUK7YVTsDWiROTiqQozEof/SHIYkDKjThWKmeY0faTbDUjHA6K/VjRSNMJnhEe4YKHFDlJtmhM3RklCHyQ2lKaJSpPycSHCg1DTzTGWA9Vn+9VPzP68Xav3ATJqJYU0Hmi/yYIx2i9Gs0ZJISzaeGYCKZuRWRMZaYaJNKQvhMsXZ98uLpH1SdU6rtWatUr/K4yjCARzCMThwDnW4gQa0gACFR3iGF+vOerJerbd5a8HKZ/bhF6z3L/9TjTQ=</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>ˆ e[k] =
7
X
n=0
x[2 · n]e−i 2π
8 kn
<latexit sha1_base64="x8hGrHrMBop3iArdk/RxfQyg6wo=">ACLXicbVDBShxBEO0xJjEbEzfJ0UvhIuTiMrsuUQ8BSTx4VHBVmBmXnt4at9menqG7RrI080O5FdE8GAIufob9q6LmOiDgtfvVdFVLy2VtBSGN8HCi8WXr14vWm8X73fqX54eOxLSojsC8KVZjTlFtUmOfJCk8LQ3yPFV4ko6/T/2TCzRWFvqIJiUmOT/XMpOCk5cGzb14xMlhHY0T+AqxrfIzt1UPnPavsIYfURdiMSwIdAJ45jYkxJnhwnXjUtZu4Yx6HrQbIXtcAZ4Sjpz0mJzHAyaV/GwEFWOmoTi1kadsKTEcUNSKwbcWx5GLMzHyVPMcbeJm19aw7pUhZIXxpQlm6uMJx3NrJ3nqO3NOI/u/NxWf86Ksu3ESV1WhFrcf5RVCqiAaXQwlAYFqYknXBjpdwUx4j4N8gE3ZiHsTPHl4eSn5Ljb7my2e4e91u63eRxLbJWtsc+sw7bYLtnB6zPBPvJLtkN+x38Cq6DP8Hf+9aFYD7zif2D4PYOgfenOA=</latexit>e−i 2π
16 k·1, ∀
0 ≤ k < 8
<latexit sha1_base64="EDcJyZC3Yvyvis0SEmL7m0pqeOQ=">ACInicbVDLSsNAFJ34tr6iLt0MFsGFlkSltuBCdONSwT6gqWUyudGhk0dnJkIJ+RY3/obF4q6EvwYpzGIWg9cOJxzL/fe48acSWVZ78bE5NT0zOzcfGlhcWl5xVxda8oERQaNOKRaLtEAmchNBRTHNqxABK4HFpu/3Tkt25BSBaFl2oYQzcg1yHzGSVKSz2zDlfpLnN8QWi658QsS+1qhvYoV6ksJ3tYMePBOHcGSTEw5bDYaDtI1zrmWrYuXA48QuSBkVO+Zr4X0SAUFOpOzYVqy6KRGKUQ5ZyUkxIT2yTV0NA1JALKb5i9meEsrHtan6AoVztWfEykJpBwGru4MiLqRf72R+J/XSZRf6YsjBMFIf1a5CcqwiP8sIeE0AVH2pCqGD6VkxviI5L6VRLeQj1EarfL4+T5l7F3q8cXByUj0+KObQBtpE28hGh+gYnaFz1EAU3aEH9ISejXvj0Xgx3r5aJ4xiZh39gvHxCYTeoI=</latexit>- Apply a DFT of size 16 on the input vector 𝑦
Cooley-Tukey for The DFT of Size 16
12
x
<latexit sha1_base64="30P4nwdawvL2qXr06tn9rtYMLMY=">AB6HicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKbly2YB/QhjKZTtqxk0mYmYgl9AvcuFDErZ/kzr9xkgZR64ELh3Pu5d57vIgzpW370yosLa+srhXSxubW9s75d29tgpjSWiLhDyUXQ8rypmgLc0p91IUhx4nHa8yXqd+6pVCwUt3oaUTfAI8F8RrA2UvNhUK7YVTsDWiROTiqQozEof/SHIYkDKjThWKmeY0faTbDUjHA6K/VjRSNMJnhEe4YKHFDlJtmhM3RklCHyQ2lKaJSpPycSHCg1DTzTGWA9Vn+9VPzP68Xav3ATJqJYU0Hmi/yYIx2i9Gs0ZJISzaeGYCKZuRWRMZaYaJNKQvhMsXZ98uLpH1SdU6rtWatUr/K4yjCARzCMThwDnW4gQa0gACFR3iGF+vOerJerbd5a8HKZ/bhF6z3L/9TjTQ=</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>y
<latexit sha1_base64="Mf2JYZNmAqVSXRcweAX5w6aJ1CI=">AB6HicbVDLSsNAFJ34rPVdelmsAiuSqLFx67oxmUL9gFtKJPpTt2MgkzEyGEfoEbF4q49ZPc+TdO0iBqPXDhcM693HuPF3GmtG1/WkvLK6tr6WN8ubW9s5uZW+/o8JYUmjTkIey5xEFnAloa6Y59CIJPA4dL3pTeZ3H0AqFo7nUTgBmQsmM8o0UZqJcNK1a7ZOfAicQpSRQWaw8rHYBTSOAChKSdK9R070m5KpGaUw6w8iBVEhE7JGPqGChKActP80Bk+NsoI+6E0JTO1Z8TKQmUSgLPdAZET9RfLxP/8/qx9i/dlIko1iDofJEfc6xDnH2NR0wC1TwxhFDJzK2YTogkVJtsynkIVxnOv19eJ3TmnNWq7fq1cZ1EUcJHaIjdIcdIEa6BY1URtRBOgRPaMX6956sl6t3nrklXMHKBfsN6/ADmjTU=</latexit>e−i 2π
16 k·1, ∀
0 ≤ k < 8
<latexit sha1_base64="EDcJyZC3Yvyvis0SEmL7m0pqeOQ=">ACInicbVDLSsNAFJ34tr6iLt0MFsGFlkSltuBCdONSwT6gqWUyudGhk0dnJkIJ+RY3/obF4q6EvwYpzGIWg9cOJxzL/fe48acSWVZ78bE5NT0zOzcfGlhcWl5xVxda8oERQaNOKRaLtEAmchNBRTHNqxABK4HFpu/3Tkt25BSBaFl2oYQzcg1yHzGSVKSz2zDlfpLnN8QWi658QsS+1qhvYoV6ksJ3tYMePBOHcGSTEw5bDYaDtI1zrmWrYuXA48QuSBkVO+Zr4X0SAUFOpOzYVqy6KRGKUQ5ZyUkxIT2yTV0NA1JALKb5i9meEsrHtan6AoVztWfEykJpBwGru4MiLqRf72R+J/XSZRf6YsjBMFIf1a5CcqwiP8sIeE0AVH2pCqGD6VkxviI5L6VRLeQj1EarfL4+T5l7F3q8cXByUj0+KObQBtpE28hGh+gYnaFz1EAU3aEH9ISejXvj0Xgx3r5aJ4xiZh39gvHxCYTeoI=</latexit>ˆ e[k] + ˆ
- 0[k]
ˆ e[k] − ˆ
- 0[k]
x[n]
<latexit sha1_base64="XOABTpY1U4xvcE3evEjtmvulCDI=">AB63icbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9IQ5lMJ+3QmUmYmYgl9BfcuFDErT/kzr8xSYOo9cCFwzn3cu89fsSZNrb9aZWldW18rlY3Nre2d6u5eR4exIrRNQh6qno815UzStmG016kKBY+p1/cp353XuqNAvlnZlG1BN4JFnACDaZ9OBKb1Ct2XU7B1okTkFqUKA1qH70hyGJBZWGcKy169iR8RKsDCOczir9WNMIkwkeUTelEguqvS/dYaOUmWIglClJQ3K1Z8TCRZaT4Wfdgpsxvqvl4n/eW5sgsvYTKDZVkviIOTIhyh5HQ6YoMXyaEkwUS29FZIwVJiaNp5KHcJnh7PvlRdI5qTun9cZto9a8KuIowEcwjE4cA5NuIEWtIHAGB7hGV4sYT1Zr9bvLVkFTP78AvW+xcuVo54</latexit>- Given a continuous function , its Fourier transform is defined as
- What is the summation?
The Discrete Fourier Transform
13
ˆ x[k] =
N−1
X
n=0
x[n]e−i 2π
N kn, ∀
0 ≤ k < N
<latexit sha1_base64="YGj54hj8biR3Jivrlx3Jby2/lZU=">ACPnicbVBNaxRBEO2JX3H92ujRS+EieDLTBI0gkLQi6clgpsEpidLTW9Ntpmenkl3j2Rp5pd58Td48+jFgyJePdq7WUSNDxpev1dFVb28UdK6OP4UrV26fOXqtfXrvRs3b92+09+4e2Dr1gai1rV5ihHS0pqGjvpFB01hrDKFR3m5auFf/iOjJW1fuvmDWUVnmhZSIEuSJP+mM/Q+bMuLTN4Ady21bEfbSbdxOvwjzs4S3UGdOw3JfDCoPBbvJGdH3VQgu4e86I2qBQ/bXEKMVd0CuXz0aQ/iIfxEnCRJCsyYCvsT/of+bQWbUXaCYXWpkncuMyjcVIo6nq8tdSgKPGE0kA1VmQzvzy/g4dBmUJYJDztYKn+2eGxsnZe5aGyQjez/3oL8X9e2rpiN/NSN60jLc4HFa0CV8MiS5hKQ8KpeSAojAy7gphCMmFxHvLEJ4t8OT3yRfJwdYw2R7uvNkZ7L1cxbHO7rMH7BFL2FO2x16zfTZmgr1n9lX9i36EH2Jvkc/zkvXolXPfYXop+/AEAprho=</latexit>x[n]
<latexit sha1_base64="XOABTpY1U4xvcE3evEjtmvulCDI=">AB63icbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9IQ5lMJ+3QmUmYmYgl9BfcuFDErT/kzr8xSYOo9cCFwzn3cu89fsSZNrb9aZWldW18rlY3Nre2d6u5eR4exIrRNQh6qno815UzStmG016kKBY+p1/cp353XuqNAvlnZlG1BN4JFnACDaZ9OBKb1Ct2XU7B1okTkFqUKA1qH70hyGJBZWGcKy169iR8RKsDCOczir9WNMIkwkeUTelEguqvS/dYaOUmWIglClJQ3K1Z8TCRZaT4Wfdgpsxvqvl4n/eW5sgsvYTKDZVkviIOTIhyh5HQ6YoMXyaEkwUS29FZIwVJiaNp5KHcJnh7PvlRdI5qTun9cZto9a8KuIowEcwjE4cA5NuIEWtIHAGB7hGV4sYT1Zr9bvLVkFTP78AvW+xcuVo54</latexit>- Given a continuous function , its Fourier transform is defined as
The Discrete Fourier Transform
14
ˆ x[k] = ⇥ e−i 2π
N 0·k
e−i 2π
N 1·k
. . . e−i 2π
N (N−1)·k⇤
· 2 6 6 6 4 x[0] x[1] . . . x[N − 1] 3 7 7 7 5 , ∀ 0 ≤ k < N
<latexit sha1_base64="A/nQ3+Xx2d0dquhE+ACKcDxJhG0=">AC3icdVLPb9MwFHbCrxF+le3I5YkKNCRWJWOCIQ1pgunakh0mxSHynGc1orjZLYztYpy4cIBhLjyb3HjH+GMk1bVRseTLH/+3ufnz36OS8G18f3fjnvt+o2btzZue3fu3rv/oPdw81gXlaJsRAtRqNOYaCa4ZCPDjWCnpWIkjwU7ibN3bf7knCnNC/nRzEsW5WQiecopMZYa9/7gKTH1rAmzCN6Ah2M24bKOc2IUnzUe+1TvcJwqQutdXPKmHjbgA6ZJYSBr4ClcJQguCrCwUP9HuT2EHQierfQeZjJZnb6g1zNQj/C2E5BO+Hztn637opFl2s8x2mhiBD4rCIJ+FiwM8gOhuNe3x/4XcA6CJagj5ZxNO79wklBq5xJQwXROgz80kQ1UYZTwazxSrOS0IxMWGihJDnTUd31p4EnlknAGrFDGujYiztqkms9z2OrtLan+t9cS16VCyuT7kc1l2VlmKSLg9JKgCmgbTYkXDFqxNwCQhW3XoFOiW2BsV/C6x7hdRsvV1deB8e7g+DFYO/DXv/w7fI5NtAj9BhtowC9QofoPTpCI0Qd7Hx2vjrfXOJ+cb+7PxZS1nu2UKXwv35F4964c=</latexit>x[n]
<latexit sha1_base64="XOABTpY1U4xvcE3evEjtmvulCDI=">AB63icbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9IQ5lMJ+3QmUmYmYgl9BfcuFDErT/kzr8xSYOo9cCFwzn3cu89fsSZNrb9aZWldW18rlY3Nre2d6u5eR4exIrRNQh6qno815UzStmG016kKBY+p1/cp353XuqNAvlnZlG1BN4JFnACDaZ9OBKb1Ct2XU7B1okTkFqUKA1qH70hyGJBZWGcKy169iR8RKsDCOczir9WNMIkwkeUTelEguqvS/dYaOUmWIglClJQ3K1Z8TCRZaT4Wfdgpsxvqvl4n/eW5sgsvYTKDZVkviIOTIhyh5HQ6YoMXyaEkwUS29FZIwVJiaNp5KHcJnh7PvlRdI5qTun9cZto9a8KuIowEcwjE4cA5NuIEWtIHAGB7hGV4sYT1Zr9bvLVkFTP78AvW+xcuVo54</latexit>- Given a continuous function , its Fourier transform is defined as
The Discrete Fourier Transform
15
ˆ x[0] ˆ x[1] . . . ˆ x[N − 1] = e−i 2π
N 0·0
e−i 2π
N 0·1
e−i 2π
N 0·2
. . . e−i 2π
N 0·(N−1)
e−i 2π
N 1·0
e−i 2π
N 1·1
e−i 2π
N 1·2
. . . e−i 2π
N 1·(N−1)
. . . . . . . . . . . . e−i 2π
N (N−1)·0
e−i 2π
N (N−1)·1
e−i 2π
N (N−1)·2
. . . e−i 2π
N (N−1)·(N−1)
· x[0] x[1] . . . x[N − 1]
<latexit sha1_base64="ZUB/v+m3jroArzlETI9fs6dvlI=">AEcHicjVNdb9MwFPWaACN8dewFCRCGCtQhtYrLxMcD0gQvPFVDotukJlSO47TWnA/ZzpQqyis/kDd+BC/8Apykq7q2C1wp0vE959rHN9dewplUtv1rp2WYN27e2r1t3bl7/6D9t7DExmngtARiXkszjwsKWcRHSmOD1LBMWhx+mpd/65E8vqJAsjr6peULdE8jFjClU5N9lo/HI9OWZR7IVaCZYXlzLDKs2Jsu46zXKBqceHSq5khz3kWg6N/GU1/AitQ2hRb/nPeYEApN84CSsyIeF7RC9F7QL+ApeT6NmelDSDi9Neq6Q9iD6KDQzreIULMV1GwF/acVtGl7mZtgEu4XbDXd32g2bTK5LrjK9I/ml+RXt5gau/3arJ9VHK6iHK1sYn2zI4k3bH7tVwE2AFqADFnE8af90/JikIY0U4VjKMbIT5eZYKEY41Y5SRNMzvGUjWMcEilm1cPpoAvdcaHQSz0FylYZVcrchxKOQ89rdT+ZnKdK5PbuHGqgvduzqIkVTQi9UFByqGKYfn6oM8EJYrPNcBEMO0VkhnWvVb6jVpVEz6U8XZ5U1wMuijN/3Dr4edo0+LduyCx+AF6AIE3oEj8AUcgxEgrd/GvHEeGr8MR+Zz8zntbS1s6jZB1fCfP0XTodqgQ=</latexit>Fourier matrix
x
<latexit sha1_base64="30P4nwdawvL2qXr06tn9rtYMLMY=">AB6HicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKbly2YB/QhjKZTtqxk0mYmYgl9AvcuFDErZ/kzr9xkgZR64ELh3Pu5d57vIgzpW370yosLa+srhXSxubW9s75d29tgpjSWiLhDyUXQ8rypmgLc0p91IUhx4nHa8yXqd+6pVCwUt3oaUTfAI8F8RrA2UvNhUK7YVTsDWiROTiqQozEof/SHIYkDKjThWKmeY0faTbDUjHA6K/VjRSNMJnhEe4YKHFDlJtmhM3RklCHyQ2lKaJSpPycSHCg1DTzTGWA9Vn+9VPzP68Xav3ATJqJYU0Hmi/yYIx2i9Gs0ZJISzaeGYCKZuRWRMZaYaJNKQvhMsXZ98uLpH1SdU6rtWatUr/K4yjCARzCMThwDnW4gQa0gACFR3iGF+vOerJerbd5a8HKZ/bhF6z3L/9TjTQ=</latexit>y
<latexit sha1_base64="Mf2JYZNmAqVSXRcweAX5w6aJ1CI=">AB6HicbVDLSsNAFJ34rPVdelmsAiuSqLFx67oxmUL9gFtKJPpTt2MgkzEyGEfoEbF4q49ZPc+TdO0iBqPXDhcM693HuPF3GmtG1/WkvLK6tr6WN8ubW9s5uZW+/o8JYUmjTkIey5xEFnAloa6Y59CIJPA4dL3pTeZ3H0AqFo7nUTgBmQsmM8o0UZqJcNK1a7ZOfAicQpSRQWaw8rHYBTSOAChKSdK9R070m5KpGaUw6w8iBVEhE7JGPqGChKActP80Bk+NsoI+6E0JTO1Z8TKQmUSgLPdAZET9RfLxP/8/qx9i/dlIko1iDofJEfc6xDnH2NR0wC1TwxhFDJzK2YTogkVJtsynkIVxnOv19eJ3TmnNWq7fq1cZ1EUcJHaIjdIcdIEa6BY1URtRBOgRPaMX6956sl6t3nrklXMHKBfsN6/ADmjTU=</latexit>DFTN
<latexit sha1_base64="yX5c0inE47UslYhbsSav95kHoKI=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuJKpi20Iay2W7bpZtN2N0IJfQ3ePGgiFd/kDf/jZs0iFofDzem2Fmnh9xprRtf1qFhcWl5ZXiamltfWNzq7y901RhLAl1SchD2faxopwJ6mqmOW1HkuLA57Tljy9Tv/VApWKhuNeTiHoBHgo2YARrI7lX1/e92165YlftDGieODmpQI5Gr/zR7YckDqjQhGOlOo4daS/BUjPC6bTUjRWNMBnjIe0YKnBAlZdkx07RgVH6aBKU0KjTP05keBAqUngm84A65H6Xif14n1oMzL2EijUVZLZoEHOkQ5R+jvpMUqL5xBMJDO3IjLCEhNt8ilIZynOPl+eZ40j6rOcbV2V6vUL/I4irAH+3AIDpxCHW6gAS4QYPAIz/BiCevJerXeZq0FK5/ZhV+w3r8ANtGObw=</latexit>x[n]
<latexit sha1_base64="XOABTpY1U4xvcE3evEjtmvulCDI=">AB63icbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9IQ5lMJ+3QmUmYmYgl9BfcuFDErT/kzr8xSYOo9cCFwzn3cu89fsSZNrb9aZWldW18rlY3Nre2d6u5eR4exIrRNQh6qno815UzStmG016kKBY+p1/cp353XuqNAvlnZlG1BN4JFnACDaZ9OBKb1Ct2XU7B1okTkFqUKA1qH70hyGJBZWGcKy169iR8RKsDCOczir9WNMIkwkeUTelEguqvS/dYaOUmWIglClJQ3K1Z8TCRZaT4Wfdgpsxvqvl4n/eW5sgsvYTKDZVkviIOTIhyh5HQ6YoMXyaEkwUS29FZIwVJiaNp5KHcJnh7PvlRdI5qTun9cZto9a8KuIowEcwjE4cA5NuIEWtIHAGB7hGV4sYT1Zr9bvLVkFTP78AvW+xcuVo54</latexit>- Given a continuous function , its Fourier transform is defined as
- It is a matrix vector multiplication, hence it is 𝑃(𝑂*)
- Cooley-Tukey algorithm is a matrix factorization of the Fourier matrix
- A symmetric matrix vector multiplication for prime problem sizes
The Matrix Representation of the Fourier Transform
16
y = DFTN · x
<latexit sha1_base64="it+H+Jn0VBqPHmJtuGPpvjNi0jQ=">AB+XicbVDLSsNAFJ3UV62vqEs3g0VwVRItPhZCURFXUqEvaEOYTCbt0EkmzEyKIfRP3LhQxK1/4s6/MUmDqPXAhcM593LvPU7IqFSG8amVFhaXlfKq5W19Y3NLX17pyN5JDBpY8646DlIEkYD0lZUMdILBUG+w0jXGV9lfndChKQ8aKk4JaPhgH1KEYqlWxdj+EFvL5p2XcD7HIFH2y9atSMHCemAWpgJNW/8YuBxHPgkUZkjKvmEykqQUBQzMq0MIklChMdoSPopDZBPpJXkl0/hQaq40OMirUDBXP05kSBfyth30k4fqZH862Xif14/Ut6ZldAgjBQJ8GyRFzGoOMxigC4VBCsWpwRhQdNbIR4hgbBKw6rkIZxnOPl+eZ50jmrmca1+X682Los4ymAP7INDYIJT0AC3oAnaAIMJeATP4EVLtCftVXubtZa0YmYX/IL2/gXSKZKi</latexit>- First steps of the Cooley-Tukey Algorithm
Cooley-Tukey for The DFT of Size 16
17
x
<latexit sha1_base64="30P4nwdawvL2qXr06tn9rtYMLMY=">AB6HicbVDLSsNAFL2pr1pfVZduBovgqiRafOyKbly2YB/QhjKZTtqxk0mYmYgl9AvcuFDErZ/kzr9xkgZR64ELh3Pu5d57vIgzpW370yosLa+srhXSxubW9s75d29tgpjSWiLhDyUXQ8rypmgLc0p91IUhx4nHa8yXqd+6pVCwUt3oaUTfAI8F8RrA2UvNhUK7YVTsDWiROTiqQozEof/SHIYkDKjThWKmeY0faTbDUjHA6K/VjRSNMJnhEe4YKHFDlJtmhM3RklCHyQ2lKaJSpPycSHCg1DTzTGWA9Vn+9VPzP68Xav3ATJqJYU0Hmi/yYIx2i9Gs0ZJISzaeGYCKZuRWRMZaYaJNKQvhMsXZ98uLpH1SdU6rtWatUr/K4yjCARzCMThwDnW4gQa0gACFR3iGF+vOerJerbd5a8HKZ/bhF6z3L/9TjTQ=</latexit>y = DFT16 · x
<latexit sha1_base64="lYhsgVSUBajCPe0CaRFzUfQyo8=">AB/HicbVDLSsNAFJ3UV62vaJduBovgqiRaqi6EoiIuK/QhtCFMJpN26OTBzEQMof6KGxeKuPVD3Pk3TtIgaj1w4XDOvdx7jxMxKqRhfGqlhcWl5ZXyamVtfWNzS9/e6Ykw5ph0chCfusgQRgNSFdSychtxAnyHUb6zuQi8/t3hAsaBh2ZRMTy0SigHsVIKsnWqwk8g5dXHTs1m9MhdkMJ729ZtSNHCemAWpgQJtW/8YuiGOfRJIzJAQA9OIpJUiLilmZFoZxoJECE/QiAwUDZBPhJXmx0/hvlJc6IVcVSBhrv6cSJEvROI7qtNHciz+epn4nzeIpXdipTSIYkCPFvkxQzKEGZJQJdygiVLFEGYU3UrxGPEZYqr0oewmG5vfL86R3WDeP6o2bRq1XsRBrtgDxwAExyDFrgGbdAFGCTgETyDF+1Be9JetbdZa0krZqrgF7T3L+Nk9E=</latexit>- Do not treat the data as a flat 1D array
The DFT of Size 16
18
y = DFT16 · x
<latexit sha1_base64="lYhsgVSUBajCPe0CaRFzUfQyo8=">AB/HicbVDLSsNAFJ3UV62vaJduBovgqiRaqi6EoiIuK/QhtCFMJpN26OTBzEQMof6KGxeKuPVD3Pk3TtIgaj1w4XDOvdx7jxMxKqRhfGqlhcWl5ZXyamVtfWNzS9/e6Ykw5ph0chCfusgQRgNSFdSychtxAnyHUb6zuQi8/t3hAsaBh2ZRMTy0SigHsVIKsnWqwk8g5dXHTs1m9MhdkMJ729ZtSNHCemAWpgQJtW/8YuiGOfRJIzJAQA9OIpJUiLilmZFoZxoJECE/QiAwUDZBPhJXmx0/hvlJc6IVcVSBhrv6cSJEvROI7qtNHciz+epn4nzeIpXdipTSIYkCPFvkxQzKEGZJQJdygiVLFEGYU3UrxGPEZYqr0oewmG5vfL86R3WDeP6o2bRq1XsRBrtgDxwAExyDFrgGbdAFGCTgETyDF+1Be9JetbdZa0krZqrgF7T3L+Nk9E=</latexit>˜ x
<latexit sha1_base64="p8IbuWxmhRPoIbkXj7DWOoWmPYs=">AB8HicbVDLSsNAFJ3UV62vqks3g0VwVRItPnZFNy4r2Ie0oUwmN+3QmSTMTMQS+hVuXCji1s9x5984SYP4OnDhcM693HuPF3OmtG1/WKWFxaXlfJqZW19Y3Orur3TUVEiKbRpxCPZ84gCzkJoa6Y59GIJRHgcut7kMvO7dyAVi8IbPY3BFWQUsoBRo10O9CM+5Dez4bVml23c+C/xClIDRVoDavAz+iYBQU06U6jt2rN2USM0oh1lkCiICZ2QEfQNDYkA5ab5wTN8YBQfB5E0FWqcq98nUiKUmgrPdAqix+q3l4n/ef1EB2duysI40RDS+aIg4VhHOPse+0wC1XxqCKGSmVsxHRNJqDYZVfIQzjOcfL38l3SO6s5xvXHdqDUvijKaA/to0PkoFPURFeohdqIoEe0BN6tqT1aL1Yr/PWklXM7KIfsN4+AVx3kOo=</latexit>˜ y = DFT2 · ⇣ T 16
8
(DFT8 · ˜ x)T ⌘
<latexit sha1_base64="9TnMRQou0ygZwGgz/aNScQe0Uw=">ACO3icbVBNT9tAFzmYavQI+9rIiQ4BLZgCAckBUVY8BJYAUB2u9fk5WrL3W7jMisvy/uPAneuFC4dWVa+9104s1AIjrTSamae3b/xECoO2/d2amZ2bX1isfagvLa+srjXWNy6NSjWHldS6WufGZAih4KlHCdaGCRL+HKvz0r/as70EaouIvjBAYRG8YiFJxhIXmNCxeFDCAb5/SYfv7S9XZdHih0JYS43b3JnIPca7vqRSoj7WlkOnifu1oMR7hz062I12jaLXsC+pY4FWmSCh2v8c0NFE8jiJFLZkzfsRMcZEyj4BLyupsaSBi/ZUPoFzRmEZhBNrk9p1uFEtBQ6eLFSCfqvxMZi4wZR36RjBiOzGuvFN/z+imG7UEm4iRFiPl0UZhKioqWRdJAaOAoxwVhXIvir5SPmGYci7rkxKOShy8nPyWXO62nL3W/vl+8+S0qNGPpFNsk0ckhOyFfSIT3CyQN5Ij/IT+vRerZ+Wb+n0RmrmvlI/oP15y8WLq5R</latexit>- Operations applied on high dimensional objects
- What is the memory footprint of this algorithm?
The DFT of Size 16
19
DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>˜ x
<latexit sha1_base64="p8IbuWxmhRPoIbkXj7DWOoWmPYs=">AB8HicbVDLSsNAFJ3UV62vqks3g0VwVRItPnZFNy4r2Ie0oUwmN+3QmSTMTMQS+hVuXCji1s9x5984SYP4OnDhcM693HuPF3OmtG1/WKWFxaXlfJqZW19Y3Orur3TUVEiKbRpxCPZ84gCzkJoa6Y59GIJRHgcut7kMvO7dyAVi8IbPY3BFWQUsoBRo10O9CM+5Dez4bVml23c+C/xClIDRVoDavAz+iYBQU06U6jt2rN2USM0oh1lkCiICZ2QEfQNDYkA5ab5wTN8YBQfB5E0FWqcq98nUiKUmgrPdAqix+q3l4n/ef1EB2duysI40RDS+aIg4VhHOPse+0wC1XxqCKGSmVsxHRNJqDYZVfIQzjOcfL38l3SO6s5xvXHdqDUvijKaA/to0PkoFPURFeohdqIoEe0BN6tqT1aL1Yr/PWklXM7KIfsN4+AVx3kOo=</latexit>transposition pointwise
e−i 2π
N k·1, ∀
0 ≤ k < 8
<latexit sha1_base64="swGVI9Go9yEtfzFJpjlgo+Zbk=">ACIXicbVBNS8NAEN3U7/oV9ehlsQgetCS1aAUPohdPomC10NSy2UzapZsPdzdCfkrXvwrXjwo4k38M25iEbU+GHi8N8PMPDfmTCrLejdKE5NT0zOzc+X5hcWlZXNl9UpGiaDQpBGPRMslEjgLoamY4tCKBZDA5XDtDk5y/oOhGReKmGMXQC0guZzyhRWuqaDbhJd5jC0LTmhOzLD3L8A71IsUtrNt7PiRIJw7twnxsOVwuNX2IW50zYpVtQrgcWKPSAWNcN413xwvokAoaKcSNm2rVh1UiIUoxyspNIiAkdkB60NQ1JALKTFh9meFMrHtan6AoVLtSfEykJpBwGru4MiOrLv14u/ue1E+U3OikL40RBSL8W+QnHKsJ5XNhjAqjiQ0IFUzfimf6LSUDrVchHCQY+/75XFyVavau9X6Rb1ydDyKYxatow20hWy0j47QKTpHTUTRPXpEz+jFeDCejFfj7au1ZIxm1tAvGB+fLvyiXw=</latexit>DFT2
<latexit sha1_base64="FsjBUhk8vkANfYToikWJXmaxN0=">AB7HicbVDLSsNAFL3xWeur6tLNYBFclaQWH7uiIi4r9AVtKJPpB06mYSZiVBCv8GNC0Xc+kHu/BsnaRC1HrhwOde7r3HizhT2rY/raXldW19cJGcXNre2e3tLfVmEsCW2RkIey62FORO0pZnmtBtJigOP043uU79zgOVioWiqacRdQM8EsxnBGsjtW5um4PqoFS2K3YGtEicnJQhR2NQ+ugPQxIHVGjCsVI9x460m2CpGeF0VuzHikaYTPCI9gwVOKDKTbJjZ+jYKEPkh9KU0ChTf04kOFBqGnimM8B6rP56qfif14u1f+EmTESxpoLMF/kxRzpE6edoyCQlmk8NwUQycysiYywx0SafYhbCZYqz75cXSbtacU4rtftauX6Vx1GAQziCE3DgHOpwBw1oAQEGj/AML5awnqxX623eumTlMwfwC9b7FwxhjlM=</latexit>˜ y = DFT4 · ⇣ T 4
4 (DFT4 · ˜
x)T ⌘
<latexit sha1_base64="sg36NmHUFzpxsLG+eIrFThTXPI=">ACOnicbVDLatAFB05fbjuI267GaoKbgbIzcmbRcBk5bQpQ1+gWb0ejKHjLSiJmrEiP0XdnkK7LIpsuEkK3/YCObRHcugcGDuecy517/EQKg657ZT2Hj1+8rT8rPL8xctX+9XBwOjUs2hz5VUeuQzA1LE0EeBEkaJBhb5Eob+2deVP/wB2gV93CZwCRi81iEgjO0qza9VDIALJlTo/pt9PerOXxQKEnIcR6b5q1cquoB2UrsZk7z0t5gv8MO0VZFatuQ13DbpLmgWpkQKdWfXKCxRPI4iRS2bMuOkmOMmYRsEl5BUvNZAwfsbmMLY0ZhGYSbY+PafvrRLQUGn7YqRrdXsiY5Exy8i3yYjhwvzrcT/eMUw8+TMRJihDzaIwlRQVXfVIA6GBo1xawrgW9q+UL5hmHG3blXUJX1Y4ejh5lw+NpqHjVa3VWufFHWUyVvyjtRJk3wibfKdEifcHJBbsgtuXMunZ/OvfNrEy05xcwb8hec38AhEeuDg=</latexit>The DFT of Size 16 – Different algorithm
20
˜ x
<latexit sha1_base64="m4YsqL0VHBixDbZNi/3I7no5mac=">AB8HicbVBNS8NAEN34WetX1aOXxSJ4KkV9Fj04rGC/ZA2lM1m2i7dTcLuRCyhv8KLB0W8+nO8+W/ctjlo64OBx3szMwLEikMu63s7K6tr6xWdgqbu/s7u2XDg6bJk41hwaPZazbATMgRQNFCihnWhgKpDQCkY3U7/1CNqIOLrHcQK+YoNI9AVnaKWHLgoZQvY06ZXKbsWdgS4TLydlkqPeK31w5inCiLkhnT8dwE/YxpFzCpNhNDSMj9gAOpZGTIHxs9nBE3pqlZD2Y20rQjpTf09kTBkzVoHtVAyHZtGbiv95nRT7V34moiRFiPh8UT+VFGM6/Z6GQgNHObaEcS3srZQPmWYcbUZFG4K3+PIyaVYr3nmlendRrl3ncRTIMTkhZ8Qjl6RGbkmdNAgnijyTV/LmaOfFeXc+5q0rTj5zRP7A+fwBRKuQtg=</latexit>DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>transposition pointwise
DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>- Operations applied on high dimensional objects
- What is the memory footprint of this algorithm?
Cooley-Tukey – Divide and Conquer Algorithm
21
DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>DFT2
<latexit sha1_base64="FsjBUhk8vkANfYToikWJXmaxN0=">AB7HicbVDLSsNAFL3xWeur6tLNYBFclaQWH7uiIi4r9AVtKJPpB06mYSZiVBCv8GNC0Xc+kHu/BsnaRC1HrhwOde7r3HizhT2rY/raXldW19cJGcXNre2e3tLfVmEsCW2RkIey62FORO0pZnmtBtJigOP043uU79zgOVioWiqacRdQM8EsxnBGsjtW5um4PqoFS2K3YGtEicnJQhR2NQ+ugPQxIHVGjCsVI9x460m2CpGeF0VuzHikaYTPCI9gwVOKDKTbJjZ+jYKEPkh9KU0ChTf04kOFBqGnimM8B6rP56qfif14u1f+EmTESxpoLMF/kxRzpE6edoyCQlmk8NwUQycysiYywx0SafYhbCZYqz75cXSbtacU4rtftauX6Vx1GAQziCE3DgHOpwBw1oAQEGj/AML5awnqxX623eumTlMwfwC9b7FwxhjlM=</latexit>DFT32
<latexit sha1_base64="+SB/LU8AghJLRkeGzo7ECzYQ84A=">AB73icbVDLSsNAFL3xWeur6tLNYBFclfSBj1REZcV+oI2lMl0g6dTOLMRCihP+HGhSJu/R13/o2TNIhaD1w4nHMv97jhpwpbduf1tLyuraem4jv7m1vbNb2NtvqyCShLZIwAPZdbGinAna0kxz2g0lxb7LacedXCV+54FKxQLR1NOQOj4eCeYxgrWRutc3zUFcrcwGhaJdslOgRVLOSBEyNAaFj/4wIJFPhSYcK9Ur26F2Yiw1I5zO8v1I0RCTCR7RnqEC+1Q5cXrvDB0bZYi8QJoSGqXqz4kY+0pNfd0+liP1V8vEf/zepH2zp2YiTDSVJD5Ii/iSAcoeR4NmaRE86khmEhmbkVkjCUm2kSUT0O4SHD6/fIiaVdK5Wqpdlcr1i+zOHJwCEdwAmU4gzrcQgNaQIDIzDi3VvPVmv1tu8dcnKZg7gF6z3L0Y1j5w=</latexit>DFT16
<latexit sha1_base64="oVbTryRVTIuwEgr0ZLHFSImwM=">AB73icbVBNS8NAEJ3Ur1q/qh69LBbBU0m0VL0VFfFYoV/QhrLZbtulm03c3Qgl9E948aCIV/+ON/+NmzSIWh8MPN6bYWaeF3KmtG1/Wrml5ZXVtfx6YWNza3unuLvXUkEkCW2SgAey42FORO0qZnmtBNKin2P07Y3uUr89gOVigWioachdX08EmzICNZG6lzfNPqxU531iyW7bKdAi8TJSAky1PvFj94gIJFPhSYcK9V17FC7MZaEU5nhV6kaIjJBI9o1CBfarcOL13ho6MkDQJoSGqXqz4kY+0pNfc90+liP1V8vEf/zupEenrsxE2GkqSDzRcOIx2g5Hk0YJISzaeGYCKZuRWRMZaYaBNRIQ3hIkH1+VF0jopO6flyl2lVLvM4sjDARzCMThwBjW4hTo0gQCHR3iGF+verJerbd5a87KZvbhF6z3L0k9j54=</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>DFT64
<latexit sha1_base64="acSDYRztjl4fHrgz1GXBOQThNJc=">AB73icbVBNS8NAEJ3Ur1q/qh69LBbBU0m1VL0VFfFYoV/QhrLZbtqlm03c3Qgl9E948aCIV/+ON/+NmzSIWh8MPN6bYWaeG3KmtG1/Wrml5ZXVtfx6YWNza3unuLvXVkEkCW2RgAey62JFORO0pZnmtBtKin2X047uUr8zgOVigWiqachdXw8EsxjBGsjda9vmoO4Vp0NiW7bKdAi6SkRJkaAyKH/1hQCKfCk04VqpXsUPtxFhqRjidFfqRoiEmEzyiPUMF9qly4vTeGToyhB5gTQlNErVnxMx9pWa+q7p9LEeq79eIv7n9SLtnTsxE2GkqSDzRV7EkQ5Q8jwaMkmJ5lNDMJHM3IrIGEtMtImokIZwkaD2/fIiaZ+UK6fl6l21VL/M4sjDARzCMVTgDOpwCw1oAQEOj/AML9a9WS9Wm/z1pyVzezDL1jvX03Rj6E=</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>DFT2
<latexit sha1_base64="FsjBUhk8vkANfYToikWJXmaxN0=">AB7HicbVDLSsNAFL3xWeur6tLNYBFclaQWH7uiIi4r9AVtKJPpB06mYSZiVBCv8GNC0Xc+kHu/BsnaRC1HrhwOde7r3HizhT2rY/raXldW19cJGcXNre2e3tLfVmEsCW2RkIey62FORO0pZnmtBtJigOP043uU79zgOVioWiqacRdQM8EsxnBGsjtW5um4PqoFS2K3YGtEicnJQhR2NQ+ugPQxIHVGjCsVI9x460m2CpGeF0VuzHikaYTPCI9gwVOKDKTbJjZ+jYKEPkh9KU0ChTf04kOFBqGnimM8B6rP56qfif14u1f+EmTESxpoLMF/kxRzpE6edoyCQlmk8NwUQycysiYywx0SafYhbCZYqz75cXSbtacU4rtftauX6Vx1GAQziCE3DgHOpwBw1oAQEGj/AML5awnqxX623eumTlMwfwC9b7FwxhjlM=</latexit>DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>DFT2
<latexit sha1_base64="FsjBUhk8vkANfYToikWJXmaxN0=">AB7HicbVDLSsNAFL3xWeur6tLNYBFclaQWH7uiIi4r9AVtKJPpB06mYSZiVBCv8GNC0Xc+kHu/BsnaRC1HrhwOde7r3HizhT2rY/raXldW19cJGcXNre2e3tLfVmEsCW2RkIey62FORO0pZnmtBtJigOP043uU79zgOVioWiqacRdQM8EsxnBGsjtW5um4PqoFS2K3YGtEicnJQhR2NQ+ugPQxIHVGjCsVI9x460m2CpGeF0VuzHikaYTPCI9gwVOKDKTbJjZ+jYKEPkh9KU0ChTf04kOFBqGnimM8B6rP56qfif14u1f+EmTESxpoLMF/kxRzpE6edoyCQlmk8NwUQycysiYywx0SafYhbCZYqz75cXSbtacU4rtftauX6Vx1GAQziCE3DgHOpwBw1oAQEGj/AML5awnqxX623eumTlMwfwC9b7FwxhjlM=</latexit>DFT64
<latexit sha1_base64="acSDYRztjl4fHrgz1GXBOQThNJc=">AB73icbVBNS8NAEJ3Ur1q/qh69LBbBU0m1VL0VFfFYoV/QhrLZbtqlm03c3Qgl9E948aCIV/+ON/+NmzSIWh8MPN6bYWaeG3KmtG1/Wrml5ZXVtfx6YWNza3unuLvXVkEkCW2RgAey62JFORO0pZnmtBtKin2X047uUr8zgOVigWiqachdXw8EsxjBGsjda9vmoO4Vp0NiW7bKdAi6SkRJkaAyKH/1hQCKfCk04VqpXsUPtxFhqRjidFfqRoiEmEzyiPUMF9qly4vTeGToyhB5gTQlNErVnxMx9pWa+q7p9LEeq79eIv7n9SLtnTsxE2GkqSDzRV7EkQ5Q8jwaMkmJ5lNDMJHM3IrIGEtMtImokIZwkaD2/fIiaZ+UK6fl6l21VL/M4sjDARzCMVTgDOpwCw1oAQEOj/AML9a9WS9Wm/z1pyVzezDL1jvX03Rj6E=</latexit>DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>DFT64
<latexit sha1_base64="acSDYRztjl4fHrgz1GXBOQThNJc=">AB73icbVBNS8NAEJ3Ur1q/qh69LBbBU0m1VL0VFfFYoV/QhrLZbtqlm03c3Qgl9E948aCIV/+ON/+NmzSIWh8MPN6bYWaeG3KmtG1/Wrml5ZXVtfx6YWNza3unuLvXVkEkCW2RgAey62JFORO0pZnmtBtKin2X047uUr8zgOVigWiqachdXw8EsxjBGsjda9vmoO4Vp0NiW7bKdAi6SkRJkaAyKH/1hQCKfCk04VqpXsUPtxFhqRjidFfqRoiEmEzyiPUMF9qly4vTeGToyhB5gTQlNErVnxMx9pWa+q7p9LEeq79eIv7n9SLtnTsxE2GkqSDzRV7EkQ5Q8jwaMkmJ5lNDMJHM3IrIGEtMtImokIZwkaD2/fIiaZ+UK6fl6l21VL/M4sjDARzCMVTgDOpwCw1oAQEOj/AML9a9WS9Wm/z1pyVzezDL1jvX03Rj6E=</latexit>DFT8
<latexit sha1_base64="ex2wSX0tyHnZTXwbtQcjRS0dx4=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0aL0VFfFYoWkLbSib7aZdutmE3Y1Qn+DFw+KePUHefPfuE2D+PVg4PHeDPz/JgzpW37wyosLa+srhXSxubW9s75d29toSahLIh7Jro8V5UxQVzPNaTeWFIc+px1/cjX3O/dUKhaJlp7G1AvxSLCAEayN5F7ftAb1QbliV+0M6C9xclKBHM1B+b0/jEgSUqEJx0r1HDvWXoqlZoTWamfKBpjMsEj2jNU4JAqL82OnaEjowxRElTQqNM/T6R4lCpaeibzhDrsfrtzcX/vF6ig7qXMhEnmgqyWBQkHOkIzT9HQyYp0XxqCaSmVsRGWOJiTb5lLIQLuY4+3r5L2mfVJ3Tau2uVmlc5nEU4QAO4RgcOIcG3EITXCDA4AGe4NkS1qP1Yr0uWgtWPrMP2C9fQIVeY5Z</latexit>DFT2
<latexit sha1_base64="FsjBUhk8vkANfYToikWJXmaxN0=">AB7HicbVDLSsNAFL3xWeur6tLNYBFclaQWH7uiIi4r9AVtKJPpB06mYSZiVBCv8GNC0Xc+kHu/BsnaRC1HrhwOde7r3HizhT2rY/raXldW19cJGcXNre2e3tLfVmEsCW2RkIey62FORO0pZnmtBtJigOP043uU79zgOVioWiqacRdQM8EsxnBGsjtW5um4PqoFS2K3YGtEicnJQhR2NQ+ugPQxIHVGjCsVI9x460m2CpGeF0VuzHikaYTPCI9gwVOKDKTbJjZ+jYKEPkh9KU0ChTf04kOFBqGnimM8B6rP56qfif14u1f+EmTESxpoLMF/kxRzpE6edoyCQlmk8NwUQycysiYywx0SafYhbCZYqz75cXSbtacU4rtftauX6Vx1GAQziCE3DgHOpwBw1oAQEGj/AML5awnqxX623eumTlMwfwC9b7FwxhjlM=</latexit>DFT4
<latexit sha1_base64="PSpopHfmHDzPW/XUyRZU6PZnOE=">AB7HicbVBNS8NAEJ3Ur1q/qh69LBbBU0m0+HErKuKxQtMW2lA2027dLMJuxuhP4GLx4U8eoP8ua/cZsGUeuDgcd7M8zM82POlLbtT6uwtLyulZcL21sbm3vlHf3WipKJKEuiXgkOz5WlDNBXc0p51YUhz6nLb98fXMbz9QqVgkmnoSUy/EQ8ECRrA2kntz2+zX+uWKXbUzoEXi5KQCORr98kdvEJEkpEITjpXqOnasvRLzQin01IvUTGZIyHtGuowCFVXpodO0VHRhmgIJKmhEaZ+nMixaFSk9A3nSHWI/Xm4n/ed1EBxdeykScaCrIfFGQcKQjNPscDZikRPOJIZhIZm5FZIQlJtrkU8pCuJzh7PvlRdI6qTqn1dp9rVK/yuMowgEcwjE4cA51uIMGuECAwSM8w4slrCfr1XqbtxasfGYfsF6/wIPaY5V</latexit>- Multiple algorithms
- Which one performs better?
0.5 1 1.5 2 2.5 3 3.5 4
DFT64 DFT128 DFT256 DFT512 DFT64 batch 4 DFT128 batch 4 DFT256 batch 4 DFT512 batch 4
FFTW Flops/cycle Sizes Performance on Intel Haswell 4770K Custom Approach MKL
Higher is better
Peak Performance
Some Results and Ongoing Research
22
The DFT of Size 5
23
- Given a continuous function , its Fourier transform is defined as
- For prime problem sizes there are Rader and Bluestein algorithms
- Talk about a new approach – cast the computation as a special SYMV
- The DFT matrix has properties and symmetries that can be exploited
x[n]
<latexit sha1_base64="XOABTpY1U4xvcE3evEjtmvulCDI=">AB63icbVDLSsNAFL2pr1pfVZduBovgqiRafOyKblxWsA9IQ5lMJ+3QmUmYmYgl9BfcuFDErT/kzr8xSYOo9cCFwzn3cu89fsSZNrb9aZWldW18rlY3Nre2d6u5eR4exIrRNQh6qno815UzStmG016kKBY+p1/cp353XuqNAvlnZlG1BN4JFnACDaZ9OBKb1Ct2XU7B1okTkFqUKA1qH70hyGJBZWGcKy169iR8RKsDCOczir9WNMIkwkeUTelEguqvS/dYaOUmWIglClJQ3K1Z8TCRZaT4Wfdgpsxvqvl4n/eW5sgsvYTKDZVkviIOTIhyh5HQ6YoMXyaEkwUS29FZIwVJiaNp5KHcJnh7PvlRdI5qTun9cZto9a8KuIowEcwjE4cA5NuIEWtIHAGB7hGV4sYT1Zr9bvLVkFTP78AvW+xcuVo54</latexit>y = DFT5 · x
<latexit sha1_base64="e/8mam0i39dpcXOuYcfCuthoOU=">AB+XicbVDLSsNAFJ3UV62vqEs3g0VwVRKtr4VQVMRlhb6gDWEymbRDJ5kwMymG0D9x40IRt/6JO/GJA2i1gMXDufcy73OCGjUhnGp1ZaWFxaXimvVtbWNza39O2djuSRwKSNOeOi5yBJGA1IW1HFSC8UBPkOI1nfJ353QkRkvKgpeKQWD4aBtSjGKlUsnU9hpfw5rZlnwywyxV8sPWqUTNywHliFqQKCjRt/WPgchz5JFCYISn7phEqK0FCUczItDKIJAkRHqMh6ac0QD6RVpJfPoUHqeJCj4u0AgVz9edEgnwpY9JO32kRvKvl4n/ef1IedWQoMwUiTAs0VexKDiMIsBulQrFicEoQFTW+FeIQEwioNq5KHcJHh9PvledI5qpnHtfp9vdq4KuIogz2wDw6BCc5A9yBJmgDCbgETyDFy3RnrRX7W3WtKmV3wC9r7F6uWkok=</latexit>Rader and Bluestein Algorithms
24
1 1 1 1 1 𝑦′- 𝑦′. 𝑦′* 𝑦′/ 𝑦′0 𝑧′- 𝑧′. 𝑧′* 𝑧′/ 𝑧′0
temp temp Bluestein Matrix
𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0
input
𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0
- utput
1 1
pre-process post-process
1 1 1 1 1 1 1 1 1 𝑦′- 𝑦′. 𝑦′/ 𝑦′0 𝑦′* 𝑧′- 𝑧′. 𝑧′/ 𝑧′0 𝑧′*
temp temp Rader Matrix
𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0
input
𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0
- utput
permute permute
1 1 1 1 1 1 1 1 1 𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0
input
- utput
𝐸𝐺𝑈5
Rader Algorithm Bluestein Algorithm
𝜕5
- 𝜕5
- 𝜕5
- 𝜕5
- 𝜕5
- 𝜕5
- 𝜕5
.
𝜕5
*
𝜕5
/
𝜕5 𝜕5
- 𝜕5
*
𝜕5 𝜕5
7
𝜕5
8
𝜕5
- 𝜕5
/
𝜕5
7
𝜕5
9
𝜕5
.*
𝜕5
- 𝜕5
𝜕5
8
𝜕5
.*
𝜕5
.7
𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0
𝜕5 = 𝑓<=*>
5
Exploit the Structure of the Matrix without Changing It
25
𝜕5
- 𝜕5
- 𝜕5
- 𝜕5
- 𝜕5
- 𝜕5
- 𝜕5
.
𝜕5
*
𝜕5
/
𝜕5 𝜕5
- 𝜕5
*
𝜕5 𝜕5
7
𝜕5
8
𝜕5
- 𝜕5
/
𝜕5
7
𝜕5
9
𝜕5
.*
𝜕5
- 𝜕5
𝜕5
8
𝜕5
.*
𝜕5
.7
𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0
𝜕5
- = 1
Fourier Matrix – Row and Column of 1s
26
1 1 1 1 1 1 1 1 1 𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0 𝜕5
.
𝜕5
*
𝜕5
/
𝜕5 𝜕5
*
𝜕5 𝜕5
7
𝜕5
8
𝜕5
/
𝜕5
7
𝜕5
9
𝜕5
.*
𝜕5 𝜕5
8
𝜕5
.*
𝜕5
.7
𝜕5
- = 1
Fourier Matrix – Row and Column of 1s
27
1 1 1 1 1 1 1 1 1 𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0 𝜕5
.
𝜕5
*
𝜕5
/
𝜕5 𝜕5
*
𝜕5 𝜕5
7
𝜕5
8
𝜕5
/
𝜕5
7
𝜕5
9
𝜕5
.*
𝜕5 𝜕5
8
𝜕5
.*
𝜕5
.7
𝜕5
@ = 𝜕5 @ % 5
Fourier Matrix – Symmetry and Persymmetry
28
1 1 1 1 1 1 1 1 1 𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0 𝜕5
.
𝜕5
*
𝜕5
/
𝜕5 𝜕5
*
𝜕5 𝜕5
.
𝜕5
/
𝜕5
/
𝜕5
.
𝜕5 𝜕5
*
𝜕5 𝜕5
/
𝜕5
*
𝜕5
.
𝜕5
@ = 𝜕5 @ % 5
Fourier Matrix – Symmetry and Persymmetry
29
1 1 1 1 1 1 1 1 1 𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0 𝜕5
.
𝜕5
*
𝜕5
/
𝜕5
*
𝜕5 𝜕5
.
𝜕5
/
𝜕5
/
𝜕5
.
𝜕5 𝜕5
*
𝜕5 𝜕5
/
𝜕5
*
𝜕5
.
𝜕5
𝜕5
@ = 𝜕5 <(5<@)
Fourier Matrix – Conjugate Symmetry
30
1 1 1 1 1 1 1 1 1 𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0 𝜕5
.
𝜕5
*
𝜕5
<*
𝜕5
*
𝜕5 𝜕5
<0
𝜕5
<*
𝜕5
<*
𝜕5
<0
𝜕5 𝜕5
*
𝜕5
<.
𝜕5
<*
𝜕5
*
𝜕5
.
𝜕5
<.
𝜕5
@ = 𝜕5 <(5<@)
Fourier Matrix – Conjugate Symmetry
31
1 1 1 1 1 1 1 1 1 𝑦- 𝑦. 𝑦* 𝑦/ 𝑦0 𝑧- 𝑧. 𝑧* 𝑧/ 𝑧0 𝜕5
.
𝜕5
*
𝜕5
<*
𝜕5
*
𝜕5 𝜕5
<0
𝜕5
<*
𝜕5
<*
𝜕5
<0
𝜕5 𝜕5
*
𝜕5
<.
𝜕5
<*
𝜕5
*
𝜕5
.
𝜕5
<.
Fourier Matrix – Conjugate Symmetry
32
34 10 20 40 80 160 320 640 1280 2560 5120 10240 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Prime-sized DFTs on Intel Haswell 4770K
SymDFT MKL FFTW
Problem Size CPU Cycles [LogScale] Lower is better
Some Results and Ongoing Research
33
- Prefer bottom-up approach – started with codelets that are typically execute on one core
- Extend to larger sizes and higher dimensions
- Exploit thread/core/socket/node parallelism
- Use systematic approaches to optimize things
- Generalize approach to GPU/FPGAs and whatever exotic architecture that is out there
What Next?
34