CS 294-73 Software Engineering for Scientific Computing Guest - - PowerPoint PPT Presentation

cs 294 73 software engineering for scientific computing
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

CS 294-73 Software Engineering for Scientific Computing Guest Lecture: The Discrete Fourier Transform

Doru Thom Popovici

slide-2
SLIDE 2

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>
slide-3
SLIDE 3

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>
slide-4
SLIDE 4

The Circular Convolution

12

3

slide-5
SLIDE 5

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>
slide-6
SLIDE 6

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

slide-7
SLIDE 7

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>
slide-8
SLIDE 8

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>
slide-9
SLIDE 9
  • 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>
slide-10
SLIDE 10

ˆ 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>
slide-11
SLIDE 11
  • 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>
slide-12
SLIDE 12

ˆ

  • 0[k] = e−i 2π

16 k · ˆ

  • [k]
<latexit sha1_base64="qpXZrJPBueGrXL35XyD0igGYKqM=">ACHnicbVBNS8NAFNzU7/pV9ehlsQheLEmtVQ+C6MWjgm2FJpbNdtMu3WTD7otQn6JF/+KFw+KCJ7037itQdQ6sDMzOPtGz8WXINtf1iFqemZ2bn5heLi0vLKamltvaloihrUCmkuvaJZoJHrAEcBLuOFSOhL1jLH5yN/NYtU5rL6AqGMfNC0ot4wCkBI3VK+26fQCqzjt0ePgYs5t0l7uBIjStujHPUqe4UHm0q6EPGqCnVLZrthj4Eni5KSMclx0Sm9uV9IkZBFQbRuO3YMXkoUcCpYVnQTzWJCB6TH2oZGJGTaS8fnZXjbKF0cSGVeBHis/pxISaj1MPRNMiTQ13+9kfif104gOPRSHsUJsIh+LQoSgUHiUVe4yxWjIaGEKq4+SumfWK6AdNocVzC0Qj175MnSbNacfYqtcta+eQ0r2MebaItIMcdIBO0Dm6QA1E0R16QE/o2bq3Hq0X6/UrWrDymQ30C9b7J3f7ot8=</latexit>
  • 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>
slide-13
SLIDE 13
  • 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]
<latexit sha1_base64="uiQz/9EbNfL6NOdJXnFGcA2WNx4=">ACHnicbVDLSsNAFJ3UV42vqks3g0UQxJofe2KblxWsA9oQphMJ+3QySTMTIQS+iVu/BU3LhQRXOnfOE2DtNYDA+ecy937vFjRqWyrG+jsLC4tLxSXDX1jc2t0rbO0ZJQKTBo5YJNo+koRThqKkbasSAo9Blp+YObsd96IELSiN+rYUzcEPU4DShGSkte6czpI5WSUWfgwiOYFdHIs3TpOaUdzjeaWyVbEywHli56QMctS90qfTjXASEq4wQ1J2bCtWboqEopiRkeksQID1CPdDTlKCTSTbPzRvBAK10YREI/rmCmTk+kKJRyGPq6M0SqL/96Y/E/r5Oo4NJNKY8TRTieLAoSBlUEx1nBLhUEKzbUBGFB9V8h7iOBsNKJmlkIV2Oc/548T5onFfu0Ur2rlmvXeRxFsAf2wSGwQWogVtQBw2AwSN4Bq/gzXgyXox342PSWjDymV0wA+PrB1troiU=</latexit>
slide-14
SLIDE 14

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>
slide-15
SLIDE 15

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>
slide-16
SLIDE 16

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>
slide-17
SLIDE 17

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>
slide-18
SLIDE 18
  • 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>
slide-19
SLIDE 19
  • 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>
slide-20
SLIDE 20

˜ 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>
slide-21
SLIDE 21

˜ 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?
slide-22
SLIDE 22

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?
slide-23
SLIDE 23

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

slide-24
SLIDE 24

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>
slide-25
SLIDE 25

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

slide-26
SLIDE 26

𝜕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

slide-27
SLIDE 27

𝜕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

slide-28
SLIDE 28

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

slide-29
SLIDE 29

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

slide-30
SLIDE 30

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

slide-31
SLIDE 31

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

slide-32
SLIDE 32

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

slide-33
SLIDE 33

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

slide-34
SLIDE 34

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

slide-35
SLIDE 35
  • 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