Differen'able Func'onal Programming Noel Welsh @noelwelsh - - PowerPoint PPT Presentation

differen able func onal programming
SMART_READER_LITE
LIVE PREVIEW

Differen'able Func'onal Programming Noel Welsh @noelwelsh - - PowerPoint PPT Presentation

Differen'able Func'onal Programming Noel Welsh @noelwelsh underscore Goals Deep learning isnt deep Deep learning is func'onal programming You can implement it yourself Deep Learning Deep learning is supervised learning of


slide-1
SLIDE 1

Differen'able Func'onal Programming

Noel Welsh @noelwelsh

underscore

slide-2
SLIDE 2

Goals

slide-3
SLIDE 3

Deep learning isn’t deep

slide-4
SLIDE 4

Deep learning is func'onal programming

slide-5
SLIDE 5

You can implement it yourself

slide-6
SLIDE 6

Deep Learning

slide-7
SLIDE 7
slide-8
SLIDE 8

Deep learning is supervised learning of parameterised func'ons by gradient descent

slide-9
SLIDE 9

Supervised Learning via Gradient Descent

slide-10
SLIDE 10

Parametrised func'ons
 Supervised learning
 Gradient descent

slide-11
SLIDE 11

Parameterised func'ons

slide-12
SLIDE 12

x → sin(x)

<latexit sha1_base64="dZf/s84LnQX+QCOSdrB3/2zNXVQ=">AB/nicdVDLSsNAFJ34rPUVFVduBotQNyGJ1dZd0Y3LCvYBTSiT6bQdOpmEmYm2hIK/4saFIm79Dnf+jdO0goeuHA4517uvSeIGZXKtj+MhcWl5ZXV3Fp+fWNza9vc2W3IKBGY1HEItEKkCSMclJXVDHSigVBYcBIMxheTv3mLRGSRvxGjWPih6jPaY9ipLTUMfdH0BO0P1BIiOgOepLy4ui4YxZs67zsuk4JalIpn5xlRM9hY5lZyiAOWod893rRjgJCVeYISnbjh0rP0VCUczIJO8lksQID1GftDXlKCTST7PzJ/BIK13Yi4QurmCmfp9IUSjlOAx0Z4jUQP72puJfXjtRvYqfUh4ninA8W9RLGFQRnGYBu1QrNhYE4QF1bdCPEACYaUTy+sQvj6F/5OGazm25VyXCtWLeRw5cAOQRE4oAyq4ArUQB1gkIH8ASejXvj0XgxXmetC8Z8Zg/8gPH2CUY9lbI=</latexit><latexit sha1_base64="dZf/s84LnQX+QCOSdrB3/2zNXVQ=">AB/nicdVDLSsNAFJ34rPUVFVduBotQNyGJ1dZd0Y3LCvYBTSiT6bQdOpmEmYm2hIK/4saFIm79Dnf+jdO0goeuHA4517uvSeIGZXKtj+MhcWl5ZXV3Fp+fWNza9vc2W3IKBGY1HEItEKkCSMclJXVDHSigVBYcBIMxheTv3mLRGSRvxGjWPih6jPaY9ipLTUMfdH0BO0P1BIiOgOepLy4ui4YxZs67zsuk4JalIpn5xlRM9hY5lZyiAOWod893rRjgJCVeYISnbjh0rP0VCUczIJO8lksQID1GftDXlKCTST7PzJ/BIK13Yi4QurmCmfp9IUSjlOAx0Z4jUQP72puJfXjtRvYqfUh4ninA8W9RLGFQRnGYBu1QrNhYE4QF1bdCPEACYaUTy+sQvj6F/5OGazm25VyXCtWLeRw5cAOQRE4oAyq4ArUQB1gkIH8ASejXvj0XgxXmetC8Z8Zg/8gPH2CUY9lbI=</latexit><latexit sha1_base64="dZf/s84LnQX+QCOSdrB3/2zNXVQ=">AB/nicdVDLSsNAFJ34rPUVFVduBotQNyGJ1dZd0Y3LCvYBTSiT6bQdOpmEmYm2hIK/4saFIm79Dnf+jdO0goeuHA4517uvSeIGZXKtj+MhcWl5ZXV3Fp+fWNza9vc2W3IKBGY1HEItEKkCSMclJXVDHSigVBYcBIMxheTv3mLRGSRvxGjWPih6jPaY9ipLTUMfdH0BO0P1BIiOgOepLy4ui4YxZs67zsuk4JalIpn5xlRM9hY5lZyiAOWod893rRjgJCVeYISnbjh0rP0VCUczIJO8lksQID1GftDXlKCTST7PzJ/BIK13Yi4QurmCmfp9IUSjlOAx0Z4jUQP72puJfXjtRvYqfUh4ninA8W9RLGFQRnGYBu1QrNhYE4QF1bdCPEACYaUTy+sQvj6F/5OGazm25VyXCtWLeRw5cAOQRE4oAyq4ArUQB1gkIH8ASejXvj0XgxXmetC8Z8Zg/8gPH2CUY9lbI=</latexit><latexit sha1_base64="dZf/s84LnQX+QCOSdrB3/2zNXVQ=">AB/nicdVDLSsNAFJ34rPUVFVduBotQNyGJ1dZd0Y3LCvYBTSiT6bQdOpmEmYm2hIK/4saFIm79Dnf+jdO0goeuHA4517uvSeIGZXKtj+MhcWl5ZXV3Fp+fWNza9vc2W3IKBGY1HEItEKkCSMclJXVDHSigVBYcBIMxheTv3mLRGSRvxGjWPih6jPaY9ipLTUMfdH0BO0P1BIiOgOepLy4ui4YxZs67zsuk4JalIpn5xlRM9hY5lZyiAOWod893rRjgJCVeYISnbjh0rP0VCUczIJO8lksQID1GftDXlKCTST7PzJ/BIK13Yi4QurmCmfp9IUSjlOAx0Z4jUQP72puJfXjtRvYqfUh4ninA8W9RLGFQRnGYBu1QrNhYE4QF1bdCPEACYaUTy+sQvj6F/5OGazm25VyXCtWLeRw5cAOQRE4oAyq4ArUQB1gkIH8ASejXvj0XgxXmetC8Z8Zg/8gPH2CUY9lbI=</latexit>
slide-13
SLIDE 13
slide-14
SLIDE 14

θ → x → sin(x/θ)

<latexit sha1_base64="CL9ZDTGqlzqFSF8HlvqhwEcL1W8=">ACGnicdVDLSgMxFM3UV62vqks3wSLUTZ0RpXVXdOygn1AZyiZNG1DM5khuaMtQ7/Djb/ixoUi7sSNf2P6oFjRA4GTc84lucePBNdg219Waml5ZXUtvZ7Z2Nza3snu7tV0GCvKqjQUoWr4RDPBJasCB8EakWIk8AWr+/2rsV+/Y0rzUN7CMGJeQLqSdzglYKRW1nGhx4BgV/FuD4hS4T0eLNxczWV+gE/wNHncyubswkWpWLTPsVOwJ8BGMSjacyWHZqi0sh9uO6RxwCRQbRuOnYEXkIUcCrYKOPGmkWE9kmXNQ2VJGDaSyarjfCRUdq4EypzJOCJ+nMiIYHWw8A3yYBAT/2xuJfXjOGTslLuIxiYJOH+rEAkOIxz3hNleMghgaQqji5q+Y9ogiFEybGVPCfPf/Se204NgF5+YsV76c1ZFGB+gQ5ZGDiqiMrlEFVRFD+gJvaBX69F6t6s92k0Zc1m9tECrM9vI6ug6Q=</latexit><latexit sha1_base64="CL9ZDTGqlzqFSF8HlvqhwEcL1W8=">ACGnicdVDLSgMxFM3UV62vqks3wSLUTZ0RpXVXdOygn1AZyiZNG1DM5khuaMtQ7/Djb/ixoUi7sSNf2P6oFjRA4GTc84lucePBNdg219Waml5ZXUtvZ7Z2Nza3snu7tV0GCvKqjQUoWr4RDPBJasCB8EakWIk8AWr+/2rsV+/Y0rzUN7CMGJeQLqSdzglYKRW1nGhx4BgV/FuD4hS4T0eLNxczWV+gE/wNHncyubswkWpWLTPsVOwJ8BGMSjacyWHZqi0sh9uO6RxwCRQbRuOnYEXkIUcCrYKOPGmkWE9kmXNQ2VJGDaSyarjfCRUdq4EypzJOCJ+nMiIYHWw8A3yYBAT/2xuJfXjOGTslLuIxiYJOH+rEAkOIxz3hNleMghgaQqji5q+Y9ogiFEybGVPCfPf/Se204NgF5+YsV76c1ZFGB+gQ5ZGDiqiMrlEFVRFD+gJvaBX69F6t6s92k0Zc1m9tECrM9vI6ug6Q=</latexit><latexit sha1_base64="CL9ZDTGqlzqFSF8HlvqhwEcL1W8=">ACGnicdVDLSgMxFM3UV62vqks3wSLUTZ0RpXVXdOygn1AZyiZNG1DM5khuaMtQ7/Djb/ixoUi7sSNf2P6oFjRA4GTc84lucePBNdg219Waml5ZXUtvZ7Z2Nza3snu7tV0GCvKqjQUoWr4RDPBJasCB8EakWIk8AWr+/2rsV+/Y0rzUN7CMGJeQLqSdzglYKRW1nGhx4BgV/FuD4hS4T0eLNxczWV+gE/wNHncyubswkWpWLTPsVOwJ8BGMSjacyWHZqi0sh9uO6RxwCRQbRuOnYEXkIUcCrYKOPGmkWE9kmXNQ2VJGDaSyarjfCRUdq4EypzJOCJ+nMiIYHWw8A3yYBAT/2xuJfXjOGTslLuIxiYJOH+rEAkOIxz3hNleMghgaQqji5q+Y9ogiFEybGVPCfPf/Se204NgF5+YsV76c1ZFGB+gQ5ZGDiqiMrlEFVRFD+gJvaBX69F6t6s92k0Zc1m9tECrM9vI6ug6Q=</latexit><latexit sha1_base64="CL9ZDTGqlzqFSF8HlvqhwEcL1W8=">ACGnicdVDLSgMxFM3UV62vqks3wSLUTZ0RpXVXdOygn1AZyiZNG1DM5khuaMtQ7/Djb/ixoUi7sSNf2P6oFjRA4GTc84lucePBNdg219Waml5ZXUtvZ7Z2Nza3snu7tV0GCvKqjQUoWr4RDPBJasCB8EakWIk8AWr+/2rsV+/Y0rzUN7CMGJeQLqSdzglYKRW1nGhx4BgV/FuD4hS4T0eLNxczWV+gE/wNHncyubswkWpWLTPsVOwJ8BGMSjacyWHZqi0sh9uO6RxwCRQbRuOnYEXkIUcCrYKOPGmkWE9kmXNQ2VJGDaSyarjfCRUdq4EypzJOCJ+nMiIYHWw8A3yYBAT/2xuJfXjOGTslLuIxiYJOH+rEAkOIxz3hNleMghgaQqji5q+Y9ogiFEybGVPCfPf/Se204NgF5+YsV76c1ZFGB+gQ5ZGDiqiMrlEFVRFD+gJvaBX69F6t6s92k0Zc1m9tECrM9vI6ug6Q=</latexit>
slide-15
SLIDE 15
slide-16
SLIDE 16

Supervised learning

slide-17
SLIDE 17

Choose parameters to fit data

slide-18
SLIDE 18
slide-19
SLIDE 19
slide-20
SLIDE 20
slide-21
SLIDE 21
slide-22
SLIDE 22
slide-23
SLIDE 23
slide-24
SLIDE 24

Gradient Descent

slide-25
SLIDE 25

Algorithmically choose parameters

slide-26
SLIDE 26
slide-27
SLIDE 27
slide-28
SLIDE 28
slide-29
SLIDE 29

Calculate the deriva've of the loss func)on with respect to the parameters

slide-30
SLIDE 30

n

X

i=1

(datay

i − sin(datax i /θ))2

<latexit sha1_base64="gdi+RlqgBPr6qrdXKkTM7Xzkztg=">ACG3icdZDNSgMxFIUz/tb6V3XpJlgEXVhnilJdCEU3LhWsCp12uJOmNpjJDMkdsQx9Dze+ihsXirgSXPg2prWKih4I3HznXpJ7wkQKg675oyMjo1PTOam8tMzs3PzhYXFUxOnmvEai2Wsz0MwXArFayhQ8vNEc4hCyc/Cy4O+f3bFtRGxOsFuwhsRXCjRFgzQoqBQ9k0aNVWQiT2vt9YChEA0u3SD+kaoz/s13aQ+djC+nqzHBSKbml3p1Jxt6lXcgeilhV3C9SJEMdBYUXvxWzNOIKmQRj6p6bYCMDjYJ3sv7qeEJsEu4HVbKoi4aWSD3Xp01ZIWbcfaHoV0QL9PZBAZ041C2xkBdsxvrw/8uoptncamVBJilyxj4faqaQY035QtCU0Zyi7tgCmhf0rZR3QwNDGmbchfO3+f3FaLnluyTveKlb3h3HkyDJZIWvEIxVSJYfkiNQIzfkjyQR+fWuXenOeP1hFnOLNEfsh5fQcdp6Ax</latexit><latexit sha1_base64="gdi+RlqgBPr6qrdXKkTM7Xzkztg=">ACG3icdZDNSgMxFIUz/tb6V3XpJlgEXVhnilJdCEU3LhWsCp12uJOmNpjJDMkdsQx9Dze+ihsXirgSXPg2prWKih4I3HznXpJ7wkQKg675oyMjo1PTOam8tMzs3PzhYXFUxOnmvEai2Wsz0MwXArFayhQ8vNEc4hCyc/Cy4O+f3bFtRGxOsFuwhsRXCjRFgzQoqBQ9k0aNVWQiT2vt9YChEA0u3SD+kaoz/s13aQ+djC+nqzHBSKbml3p1Jxt6lXcgeilhV3C9SJEMdBYUXvxWzNOIKmQRj6p6bYCMDjYJ3sv7qeEJsEu4HVbKoi4aWSD3Xp01ZIWbcfaHoV0QL9PZBAZ041C2xkBdsxvrw/8uoptncamVBJilyxj4faqaQY035QtCU0Zyi7tgCmhf0rZR3QwNDGmbchfO3+f3FaLnluyTveKlb3h3HkyDJZIWvEIxVSJYfkiNQIzfkjyQR+fWuXenOeP1hFnOLNEfsh5fQcdp6Ax</latexit><latexit sha1_base64="gdi+RlqgBPr6qrdXKkTM7Xzkztg=">ACG3icdZDNSgMxFIUz/tb6V3XpJlgEXVhnilJdCEU3LhWsCp12uJOmNpjJDMkdsQx9Dze+ihsXirgSXPg2prWKih4I3HznXpJ7wkQKg675oyMjo1PTOam8tMzs3PzhYXFUxOnmvEai2Wsz0MwXArFayhQ8vNEc4hCyc/Cy4O+f3bFtRGxOsFuwhsRXCjRFgzQoqBQ9k0aNVWQiT2vt9YChEA0u3SD+kaoz/s13aQ+djC+nqzHBSKbml3p1Jxt6lXcgeilhV3C9SJEMdBYUXvxWzNOIKmQRj6p6bYCMDjYJ3sv7qeEJsEu4HVbKoi4aWSD3Xp01ZIWbcfaHoV0QL9PZBAZ041C2xkBdsxvrw/8uoptncamVBJilyxj4faqaQY035QtCU0Zyi7tgCmhf0rZR3QwNDGmbchfO3+f3FaLnluyTveKlb3h3HkyDJZIWvEIxVSJYfkiNQIzfkjyQR+fWuXenOeP1hFnOLNEfsh5fQcdp6Ax</latexit><latexit sha1_base64="gdi+RlqgBPr6qrdXKkTM7Xzkztg=">ACG3icdZDNSgMxFIUz/tb6V3XpJlgEXVhnilJdCEU3LhWsCp12uJOmNpjJDMkdsQx9Dze+ihsXirgSXPg2prWKih4I3HznXpJ7wkQKg675oyMjo1PTOam8tMzs3PzhYXFUxOnmvEai2Wsz0MwXArFayhQ8vNEc4hCyc/Cy4O+f3bFtRGxOsFuwhsRXCjRFgzQoqBQ9k0aNVWQiT2vt9YChEA0u3SD+kaoz/s13aQ+djC+nqzHBSKbml3p1Jxt6lXcgeilhV3C9SJEMdBYUXvxWzNOIKmQRj6p6bYCMDjYJ3sv7qeEJsEu4HVbKoi4aWSD3Xp01ZIWbcfaHoV0QL9PZBAZ041C2xkBdsxvrw/8uoptncamVBJilyxj4faqaQY035QtCU0Zyi7tgCmhf0rZR3QwNDGmbchfO3+f3FaLnluyTveKlb3h3HkyDJZIWvEIxVSJYfkiNQIzfkjyQR+fWuXenOeP1hFnOLNEfsh5fQcdp6Ax</latexit>
slide-31
SLIDE 31

n

X

i=1

2(datay

i − sin(datax i /θ)) cos(datax i /θ)datax i

θ2

<latexit sha1_base64="pDliIE3yjW5PjLKUM02FY9wz420=">ACTHicdZDPaxNBFMdno6YxarutRy+DQWgPpruhJemhEPTiMYL5AdlkeTuZbYbOzi4zb0vDsn+gFw/e/Cu8eGgRwcmvohK/MPDm832PN/ONMikMet43p/Lo8ZPqXu1p/dnzF/sH7uHRwKS5ZrzPUpnqUQSGS6F4HwVKPso0hySfBhdv1/6wxujUjVJ1xkfJLAlRKxYIAWhS4LTJ5MViIS78MYg2saB3PACEU0wV9SwMj1PZ+S09pgHOcHJCA5aHQbdorJYk2mrDN2G17zotNveOfWb3krUEqu290AaZKNe6H4NZinLE6QSTBm7HsZTgrQKJjkZT3IDc+AXcMVH9tSQcLNpFiFUdI3lsxonGp7FNIV/XOigMSYRLZzgRwbv71lnCXN84x7kwKobIcuWLrRXEuKaZ0mSydCc0ZyoUtgGlh30rZHGyiaPOv2xAe/v7/YtBq+l7T/3jW6L7bxFEjr8hrckx80iZd8oH0SJ8w8pl8J3fk3vni/HB+Or/WrRVnM/OS/KVK9TeyjbMr</latexit><latexit sha1_base64="pDliIE3yjW5PjLKUM02FY9wz420=">ACTHicdZDPaxNBFMdno6YxarutRy+DQWgPpruhJemhEPTiMYL5AdlkeTuZbYbOzi4zb0vDsn+gFw/e/Cu8eGgRwcmvohK/MPDm832PN/ONMikMet43p/Lo8ZPqXu1p/dnzF/sH7uHRwKS5ZrzPUpnqUQSGS6F4HwVKPso0hySfBhdv1/6wxujUjVJ1xkfJLAlRKxYIAWhS4LTJ5MViIS78MYg2saB3PACEU0wV9SwMj1PZ+S09pgHOcHJCA5aHQbdorJYk2mrDN2G17zotNveOfWb3krUEqu290AaZKNe6H4NZinLE6QSTBm7HsZTgrQKJjkZT3IDc+AXcMVH9tSQcLNpFiFUdI3lsxonGp7FNIV/XOigMSYRLZzgRwbv71lnCXN84x7kwKobIcuWLrRXEuKaZ0mSydCc0ZyoUtgGlh30rZHGyiaPOv2xAe/v7/YtBq+l7T/3jW6L7bxFEjr8hrckx80iZd8oH0SJ8w8pl8J3fk3vni/HB+Or/WrRVnM/OS/KVK9TeyjbMr</latexit><latexit sha1_base64="pDliIE3yjW5PjLKUM02FY9wz420=">ACTHicdZDPaxNBFMdno6YxarutRy+DQWgPpruhJemhEPTiMYL5AdlkeTuZbYbOzi4zb0vDsn+gFw/e/Cu8eGgRwcmvohK/MPDm832PN/ONMikMet43p/Lo8ZPqXu1p/dnzF/sH7uHRwKS5ZrzPUpnqUQSGS6F4HwVKPso0hySfBhdv1/6wxujUjVJ1xkfJLAlRKxYIAWhS4LTJ5MViIS78MYg2saB3PACEU0wV9SwMj1PZ+S09pgHOcHJCA5aHQbdorJYk2mrDN2G17zotNveOfWb3krUEqu290AaZKNe6H4NZinLE6QSTBm7HsZTgrQKJjkZT3IDc+AXcMVH9tSQcLNpFiFUdI3lsxonGp7FNIV/XOigMSYRLZzgRwbv71lnCXN84x7kwKobIcuWLrRXEuKaZ0mSydCc0ZyoUtgGlh30rZHGyiaPOv2xAe/v7/YtBq+l7T/3jW6L7bxFEjr8hrckx80iZd8oH0SJ8w8pl8J3fk3vni/HB+Or/WrRVnM/OS/KVK9TeyjbMr</latexit><latexit sha1_base64="pDliIE3yjW5PjLKUM02FY9wz420=">ACTHicdZDPaxNBFMdno6YxarutRy+DQWgPpruhJemhEPTiMYL5AdlkeTuZbYbOzi4zb0vDsn+gFw/e/Cu8eGgRwcmvohK/MPDm832PN/ONMikMet43p/Lo8ZPqXu1p/dnzF/sH7uHRwKS5ZrzPUpnqUQSGS6F4HwVKPso0hySfBhdv1/6wxujUjVJ1xkfJLAlRKxYIAWhS4LTJ5MViIS78MYg2saB3PACEU0wV9SwMj1PZ+S09pgHOcHJCA5aHQbdorJYk2mrDN2G17zotNveOfWb3krUEqu290AaZKNe6H4NZinLE6QSTBm7HsZTgrQKJjkZT3IDc+AXcMVH9tSQcLNpFiFUdI3lsxonGp7FNIV/XOigMSYRLZzgRwbv71lnCXN84x7kwKobIcuWLrRXEuKaZ0mSydCc0ZyoUtgGlh30rZHGyiaPOv2xAe/v7/YtBq+l7T/3jW6L7bxFEjr8hrckx80iZd8oH0SJ8w8pl8J3fk3vni/HB+Or/WrRVnM/OS/KVK9TeyjbMr</latexit>
slide-32
SLIDE 32

Calculate gradient for current parameters

slide-33
SLIDE 33

Change parameters by a small amount in downhill direc'on

slide-34
SLIDE 34
slide-35
SLIDE 35

Deep Learning

slide-36
SLIDE 36

Deep learning is supervised learning of parameterised func'ons by gradient descent

slide-37
SLIDE 37

Choice of func'ons that is expressive

slide-38
SLIDE 38

Choice of func'ons that is suited to GPU accelera'on

slide-39
SLIDE 39

Tensor mul'plica'on and non-linearity

slide-40
SLIDE 40

Tensors: mul'dimensional arrays

slide-41
SLIDE 41

Generalisa'on of vectors and matrices

slide-42
SLIDE 42

× =

Vector[3] Matrix[3,5] Vector[5]

slide-43
SLIDE 43

Matrix “weights” are parameters

slide-44
SLIDE 44

Non-linearity: just about any non-linear func'on

slide-45
SLIDE 45

ReLU(x) = max(0, x)

<latexit sha1_base64="epKhxqWJn7C5a4D0Fmix3ANKIVI=">AB/HicdZDLSgMxFIYz9Vbrdqlm2ARWpAhI0rQi6ceGitMW2qFk0kwbmrmQZKTDUF/FjQtF3Pog7nwb0wtFRX8IHL7/HM7J70acSYXQp5FZWl5ZXcu5zY2t7Z38rt7DRnGglCbhDwULRdLylAbcUp61IUOy7nDbd4eXEb95TIVkY3Kko6P+wHzGMFKo26+cEuv7dKoDM+hj0cldARH5W6+iMyzaqWCTqFloqmgJloVtCBFMFe9m/o9EIS+zRQhGMp2xaKlJNioRjhdJzrxJGmAxn7Z1GWCfSiedHj+Gh5r0oBcK/QIFp/T7RIp9KRPf1Z0+VgP525vAv7x2rLyqk7IgihUNyGyRF3OoQjhJAvaYoETxRBeYCKZvhWSABSZK5XTISz+/n/RODYtZFo3J8XaxTyOLNgHB6AELFABNXAF6sAGBCTgETyDF+PBeDJejbdZa8aYzxTADxnvX7k3kuI=</latexit><latexit sha1_base64="epKhxqWJn7C5a4D0Fmix3ANKIVI=">AB/HicdZDLSgMxFIYz9Vbrdqlm2ARWpAhI0rQi6ceGitMW2qFk0kwbmrmQZKTDUF/FjQtF3Pog7nwb0wtFRX8IHL7/HM7J70acSYXQp5FZWl5ZXcu5zY2t7Z38rt7DRnGglCbhDwULRdLylAbcUp61IUOy7nDbd4eXEb95TIVkY3Kko6P+wHzGMFKo26+cEuv7dKoDM+hj0cldARH5W6+iMyzaqWCTqFloqmgJloVtCBFMFe9m/o9EIS+zRQhGMp2xaKlJNioRjhdJzrxJGmAxn7Z1GWCfSiedHj+Gh5r0oBcK/QIFp/T7RIp9KRPf1Z0+VgP525vAv7x2rLyqk7IgihUNyGyRF3OoQjhJAvaYoETxRBeYCKZvhWSABSZK5XTISz+/n/RODYtZFo3J8XaxTyOLNgHB6AELFABNXAF6sAGBCTgETyDF+PBeDJejbdZa8aYzxTADxnvX7k3kuI=</latexit><latexit sha1_base64="epKhxqWJn7C5a4D0Fmix3ANKIVI=">AB/HicdZDLSgMxFIYz9Vbrdqlm2ARWpAhI0rQi6ceGitMW2qFk0kwbmrmQZKTDUF/FjQtF3Pog7nwb0wtFRX8IHL7/HM7J70acSYXQp5FZWl5ZXcu5zY2t7Z38rt7DRnGglCbhDwULRdLylAbcUp61IUOy7nDbd4eXEb95TIVkY3Kko6P+wHzGMFKo26+cEuv7dKoDM+hj0cldARH5W6+iMyzaqWCTqFloqmgJloVtCBFMFe9m/o9EIS+zRQhGMp2xaKlJNioRjhdJzrxJGmAxn7Z1GWCfSiedHj+Gh5r0oBcK/QIFp/T7RIp9KRPf1Z0+VgP525vAv7x2rLyqk7IgihUNyGyRF3OoQjhJAvaYoETxRBeYCKZvhWSABSZK5XTISz+/n/RODYtZFo3J8XaxTyOLNgHB6AELFABNXAF6sAGBCTgETyDF+PBeDJejbdZa8aYzxTADxnvX7k3kuI=</latexit><latexit sha1_base64="epKhxqWJn7C5a4D0Fmix3ANKIVI=">AB/HicdZDLSgMxFIYz9Vbrdqlm2ARWpAhI0rQi6ceGitMW2qFk0kwbmrmQZKTDUF/FjQtF3Pog7nwb0wtFRX8IHL7/HM7J70acSYXQp5FZWl5ZXcu5zY2t7Z38rt7DRnGglCbhDwULRdLylAbcUp61IUOy7nDbd4eXEb95TIVkY3Kko6P+wHzGMFKo26+cEuv7dKoDM+hj0cldARH5W6+iMyzaqWCTqFloqmgJloVtCBFMFe9m/o9EIS+zRQhGMp2xaKlJNioRjhdJzrxJGmAxn7Z1GWCfSiedHj+Gh5r0oBcK/QIFp/T7RIp9KRPf1Z0+VgP525vAv7x2rLyqk7IgihUNyGyRF3OoQjhJAvaYoETxRBeYCKZvhWSABSZK5XTISz+/n/RODYtZFo3J8XaxTyOLNgHB6AELFABNXAF6sAGBCTgETyDF+PBeDJejbdZa8aYzxTADxnvX7k3kuI=</latexit>
slide-46
SLIDE 46

f(x) = ReLU(x × Weights)

<latexit sha1_base64="z+WLEWO/k03WmabXxqAJUO0Q5/Q=">ACDXicdVC7SgNBFJ2N7/iKWtoMRiFpwq4o0UI2lhYRDEPSEKYndxNhsw+mLkrCUt+wMZfsbFQxNbezr9xEoOo6IFhDufcy73uJEUGm373UrNzM7NLywupZdXVtfWMxubVR3GikOFhzJUdZdpkCKACgqUI8UMN+VUHP7Z2O/dgNKizC4xmELZ91A+EJztBI7cyulxvk6Qm9gotKbkCbKHzQ5oMBJjUQ3R7qUb6dydqF46Ni0T6kTsGegBrFoGh/KVkyRbmdeWt2Qh7ECXTOuGY0fYSphCwSWM0s1YQ8R4n3WhYWjAzNBWMrlmRPeM0qFeqMwLkE7U7x0J87Ue+q6p9Bn29G9vLP7lNWL0jlqJCKIYIeCfg7xYUgzpOBraEQo4yqEhjCthdqW8xTjaAJMmxC+bv+fVPcLjl1wLg+ypdNpHItkm+yQHFIkZTIOSmTCuHkltyTR/Jk3VkP1rP18lmasqY9W+QHrNcP51ua4g=</latexit><latexit sha1_base64="z+WLEWO/k03WmabXxqAJUO0Q5/Q=">ACDXicdVC7SgNBFJ2N7/iKWtoMRiFpwq4o0UI2lhYRDEPSEKYndxNhsw+mLkrCUt+wMZfsbFQxNbezr9xEoOo6IFhDufcy73uJEUGm373UrNzM7NLywupZdXVtfWMxubVR3GikOFhzJUdZdpkCKACgqUI8UMN+VUHP7Z2O/dgNKizC4xmELZ91A+EJztBI7cyulxvk6Qm9gotKbkCbKHzQ5oMBJjUQ3R7qUb6dydqF46Ni0T6kTsGegBrFoGh/KVkyRbmdeWt2Qh7ECXTOuGY0fYSphCwSWM0s1YQ8R4n3WhYWjAzNBWMrlmRPeM0qFeqMwLkE7U7x0J87Ue+q6p9Bn29G9vLP7lNWL0jlqJCKIYIeCfg7xYUgzpOBraEQo4yqEhjCthdqW8xTjaAJMmxC+bv+fVPcLjl1wLg+ypdNpHItkm+yQHFIkZTIOSmTCuHkltyTR/Jk3VkP1rP18lmasqY9W+QHrNcP51ua4g=</latexit><latexit sha1_base64="z+WLEWO/k03WmabXxqAJUO0Q5/Q=">ACDXicdVC7SgNBFJ2N7/iKWtoMRiFpwq4o0UI2lhYRDEPSEKYndxNhsw+mLkrCUt+wMZfsbFQxNbezr9xEoOo6IFhDufcy73uJEUGm373UrNzM7NLywupZdXVtfWMxubVR3GikOFhzJUdZdpkCKACgqUI8UMN+VUHP7Z2O/dgNKizC4xmELZ91A+EJztBI7cyulxvk6Qm9gotKbkCbKHzQ5oMBJjUQ3R7qUb6dydqF46Ni0T6kTsGegBrFoGh/KVkyRbmdeWt2Qh7ECXTOuGY0fYSphCwSWM0s1YQ8R4n3WhYWjAzNBWMrlmRPeM0qFeqMwLkE7U7x0J87Ue+q6p9Bn29G9vLP7lNWL0jlqJCKIYIeCfg7xYUgzpOBraEQo4yqEhjCthdqW8xTjaAJMmxC+bv+fVPcLjl1wLg+ypdNpHItkm+yQHFIkZTIOSmTCuHkltyTR/Jk3VkP1rP18lmasqY9W+QHrNcP51ua4g=</latexit><latexit sha1_base64="z+WLEWO/k03WmabXxqAJUO0Q5/Q=">ACDXicdVC7SgNBFJ2N7/iKWtoMRiFpwq4o0UI2lhYRDEPSEKYndxNhsw+mLkrCUt+wMZfsbFQxNbezr9xEoOo6IFhDufcy73uJEUGm373UrNzM7NLywupZdXVtfWMxubVR3GikOFhzJUdZdpkCKACgqUI8UMN+VUHP7Z2O/dgNKizC4xmELZ91A+EJztBI7cyulxvk6Qm9gotKbkCbKHzQ5oMBJjUQ3R7qUb6dydqF46Ni0T6kTsGegBrFoGh/KVkyRbmdeWt2Qh7ECXTOuGY0fYSphCwSWM0s1YQ8R4n3WhYWjAzNBWMrlmRPeM0qFeqMwLkE7U7x0J87Ue+q6p9Bn29G9vLP7lNWL0jlqJCKIYIeCfg7xYUgzpOBraEQo4yqEhjCthdqW8xTjaAJMmxC+bv+fVPcLjl1wLg+ypdNpHItkm+yQHFIkZTIOSmTCuHkltyTR/Jk3VkP1rP18lmasqY9W+QHrNcP51ua4g=</latexit>
slide-47
SLIDE 47

Deep = composing many func'ons

slide-48
SLIDE 48

z(x) = k(j(i(h(g(f(x)))))

<latexit sha1_base64="RvgizvUSqK/GI8ahK7hgijH8Pk=">ACAnicdZDLSgMxFIYz9VbrbdSVuAkWYdyUjChTF0LRjcsK9gLtUDJpo3NXEgyYh2KG1/FjQtF3PoU7nwbM20pKvpD4PD953Byfi/mTCqEPo3c3PzC4lJ+ubCyura+YW5u1WUCEJrJOKRaHpYUs5CWlNMcdqMBcWBx2nDG5xnfuOGCsmi8EoNY+oGuBcynxGsNOqYO3fW7QE8hQPr2mJW3+pZvgaZOmYRlU7KjoOoV1CY0FNtBw0I0UwVbVjfrS7EUkCGirCsZQtG8XKTbFQjHA6KrQTSWNMBrhHW7oMcUClm45PGMF9TbrQj4R+oYJj+n0ixYGUw8DTnQFWfnby+BfXitRftlNWRgnioZkshPOFQRzPKAXSYoUXyoC0wE03+FpI8FJkqnVtAhzG7/v6gflmxUsi+PipWzaRx5sAv2gAVs4IAKuABVUAME3INH8AxejAfjyXg13iatOWM6sw1+yHj/ApzAlF0=</latexit><latexit sha1_base64="RvgizvUSqK/GI8ahK7hgijH8Pk=">ACAnicdZDLSgMxFIYz9VbrbdSVuAkWYdyUjChTF0LRjcsK9gLtUDJpo3NXEgyYh2KG1/FjQtF3PoU7nwbM20pKvpD4PD953Byfi/mTCqEPo3c3PzC4lJ+ubCyura+YW5u1WUCEJrJOKRaHpYUs5CWlNMcdqMBcWBx2nDG5xnfuOGCsmi8EoNY+oGuBcynxGsNOqYO3fW7QE8hQPr2mJW3+pZvgaZOmYRlU7KjoOoV1CY0FNtBw0I0UwVbVjfrS7EUkCGirCsZQtG8XKTbFQjHA6KrQTSWNMBrhHW7oMcUClm45PGMF9TbrQj4R+oYJj+n0ixYGUw8DTnQFWfnby+BfXitRftlNWRgnioZkshPOFQRzPKAXSYoUXyoC0wE03+FpI8FJkqnVtAhzG7/v6gflmxUsi+PipWzaRx5sAv2gAVs4IAKuABVUAME3INH8AxejAfjyXg13iatOWM6sw1+yHj/ApzAlF0=</latexit><latexit sha1_base64="RvgizvUSqK/GI8ahK7hgijH8Pk=">ACAnicdZDLSgMxFIYz9VbrbdSVuAkWYdyUjChTF0LRjcsK9gLtUDJpo3NXEgyYh2KG1/FjQtF3PoU7nwbM20pKvpD4PD953Byfi/mTCqEPo3c3PzC4lJ+ubCyura+YW5u1WUCEJrJOKRaHpYUs5CWlNMcdqMBcWBx2nDG5xnfuOGCsmi8EoNY+oGuBcynxGsNOqYO3fW7QE8hQPr2mJW3+pZvgaZOmYRlU7KjoOoV1CY0FNtBw0I0UwVbVjfrS7EUkCGirCsZQtG8XKTbFQjHA6KrQTSWNMBrhHW7oMcUClm45PGMF9TbrQj4R+oYJj+n0ixYGUw8DTnQFWfnby+BfXitRftlNWRgnioZkshPOFQRzPKAXSYoUXyoC0wE03+FpI8FJkqnVtAhzG7/v6gflmxUsi+PipWzaRx5sAv2gAVs4IAKuABVUAME3INH8AxejAfjyXg13iatOWM6sw1+yHj/ApzAlF0=</latexit><latexit sha1_base64="RvgizvUSqK/GI8ahK7hgijH8Pk=">ACAnicdZDLSgMxFIYz9VbrbdSVuAkWYdyUjChTF0LRjcsK9gLtUDJpo3NXEgyYh2KG1/FjQtF3PoU7nwbM20pKvpD4PD953Byfi/mTCqEPo3c3PzC4lJ+ubCyura+YW5u1WUCEJrJOKRaHpYUs5CWlNMcdqMBcWBx2nDG5xnfuOGCsmi8EoNY+oGuBcynxGsNOqYO3fW7QE8hQPr2mJW3+pZvgaZOmYRlU7KjoOoV1CY0FNtBw0I0UwVbVjfrS7EUkCGirCsZQtG8XKTbFQjHA6KrQTSWNMBrhHW7oMcUClm45PGMF9TbrQj4R+oYJj+n0ixYGUw8DTnQFWfnby+BfXitRftlNWRgnioZkshPOFQRzPKAXSYoUXyoC0wE03+FpI8FJkqnVtAhzG7/v6gflmxUsi+PipWzaRx5sAv2gAVs4IAKuABVUAME3INH8AxejAfjyXg13iatOWM6sw1+yHj/ApzAlF0=</latexit>
slide-49
SLIDE 49

Differen'able Programming

slide-50
SLIDE 50

SoQware that automa'cally calculates deriva'ves and compiles to GPU code

slide-51
SLIDE 51

Increasing complexity

  • f deep learning models
slide-52
SLIDE 52

Condi'onals and loops

slide-53
SLIDE 53

“Differen'able programming”

slide-54
SLIDE 54

Automa'c Differen'a'on

slide-55
SLIDE 55

Calcula'ng gradients

slide-56
SLIDE 56

Deriva'ves are composi'onal

slide-57
SLIDE 57

Algorithms for calcula'ng gradients

slide-58
SLIDE 58

Forward-mode AD

slide-59
SLIDE 59

Reverse-mode AD

slide-60
SLIDE 60

Composi'on of Deriva'ves

slide-61
SLIDE 61

Func'ons compose

slide-62
SLIDE 62

g f = g(f(x))

<latexit sha1_base64="qkPf4qUwNI1m8SCgn8kVeV/hRs=">AB/HicdZDLSgMxFIYz9VbrbRLN8EitJshI8rUhVB047KCvUA7lEyamYZmLiQZcRjq7hxoYhbH8Sdb2N6oajoD4HD95/DOfm9hDOpEPo0Ciura+sbxc3S1vbO7p65f9CWcSoIbZGYx6LrYUk5i2hLMcVpNxEUhx6nHW98NfU7d1RIFke3KkuoG+IgYj4jWGk0MsB7BMmCPThBQyqfvW+VhuYFWSd1x0HnUHbQjNBTbQctCQVsFBzYH70hzFJQxopwrGUPRslys2xUIxwOin1U0kTMY4oD1dRjik0s1nx0/gsSZD6MdCv0jBGf0+keNQyiz0dGeI1Uj+9qbwL6+XKr/u5ixKUkUjMl/kpxyqGE6TgEMmKFE80wUmgulbIRlhgYnSeZV0CMu/1+0TywbWfbNaVxuYijCA7BEagCGzigAa5BE7QARl4BM/gxXgwnoxX423eWjAWM2XwQ8b7FyWjkyc=</latexit><latexit sha1_base64="qkPf4qUwNI1m8SCgn8kVeV/hRs=">AB/HicdZDLSgMxFIYz9VbrbRLN8EitJshI8rUhVB047KCvUA7lEyamYZmLiQZcRjq7hxoYhbH8Sdb2N6oajoD4HD95/DOfm9hDOpEPo0Ciura+sbxc3S1vbO7p65f9CWcSoIbZGYx6LrYUk5i2hLMcVpNxEUhx6nHW98NfU7d1RIFke3KkuoG+IgYj4jWGk0MsB7BMmCPThBQyqfvW+VhuYFWSd1x0HnUHbQjNBTbQctCQVsFBzYH70hzFJQxopwrGUPRslys2xUIxwOin1U0kTMY4oD1dRjik0s1nx0/gsSZD6MdCv0jBGf0+keNQyiz0dGeI1Uj+9qbwL6+XKr/u5ixKUkUjMl/kpxyqGE6TgEMmKFE80wUmgulbIRlhgYnSeZV0CMu/1+0TywbWfbNaVxuYijCA7BEagCGzigAa5BE7QARl4BM/gxXgwnoxX423eWjAWM2XwQ8b7FyWjkyc=</latexit><latexit sha1_base64="qkPf4qUwNI1m8SCgn8kVeV/hRs=">AB/HicdZDLSgMxFIYz9VbrbRLN8EitJshI8rUhVB047KCvUA7lEyamYZmLiQZcRjq7hxoYhbH8Sdb2N6oajoD4HD95/DOfm9hDOpEPo0Ciura+sbxc3S1vbO7p65f9CWcSoIbZGYx6LrYUk5i2hLMcVpNxEUhx6nHW98NfU7d1RIFke3KkuoG+IgYj4jWGk0MsB7BMmCPThBQyqfvW+VhuYFWSd1x0HnUHbQjNBTbQctCQVsFBzYH70hzFJQxopwrGUPRslys2xUIxwOin1U0kTMY4oD1dRjik0s1nx0/gsSZD6MdCv0jBGf0+keNQyiz0dGeI1Uj+9qbwL6+XKr/u5ixKUkUjMl/kpxyqGE6TgEMmKFE80wUmgulbIRlhgYnSeZV0CMu/1+0TywbWfbNaVxuYijCA7BEagCGzigAa5BE7QARl4BM/gxXgwnoxX423eWjAWM2XwQ8b7FyWjkyc=</latexit><latexit sha1_base64="qkPf4qUwNI1m8SCgn8kVeV/hRs=">AB/HicdZDLSgMxFIYz9VbrbRLN8EitJshI8rUhVB047KCvUA7lEyamYZmLiQZcRjq7hxoYhbH8Sdb2N6oajoD4HD95/DOfm9hDOpEPo0Ciura+sbxc3S1vbO7p65f9CWcSoIbZGYx6LrYUk5i2hLMcVpNxEUhx6nHW98NfU7d1RIFke3KkuoG+IgYj4jWGk0MsB7BMmCPThBQyqfvW+VhuYFWSd1x0HnUHbQjNBTbQctCQVsFBzYH70hzFJQxopwrGUPRslys2xUIxwOin1U0kTMY4oD1dRjik0s1nx0/gsSZD6MdCv0jBGf0+keNQyiz0dGeI1Uj+9qbwL6+XKr/u5ixKUkUjMl/kpxyqGE6TgEMmKFE80wUmgulbIRlhgYnSeZV0CMu/1+0TywbWfbNaVxuYijCA7BEagCGzigAa5BE7QARl4BM/gxXgwnoxX423eWjAWM2XwQ8b7FyWjkyc=</latexit>
slide-63
SLIDE 63

Deriva'ves compose

slide-64
SLIDE 64

(g f)0 = (g0 f)f 0

<latexit sha1_base64="sZmzg3fzI0qzPIKMghK+XeDHmSE=">ACBnicdZDLSgMxFIYzXmu9jboUIVikdVMyokxdCEU3LivYC7RDyaSZaWgmMyQZoQxdufFV3LhQxK3P4M63Mb1QVPSHwMn3n0Nyfj/hTGmEPq2FxaXldXcWn59Y3Nr297Zbag4lYTWScxj2fKxopwJWtdMc9pKJMWRz2nTH1yN/eYdlYrF4lYPE+pFOBQsYARrg7r2QSmEHcIkgcFxEV7AUlic34Ni1y6g8nFdEZdMpoImiIkYvmpABmqnXtj04vJmlEhSYcK9V2UK9DEvNCKejfCdVNMFkgEPaNqXAEVeNljBI8M6cEgluYIDSf0+0SGI6WGkW86I6z76rc3hn957VQHFS9jIk1FWT6UJByqGM4zgT2mKRE86EpMJHM/BWSPpaYaJNc3oQw3/3/onFSdlDZuTktVC9nceTAPjgEJeAF1TBNaiBOiDgHjyCZ/BiPVhP1qv1Nm1dsGYze+CHrPcv0JKWKw=</latexit><latexit sha1_base64="sZmzg3fzI0qzPIKMghK+XeDHmSE=">ACBnicdZDLSgMxFIYzXmu9jboUIVikdVMyokxdCEU3LivYC7RDyaSZaWgmMyQZoQxdufFV3LhQxK3P4M63Mb1QVPSHwMn3n0Nyfj/hTGmEPq2FxaXldXcWn59Y3Nr297Zbag4lYTWScxj2fKxopwJWtdMc9pKJMWRz2nTH1yN/eYdlYrF4lYPE+pFOBQsYARrg7r2QSmEHcIkgcFxEV7AUlic34Ni1y6g8nFdEZdMpoImiIkYvmpABmqnXtj04vJmlEhSYcK9V2UK9DEvNCKejfCdVNMFkgEPaNqXAEVeNljBI8M6cEgluYIDSf0+0SGI6WGkW86I6z76rc3hn957VQHFS9jIk1FWT6UJByqGM4zgT2mKRE86EpMJHM/BWSPpaYaJNc3oQw3/3/onFSdlDZuTktVC9nceTAPjgEJeAF1TBNaiBOiDgHjyCZ/BiPVhP1qv1Nm1dsGYze+CHrPcv0JKWKw=</latexit><latexit sha1_base64="sZmzg3fzI0qzPIKMghK+XeDHmSE=">ACBnicdZDLSgMxFIYzXmu9jboUIVikdVMyokxdCEU3LivYC7RDyaSZaWgmMyQZoQxdufFV3LhQxK3P4M63Mb1QVPSHwMn3n0Nyfj/hTGmEPq2FxaXldXcWn59Y3Nr297Zbag4lYTWScxj2fKxopwJWtdMc9pKJMWRz2nTH1yN/eYdlYrF4lYPE+pFOBQsYARrg7r2QSmEHcIkgcFxEV7AUlic34Ni1y6g8nFdEZdMpoImiIkYvmpABmqnXtj04vJmlEhSYcK9V2UK9DEvNCKejfCdVNMFkgEPaNqXAEVeNljBI8M6cEgluYIDSf0+0SGI6WGkW86I6z76rc3hn957VQHFS9jIk1FWT6UJByqGM4zgT2mKRE86EpMJHM/BWSPpaYaJNc3oQw3/3/onFSdlDZuTktVC9nceTAPjgEJeAF1TBNaiBOiDgHjyCZ/BiPVhP1qv1Nm1dsGYze+CHrPcv0JKWKw=</latexit><latexit sha1_base64="sZmzg3fzI0qzPIKMghK+XeDHmSE=">ACBnicdZDLSgMxFIYzXmu9jboUIVikdVMyokxdCEU3LivYC7RDyaSZaWgmMyQZoQxdufFV3LhQxK3P4M63Mb1QVPSHwMn3n0Nyfj/hTGmEPq2FxaXldXcWn59Y3Nr297Zbag4lYTWScxj2fKxopwJWtdMc9pKJMWRz2nTH1yN/eYdlYrF4lYPE+pFOBQsYARrg7r2QSmEHcIkgcFxEV7AUlic34Ni1y6g8nFdEZdMpoImiIkYvmpABmqnXtj04vJmlEhSYcK9V2UK9DEvNCKejfCdVNMFkgEPaNqXAEVeNljBI8M6cEgluYIDSf0+0SGI6WGkW86I6z76rc3hn957VQHFS9jIk1FWT6UJByqGM4zgT2mKRE86EpMJHM/BWSPpaYaJNc3oQw3/3/onFSdlDZuTktVC9nceTAPjgEJeAF1TBNaiBOiDgHjyCZ/BiPVhP1qv1Nm1dsGYze+CHrPcv0JKWKw=</latexit>
slide-65
SLIDE 65

Calcula'ng Gradients

slide-66
SLIDE 66

Mathema'cian’s approach

slide-67
SLIDE 67

Symbolic differen'a'on

slide-68
SLIDE 68

(af)0 = af 0 (f + g)0 = f 0 + g0 (f(x)g(x))0 = f 0(x)g(x) + f(x)g0(x) (g f)0 = (g0 f)f 0 (xn)0 = nxn1 (eax)0 = aeax (ln(x))0 = 1 x (sin(x))0 = cos(x) (cos(x))0 = sin(x) (tan(x))0 = 1 + tan2(x)

<latexit sha1_base64="ZXtciMxC7sBxXdJ2O+/LGE35gmg=">AC83icdZLNbtQwEMedUKBdvrblyMXqCpoKdZVUoC0HpAouPbZSt6202V1NvE5q1XEi26l2FeU1uHAIa59md54mzqJdykIRrI08/vPeCYTRzlnSv+L8d9sPbw0eP1jc6Tp8+ev+hubp2prJCEDknGM3kRgaKcCTrUTHN6kUsKacTpeXT1udbPr6lULBOnepHTcQqJYDEjoA2abjobHsS7O/jNRwzxDg7DjhfjtzhpkSHGt9ib7ybmLBUbmoRGqeMmL8EhYZJge6tXl1tgG8wnotXEfFKvaBqKJ2UMK/sKG3Q8JCLVdcwlkDKoCqXmL3RJKp5RDWb4U9m9YqGn6XBGb6Gkz2DZp2e37/w8Fg4L/HQd9vDBtibOCvSA9ZO52b8NZRoqUCk04KDUK/FyPS5CaEU6rTlgomgO5goSOjCsgpWpcNv+swq8NmeE4k+YIjRt6v6KEVKlFGpnMFPSl+lur4b+0UaHjg3HJRF5oKkjbKC41hmuHwCeMUmJ5gvjAJHMzIrJZi9avNMOmYJq2/v3O23w/8fnDyrnf4ya5jHb1C28hDARqgQ3SEjtEQESd3vjfnO9u4X51f7g/21TXsTUv0R/m3twB5GbUCw=</latexit><latexit sha1_base64="ZXtciMxC7sBxXdJ2O+/LGE35gmg=">AC83icdZLNbtQwEMedUKBdvrblyMXqCpoKdZVUoC0HpAouPbZSt6202V1NvE5q1XEi26l2FeU1uHAIa59md54mzqJdykIRrI08/vPeCYTRzlnSv+L8d9sPbw0eP1jc6Tp8+ev+hubp2prJCEDknGM3kRgaKcCTrUTHN6kUsKacTpeXT1udbPr6lULBOnepHTcQqJYDEjoA2abjobHsS7O/jNRwzxDg7DjhfjtzhpkSHGt9ib7ybmLBUbmoRGqeMmL8EhYZJge6tXl1tgG8wnotXEfFKvaBqKJ2UMK/sKG3Q8JCLVdcwlkDKoCqXmL3RJKp5RDWb4U9m9YqGn6XBGb6Gkz2DZp2e37/w8Fg4L/HQd9vDBtibOCvSA9ZO52b8NZRoqUCk04KDUK/FyPS5CaEU6rTlgomgO5goSOjCsgpWpcNv+swq8NmeE4k+YIjRt6v6KEVKlFGpnMFPSl+lur4b+0UaHjg3HJRF5oKkjbKC41hmuHwCeMUmJ5gvjAJHMzIrJZi9avNMOmYJq2/v3O23w/8fnDyrnf4ya5jHb1C28hDARqgQ3SEjtEQESd3vjfnO9u4X51f7g/21TXsTUv0R/m3twB5GbUCw=</latexit><latexit sha1_base64="ZXtciMxC7sBxXdJ2O+/LGE35gmg=">AC83icdZLNbtQwEMedUKBdvrblyMXqCpoKdZVUoC0HpAouPbZSt6202V1NvE5q1XEi26l2FeU1uHAIa59md54mzqJdykIRrI08/vPeCYTRzlnSv+L8d9sPbw0eP1jc6Tp8+ev+hubp2prJCEDknGM3kRgaKcCTrUTHN6kUsKacTpeXT1udbPr6lULBOnepHTcQqJYDEjoA2abjobHsS7O/jNRwzxDg7DjhfjtzhpkSHGt9ib7ybmLBUbmoRGqeMmL8EhYZJge6tXl1tgG8wnotXEfFKvaBqKJ2UMK/sKG3Q8JCLVdcwlkDKoCqXmL3RJKp5RDWb4U9m9YqGn6XBGb6Gkz2DZp2e37/w8Fg4L/HQd9vDBtibOCvSA9ZO52b8NZRoqUCk04KDUK/FyPS5CaEU6rTlgomgO5goSOjCsgpWpcNv+swq8NmeE4k+YIjRt6v6KEVKlFGpnMFPSl+lur4b+0UaHjg3HJRF5oKkjbKC41hmuHwCeMUmJ5gvjAJHMzIrJZi9avNMOmYJq2/v3O23w/8fnDyrnf4ya5jHb1C28hDARqgQ3SEjtEQESd3vjfnO9u4X51f7g/21TXsTUv0R/m3twB5GbUCw=</latexit><latexit sha1_base64="ZXtciMxC7sBxXdJ2O+/LGE35gmg=">AC83icdZLNbtQwEMedUKBdvrblyMXqCpoKdZVUoC0HpAouPbZSt6202V1NvE5q1XEi26l2FeU1uHAIa59md54mzqJdykIRrI08/vPeCYTRzlnSv+L8d9sPbw0eP1jc6Tp8+ev+hubp2prJCEDknGM3kRgaKcCTrUTHN6kUsKacTpeXT1udbPr6lULBOnepHTcQqJYDEjoA2abjobHsS7O/jNRwzxDg7DjhfjtzhpkSHGt9ib7ybmLBUbmoRGqeMmL8EhYZJge6tXl1tgG8wnotXEfFKvaBqKJ2UMK/sKG3Q8JCLVdcwlkDKoCqXmL3RJKp5RDWb4U9m9YqGn6XBGb6Gkz2DZp2e37/w8Fg4L/HQd9vDBtibOCvSA9ZO52b8NZRoqUCk04KDUK/FyPS5CaEU6rTlgomgO5goSOjCsgpWpcNv+swq8NmeE4k+YIjRt6v6KEVKlFGpnMFPSl+lur4b+0UaHjg3HJRF5oKkjbKC41hmuHwCeMUmJ5gvjAJHMzIrJZi9avNMOmYJq2/v3O23w/8fnDyrnf4ya5jHb1C28hDARqgQ3SEjtEQESd3vjfnO9u4X51f7g/21TXsTUv0R/m3twB5GbUCw=</latexit>
slide-69
SLIDE 69

Exact solu'on

slide-70
SLIDE 70

No loops or condi'onals

slide-71
SLIDE 71

Size of deriva've grows exponen'ally

slide-72
SLIDE 72

Programmer’s approach

slide-73
SLIDE 73

f(x + ✏) − f(x) ✏

<latexit sha1_base64="XjiEhNkQrwZlWcFCgKxYvQ2Gvzw=">ACDnicdZDLSgMxFIYz9VbrbdSlm2ARWsRhRpSpu6IblxXsBTpDyaSZNjSTGZKMWIY+gRtfxY0LRdy6dufbmF4sKvpD4OT7zyE5f5AwKpVtfxi5hcWl5ZX8amFtfWNzy9zeacg4FZjUcxi0QqQJIxyUldUMdJKBEFRwEgzGFyM/eYNEZLG/FoNE+JHqMdpSDFSGnXMAy8UCGdh6fbQI4mkLOZleAT1vTzKvsioYxZt6ziuvYpdCx7IqiJlmvPSRHMVOuY7143xmlEuMIMSdl27ET5GRKYkZGBS+VJEF4gHqkrUuOIiL9bLOCB5o0oVhLPThCk7o94kMRVIOo0B3Rkj15W9vDP/y2qkK35GeZIqwvH0oTBlUMVwnA3sUkGwYkNdICyo/ivEfaTzUTrBg5hv/RePYcmzLuTopVs9nceTBHtgHJeAF1TBJaiBOsDgDjyAJ/Bs3BuPxovxOm3NGbOZXfBDxtsnyX2b9w=</latexit><latexit sha1_base64="XjiEhNkQrwZlWcFCgKxYvQ2Gvzw=">ACDnicdZDLSgMxFIYz9VbrbdSlm2ARWsRhRpSpu6IblxXsBTpDyaSZNjSTGZKMWIY+gRtfxY0LRdy6dufbmF4sKvpD4OT7zyE5f5AwKpVtfxi5hcWl5ZX8amFtfWNzy9zeacg4FZjUcxi0QqQJIxyUldUMdJKBEFRwEgzGFyM/eYNEZLG/FoNE+JHqMdpSDFSGnXMAy8UCGdh6fbQI4mkLOZleAT1vTzKvsioYxZt6ziuvYpdCx7IqiJlmvPSRHMVOuY7143xmlEuMIMSdl27ET5GRKYkZGBS+VJEF4gHqkrUuOIiL9bLOCB5o0oVhLPThCk7o94kMRVIOo0B3Rkj15W9vDP/y2qkK35GeZIqwvH0oTBlUMVwnA3sUkGwYkNdICyo/ivEfaTzUTrBg5hv/RePYcmzLuTopVs9nceTBHtgHJeAF1TBJaiBOsDgDjyAJ/Bs3BuPxovxOm3NGbOZXfBDxtsnyX2b9w=</latexit><latexit sha1_base64="XjiEhNkQrwZlWcFCgKxYvQ2Gvzw=">ACDnicdZDLSgMxFIYz9VbrbdSlm2ARWsRhRpSpu6IblxXsBTpDyaSZNjSTGZKMWIY+gRtfxY0LRdy6dufbmF4sKvpD4OT7zyE5f5AwKpVtfxi5hcWl5ZX8amFtfWNzy9zeacg4FZjUcxi0QqQJIxyUldUMdJKBEFRwEgzGFyM/eYNEZLG/FoNE+JHqMdpSDFSGnXMAy8UCGdh6fbQI4mkLOZleAT1vTzKvsioYxZt6ziuvYpdCx7IqiJlmvPSRHMVOuY7143xmlEuMIMSdl27ET5GRKYkZGBS+VJEF4gHqkrUuOIiL9bLOCB5o0oVhLPThCk7o94kMRVIOo0B3Rkj15W9vDP/y2qkK35GeZIqwvH0oTBlUMVwnA3sUkGwYkNdICyo/ivEfaTzUTrBg5hv/RePYcmzLuTopVs9nceTBHtgHJeAF1TBJaiBOsDgDjyAJ/Bs3BuPxovxOm3NGbOZXfBDxtsnyX2b9w=</latexit><latexit sha1_base64="XjiEhNkQrwZlWcFCgKxYvQ2Gvzw=">ACDnicdZDLSgMxFIYz9VbrbdSlm2ARWsRhRpSpu6IblxXsBTpDyaSZNjSTGZKMWIY+gRtfxY0LRdy6dufbmF4sKvpD4OT7zyE5f5AwKpVtfxi5hcWl5ZX8amFtfWNzy9zeacg4FZjUcxi0QqQJIxyUldUMdJKBEFRwEgzGFyM/eYNEZLG/FoNE+JHqMdpSDFSGnXMAy8UCGdh6fbQI4mkLOZleAT1vTzKvsioYxZt6ziuvYpdCx7IqiJlmvPSRHMVOuY7143xmlEuMIMSdl27ET5GRKYkZGBS+VJEF4gHqkrUuOIiL9bLOCB5o0oVhLPThCk7o94kMRVIOo0B3Rkj15W9vDP/y2qkK35GeZIqwvH0oTBlUMVwnA3sUkGwYkNdICyo/ivEfaTzUTrBg5hv/RePYcmzLuTopVs9nceTBHtgHJeAF1TBJaiBOsDgDjyAJ/Bs3BuPxovxOm3NGbOZXfBDxtsnyX2b9w=</latexit>
slide-74
SLIDE 74

Any func'on

slide-75
SLIDE 75
  • Inexact. Choosing ε is

hard

slide-76
SLIDE 76

Automa'c differen'a'on approach

slide-77
SLIDE 77

Two main algorithms: forward and reverse

slide-78
SLIDE 78

Exact solu'on

slide-79
SLIDE 79

Any func'on

slide-80
SLIDE 80

Forward-mode AD

slide-81
SLIDE 81

Calculate with dual numbers

slide-82
SLIDE 82

a + b✏ ✏2 = 0

<latexit sha1_base64="dSm5u9CdH938lPJNyfm4wRbGoNk=">ACHicdZDLSgMxFIYzXut4q7p0YbAIgjBkitK6EIpuXFawF+jUkzbWgmGZKMUEqXbnwVNy4UcesjuPNtTC8WFf0h8POdczg5f5hwpg1CH87c/MLi0nJmxV1dW9/YzG5tV7VMFaEVIrlU9RBrypmgFcMp/VEURyHnNbC3sWoXrulSjMprk0/oc0YdwSLGMHGolZ2D8MjGAY0YxLAYPA/fI3eXgGUSubQ95psVBAJ9D30FjQEqsCmpEcmKrcyr4HbUnSmApDONa64aPENAdYGUY4HbpBqmCSQ93aMNagWOqm4PxIUN4YEkbRlLZJwc0+8TAxr3Y9D2xlj09W/ayP4V62RmqjYHDCRpIYKMlkUpRwaCUepwDZTlBjetwYTxexfIelihYmx2bk2hNnt/5tq3vOR518d50rn0zgyYBfsg0PgwIogUtQBhVAwB14AE/g2bl3Hp0X53XSOudMZ3bADzlvnyu2mCo=</latexit><latexit sha1_base64="dSm5u9CdH938lPJNyfm4wRbGoNk=">ACHicdZDLSgMxFIYzXut4q7p0YbAIgjBkitK6EIpuXFawF+jUkzbWgmGZKMUEqXbnwVNy4UcesjuPNtTC8WFf0h8POdczg5f5hwpg1CH87c/MLi0nJmxV1dW9/YzG5tV7VMFaEVIrlU9RBrypmgFcMp/VEURyHnNbC3sWoXrulSjMprk0/oc0YdwSLGMHGolZ2D8MjGAY0YxLAYPA/fI3eXgGUSubQ95psVBAJ9D30FjQEqsCmpEcmKrcyr4HbUnSmApDONa64aPENAdYGUY4HbpBqmCSQ93aMNagWOqm4PxIUN4YEkbRlLZJwc0+8TAxr3Y9D2xlj09W/ayP4V62RmqjYHDCRpIYKMlkUpRwaCUepwDZTlBjetwYTxexfIelihYmx2bk2hNnt/5tq3vOR518d50rn0zgyYBfsg0PgwIogUtQBhVAwB14AE/g2bl3Hp0X53XSOudMZ3bADzlvnyu2mCo=</latexit><latexit sha1_base64="dSm5u9CdH938lPJNyfm4wRbGoNk=">ACHicdZDLSgMxFIYzXut4q7p0YbAIgjBkitK6EIpuXFawF+jUkzbWgmGZKMUEqXbnwVNy4UcesjuPNtTC8WFf0h8POdczg5f5hwpg1CH87c/MLi0nJmxV1dW9/YzG5tV7VMFaEVIrlU9RBrypmgFcMp/VEURyHnNbC3sWoXrulSjMprk0/oc0YdwSLGMHGolZ2D8MjGAY0YxLAYPA/fI3eXgGUSubQ95psVBAJ9D30FjQEqsCmpEcmKrcyr4HbUnSmApDONa64aPENAdYGUY4HbpBqmCSQ93aMNagWOqm4PxIUN4YEkbRlLZJwc0+8TAxr3Y9D2xlj09W/ayP4V62RmqjYHDCRpIYKMlkUpRwaCUepwDZTlBjetwYTxexfIelihYmx2bk2hNnt/5tq3vOR518d50rn0zgyYBfsg0PgwIogUtQBhVAwB14AE/g2bl3Hp0X53XSOudMZ3bADzlvnyu2mCo=</latexit><latexit sha1_base64="dSm5u9CdH938lPJNyfm4wRbGoNk=">ACHicdZDLSgMxFIYzXut4q7p0YbAIgjBkitK6EIpuXFawF+jUkzbWgmGZKMUEqXbnwVNy4UcesjuPNtTC8WFf0h8POdczg5f5hwpg1CH87c/MLi0nJmxV1dW9/YzG5tV7VMFaEVIrlU9RBrypmgFcMp/VEURyHnNbC3sWoXrulSjMprk0/oc0YdwSLGMHGolZ2D8MjGAY0YxLAYPA/fI3eXgGUSubQ95psVBAJ9D30FjQEqsCmpEcmKrcyr4HbUnSmApDONa64aPENAdYGUY4HbpBqmCSQ93aMNagWOqm4PxIUN4YEkbRlLZJwc0+8TAxr3Y9D2xlj09W/ayP4V62RmqjYHDCRpIYKMlkUpRwaCUepwDZTlBjetwYTxexfIelihYmx2bk2hNnt/5tq3vOR518d50rn0zgyYBfsg0PgwIogUtQBhVAwB14AE/g2bl3Hp0X53XSOudMZ3bADzlvnyu2mCo=</latexit>
slide-83
SLIDE 83

final case class Dual(v: Double, d: Double)

slide-84
SLIDE 84

Add rules for basic

  • pera'ons and func'ons
slide-85
SLIDE 85

(a + b✏) + (c + d✏) = (a + c) + (b + d)✏

<latexit sha1_base64="SHkBKftNJ1QepJC1jc3g4jIdByk=">ACJXicdZDLSgMxFIYz9VbrbdSlm2ARphTKjChTQaHoxmUFe4HOUDKZtA3NZIYkI5TSl3Hjq7hxYRHBla9ierFe0B8STr7/HJL8QcKoVLb9ZmSWldW17LruY3Nre0dc3evLuNUYFLDMYtFM0CSMpJTVHFSDMRBEUBI42gfzXxG3dESBrzWzVIiB+hLqcdipHSqG2eWwgWYeCRFIW84I+WFhv4RfxvNwFtFART82gGBY+vbaZt0tnZde1T6FTsqeCmi59oLkwVzVtjn2whinEeEKMyRly7ET5Q+RUBQzMsp5qSQJwn3UJS1dchQR6Q+nvxzBI01C2ImFXlzBKf0+MUSRlIMo0J0RUj3525vAv7xWqjplf0h5kirC8eyiTsqgiuEkMhSQbBiA10gLKh+K8Q9JBWOticDmHx9/+L+nHJsUvOzUm+cjmPIwsOwCGwgANcUAHXoApqAIN78Aiewdh4MJ6MF+N1pox5jP74IeM9w9caDu</latexit><latexit sha1_base64="SHkBKftNJ1QepJC1jc3g4jIdByk=">ACJXicdZDLSgMxFIYz9VbrbdSlm2ARphTKjChTQaHoxmUFe4HOUDKZtA3NZIYkI5TSl3Hjq7hxYRHBla9ierFe0B8STr7/HJL8QcKoVLb9ZmSWldW17LruY3Nre0dc3evLuNUYFLDMYtFM0CSMpJTVHFSDMRBEUBI42gfzXxG3dESBrzWzVIiB+hLqcdipHSqG2eWwgWYeCRFIW84I+WFhv4RfxvNwFtFART82gGBY+vbaZt0tnZde1T6FTsqeCmi59oLkwVzVtjn2whinEeEKMyRly7ET5Q+RUBQzMsp5qSQJwn3UJS1dchQR6Q+nvxzBI01C2ImFXlzBKf0+MUSRlIMo0J0RUj3525vAv7xWqjplf0h5kirC8eyiTsqgiuEkMhSQbBiA10gLKh+K8Q9JBWOticDmHx9/+L+nHJsUvOzUm+cjmPIwsOwCGwgANcUAHXoApqAIN78Aiewdh4MJ6MF+N1pox5jP74IeM9w9caDu</latexit><latexit sha1_base64="SHkBKftNJ1QepJC1jc3g4jIdByk=">ACJXicdZDLSgMxFIYz9VbrbdSlm2ARphTKjChTQaHoxmUFe4HOUDKZtA3NZIYkI5TSl3Hjq7hxYRHBla9ierFe0B8STr7/HJL8QcKoVLb9ZmSWldW17LruY3Nre0dc3evLuNUYFLDMYtFM0CSMpJTVHFSDMRBEUBI42gfzXxG3dESBrzWzVIiB+hLqcdipHSqG2eWwgWYeCRFIW84I+WFhv4RfxvNwFtFART82gGBY+vbaZt0tnZde1T6FTsqeCmi59oLkwVzVtjn2whinEeEKMyRly7ET5Q+RUBQzMsp5qSQJwn3UJS1dchQR6Q+nvxzBI01C2ImFXlzBKf0+MUSRlIMo0J0RUj3525vAv7xWqjplf0h5kirC8eyiTsqgiuEkMhSQbBiA10gLKh+K8Q9JBWOticDmHx9/+L+nHJsUvOzUm+cjmPIwsOwCGwgANcUAHXoApqAIN78Aiewdh4MJ6MF+N1pox5jP74IeM9w9caDu</latexit><latexit sha1_base64="SHkBKftNJ1QepJC1jc3g4jIdByk=">ACJXicdZDLSgMxFIYz9VbrbdSlm2ARphTKjChTQaHoxmUFe4HOUDKZtA3NZIYkI5TSl3Hjq7hxYRHBla9ierFe0B8STr7/HJL8QcKoVLb9ZmSWldW17LruY3Nre0dc3evLuNUYFLDMYtFM0CSMpJTVHFSDMRBEUBI42gfzXxG3dESBrzWzVIiB+hLqcdipHSqG2eWwgWYeCRFIW84I+WFhv4RfxvNwFtFART82gGBY+vbaZt0tnZde1T6FTsqeCmi59oLkwVzVtjn2whinEeEKMyRly7ET5Q+RUBQzMsp5qSQJwn3UJS1dchQR6Q+nvxzBI01C2ImFXlzBKf0+MUSRlIMo0J0RUj3525vAv7xWqjplf0h5kirC8eyiTsqgiuEkMhSQbBiA10gLKh+K8Q9JBWOticDmHx9/+L+nHJsUvOzUm+cjmPIwsOwCGwgANcUAHXoApqAIN78Aiewdh4MJ6MF+N1pox5jP74IeM9w9caDu</latexit>
slide-86
SLIDE 86

final case class Dual(v: Double, d: Double) { def +(that: Dual): Dual = Dual(this.v + that.v, this.d + that.d) }

slide-87
SLIDE 87

(a + b✏)(c + d✏) = ac + bc✏ + ad✏ + bd✏2 = ac + (bc + ad)✏

<latexit sha1_base64="cMVpoKZwAZ6h1JW4Hyhk+LOBHJI=">ACVHicdZFdS8MwFIbT6vyoX1MvQkOYUMY7VA2LwTRGy8V3BTWOU7SbAtL05Kkwhj+SL0Q/CXeGE6tzFDwTO+7znkPYNSQXxvfHXdpubCyurbubWxube8Ud/daOskUZU2aiEQ9ENBMcMmahvBHlLFICaC3ZPhVe7fPzGleSLvzChlnRj6kvc4BWNRtzgsAz7GJGSp5iKRlTK1MpLHIbeOYcEjqjVkC0IMhcPNYWFsqETiYrM7dbLPnVs0a97p/ioOpPCltiq+7PSQlN6ZbfA2jhGYxk4YK0Lod+KnpjEZTgV79sJMsxToEPqsbVsJMdOd8SUZ3xkSYR7ibJHGjyhixtjiLUexcROxmAG+reXw7+8dmZ6jc6YyzQzTNLvi3qZwCbBecI4opRI0a2Aaq4/VZMB6CAGvsOng1h/u/N61aNfCrwe1J6eJyGscaOkCHqIwCVEcX6BrdoCai6AV9OMhxnDfn01yC9+jrjPd2Uc/yt3+AlAjrgw=</latexit><latexit sha1_base64="cMVpoKZwAZ6h1JW4Hyhk+LOBHJI=">ACVHicdZFdS8MwFIbT6vyoX1MvQkOYUMY7VA2LwTRGy8V3BTWOU7SbAtL05Kkwhj+SL0Q/CXeGE6tzFDwTO+7znkPYNSQXxvfHXdpubCyurbubWxube8Ud/daOskUZU2aiEQ9ENBMcMmahvBHlLFICaC3ZPhVe7fPzGleSLvzChlnRj6kvc4BWNRtzgsAz7GJGSp5iKRlTK1MpLHIbeOYcEjqjVkC0IMhcPNYWFsqETiYrM7dbLPnVs0a97p/ioOpPCltiq+7PSQlN6ZbfA2jhGYxk4YK0Lod+KnpjEZTgV79sJMsxToEPqsbVsJMdOd8SUZ3xkSYR7ibJHGjyhixtjiLUexcROxmAG+reXw7+8dmZ6jc6YyzQzTNLvi3qZwCbBecI4opRI0a2Aaq4/VZMB6CAGvsOng1h/u/N61aNfCrwe1J6eJyGscaOkCHqIwCVEcX6BrdoCai6AV9OMhxnDfn01yC9+jrjPd2Uc/yt3+AlAjrgw=</latexit><latexit sha1_base64="cMVpoKZwAZ6h1JW4Hyhk+LOBHJI=">ACVHicdZFdS8MwFIbT6vyoX1MvQkOYUMY7VA2LwTRGy8V3BTWOU7SbAtL05Kkwhj+SL0Q/CXeGE6tzFDwTO+7znkPYNSQXxvfHXdpubCyurbubWxube8Ud/daOskUZU2aiEQ9ENBMcMmahvBHlLFICaC3ZPhVe7fPzGleSLvzChlnRj6kvc4BWNRtzgsAz7GJGSp5iKRlTK1MpLHIbeOYcEjqjVkC0IMhcPNYWFsqETiYrM7dbLPnVs0a97p/ioOpPCltiq+7PSQlN6ZbfA2jhGYxk4YK0Lod+KnpjEZTgV79sJMsxToEPqsbVsJMdOd8SUZ3xkSYR7ibJHGjyhixtjiLUexcROxmAG+reXw7+8dmZ6jc6YyzQzTNLvi3qZwCbBecI4opRI0a2Aaq4/VZMB6CAGvsOng1h/u/N61aNfCrwe1J6eJyGscaOkCHqIwCVEcX6BrdoCai6AV9OMhxnDfn01yC9+jrjPd2Uc/yt3+AlAjrgw=</latexit><latexit sha1_base64="cMVpoKZwAZ6h1JW4Hyhk+LOBHJI=">ACVHicdZFdS8MwFIbT6vyoX1MvQkOYUMY7VA2LwTRGy8V3BTWOU7SbAtL05Kkwhj+SL0Q/CXeGE6tzFDwTO+7znkPYNSQXxvfHXdpubCyurbubWxube8Ud/daOskUZU2aiEQ9ENBMcMmahvBHlLFICaC3ZPhVe7fPzGleSLvzChlnRj6kvc4BWNRtzgsAz7GJGSp5iKRlTK1MpLHIbeOYcEjqjVkC0IMhcPNYWFsqETiYrM7dbLPnVs0a97p/ioOpPCltiq+7PSQlN6ZbfA2jhGYxk4YK0Lod+KnpjEZTgV79sJMsxToEPqsbVsJMdOd8SUZ3xkSYR7ibJHGjyhixtjiLUexcROxmAG+reXw7+8dmZ6jc6YyzQzTNLvi3qZwCbBecI4opRI0a2Aaq4/VZMB6CAGvsOng1h/u/N61aNfCrwe1J6eJyGscaOkCHqIwCVEcX6BrdoCai6AV9OMhxnDfn01yC9+jrjPd2Uc/yt3+AlAjrgw=</latexit>
slide-88
SLIDE 88

final case class Dual(v: Double, d: Double) { def +(that: Dual): Dual = Dual(this.v + that.v, this.d + that.d) 
 def *(that: Dual): Dual = Dual(this.v * that.v, 
 (this.v * that.d) + (this.d * that.v)) }

slide-89
SLIDE 89

f(a + b✏) = f(a) + f 0(a)b✏

<latexit sha1_base64="K6twBKbOB5C0wzZzXVPiUxzw7U=">ACD3icdZDLSgMxFIYz9VbrbdSlm2BRWwplRpSpC6HoxmUFWwvtUDJpg3NJEOSEcrQN3Djq7hxoYhbt+58G9MLRUV/CDl8/zk5w9iRpV2nE8rs7C4tLySXc2trW9sbtnbOw0lEolJHQsmZDNAijDKSV1TzUgzlgRFASO3weBy7N/eEamo4Dd6GBM/Qj1OQ4qRNqhjH4YFVAraJFaUCV6E59CAIizB8Mjc6Nj53yWcXznFPolp2JoCFGnjMneTBTrWN/tLsCJxHhGjOkVMt1Yu2nSGqKGRnl2okiMcID1CMtU3IUEeWnk31G8MCQLgyFNIdrOKHfJ1IUKTWMAtMZId1Xv70x/MtrJTqs+CnlcaIJx9OHwoRBLeA4HNilkmDNhqZAWFLzV4j7SCKsTYQ5E8J89/+LxnHZdcru9Um+ejGLIwv2wD4oABd4oAquQA3UAQb34BE8gxfrwXqyXq23aWvGms3sgh+y3r8AbXWaQ=</latexit><latexit sha1_base64="K6twBKbOB5C0wzZzXVPiUxzw7U=">ACD3icdZDLSgMxFIYz9VbrbdSlm2BRWwplRpSpC6HoxmUFWwvtUDJpg3NJEOSEcrQN3Djq7hxoYhbt+58G9MLRUV/CDl8/zk5w9iRpV2nE8rs7C4tLySXc2trW9sbtnbOw0lEolJHQsmZDNAijDKSV1TzUgzlgRFASO3weBy7N/eEamo4Dd6GBM/Qj1OQ4qRNqhjH4YFVAraJFaUCV6E59CAIizB8Mjc6Nj53yWcXznFPolp2JoCFGnjMneTBTrWN/tLsCJxHhGjOkVMt1Yu2nSGqKGRnl2okiMcID1CMtU3IUEeWnk31G8MCQLgyFNIdrOKHfJ1IUKTWMAtMZId1Xv70x/MtrJTqs+CnlcaIJx9OHwoRBLeA4HNilkmDNhqZAWFLzV4j7SCKsTYQ5E8J89/+LxnHZdcru9Um+ejGLIwv2wD4oABd4oAquQA3UAQb34BE8gxfrwXqyXq23aWvGms3sgh+y3r8AbXWaQ=</latexit><latexit sha1_base64="K6twBKbOB5C0wzZzXVPiUxzw7U=">ACD3icdZDLSgMxFIYz9VbrbdSlm2BRWwplRpSpC6HoxmUFWwvtUDJpg3NJEOSEcrQN3Djq7hxoYhbt+58G9MLRUV/CDl8/zk5w9iRpV2nE8rs7C4tLySXc2trW9sbtnbOw0lEolJHQsmZDNAijDKSV1TzUgzlgRFASO3weBy7N/eEamo4Dd6GBM/Qj1OQ4qRNqhjH4YFVAraJFaUCV6E59CAIizB8Mjc6Nj53yWcXznFPolp2JoCFGnjMneTBTrWN/tLsCJxHhGjOkVMt1Yu2nSGqKGRnl2okiMcID1CMtU3IUEeWnk31G8MCQLgyFNIdrOKHfJ1IUKTWMAtMZId1Xv70x/MtrJTqs+CnlcaIJx9OHwoRBLeA4HNilkmDNhqZAWFLzV4j7SCKsTYQ5E8J89/+LxnHZdcru9Um+ejGLIwv2wD4oABd4oAquQA3UAQb34BE8gxfrwXqyXq23aWvGms3sgh+y3r8AbXWaQ=</latexit><latexit sha1_base64="K6twBKbOB5C0wzZzXVPiUxzw7U=">ACD3icdZDLSgMxFIYz9VbrbdSlm2BRWwplRpSpC6HoxmUFWwvtUDJpg3NJEOSEcrQN3Djq7hxoYhbt+58G9MLRUV/CDl8/zk5w9iRpV2nE8rs7C4tLySXc2trW9sbtnbOw0lEolJHQsmZDNAijDKSV1TzUgzlgRFASO3weBy7N/eEamo4Dd6GBM/Qj1OQ4qRNqhjH4YFVAraJFaUCV6E59CAIizB8Mjc6Nj53yWcXznFPolp2JoCFGnjMneTBTrWN/tLsCJxHhGjOkVMt1Yu2nSGqKGRnl2okiMcID1CMtU3IUEeWnk31G8MCQLgyFNIdrOKHfJ1IUKTWMAtMZId1Xv70x/MtrJTqs+CnlcaIJx9OHwoRBLeA4HNilkmDNhqZAWFLzV4j7SCKsTYQ5E8J89/+LxnHZdcru9Um+ejGLIwv2wD4oABd4oAquQA3UAQb34BE8gxfrwXqyXq23aWvGms3sgh+y3r8AbXWaQ=</latexit>
slide-90
SLIDE 90

final case class Dual(v: Double, d: Double) { def +(that: Dual): Dual = Dual(this.v + that.v, this.d + that.d) 
 def *(that: Dual): Dual = Dual(this.v * that.v, 
 (this.v * that.d) + (this.d * that.v)) def sin: Dual = Dual(Math.sin(this.v), Math.cos(this.v) * this.d) }

slide-91
SLIDE 91

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>
slide-92
SLIDE 92

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

slide-93
SLIDE 93

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

Dual(1.0, 1)

slide-94
SLIDE 94

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

Dual(0.84, 0.54) Dual(0.84, 0.54)

slide-95
SLIDE 95

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

Dual(0.71, 0.91)

slide-96
SLIDE 96

val f = (x: Dual) => x.sin * x.sin f(Dual(1.0, 1)) // res: Dual = Dual(0.7080734182735712,0.9092974268256818)

slide-97
SLIDE 97

Manipula'on of the chain rule

slide-98
SLIDE 98

f(a + b✏) = f(a) + f 0(a)b✏

<latexit sha1_base64="K6twBKbOB5C0wzZzXVPiUxzw7U=">ACD3icdZDLSgMxFIYz9VbrbdSlm2BRWwplRpSpC6HoxmUFWwvtUDJpg3NJEOSEcrQN3Djq7hxoYhbt+58G9MLRUV/CDl8/zk5w9iRpV2nE8rs7C4tLySXc2trW9sbtnbOw0lEolJHQsmZDNAijDKSV1TzUgzlgRFASO3weBy7N/eEamo4Dd6GBM/Qj1OQ4qRNqhjH4YFVAraJFaUCV6E59CAIizB8Mjc6Nj53yWcXznFPolp2JoCFGnjMneTBTrWN/tLsCJxHhGjOkVMt1Yu2nSGqKGRnl2okiMcID1CMtU3IUEeWnk31G8MCQLgyFNIdrOKHfJ1IUKTWMAtMZId1Xv70x/MtrJTqs+CnlcaIJx9OHwoRBLeA4HNilkmDNhqZAWFLzV4j7SCKsTYQ5E8J89/+LxnHZdcru9Um+ejGLIwv2wD4oABd4oAquQA3UAQb34BE8gxfrwXqyXq23aWvGms3sgh+y3r8AbXWaQ=</latexit><latexit sha1_base64="K6twBKbOB5C0wzZzXVPiUxzw7U=">ACD3icdZDLSgMxFIYz9VbrbdSlm2BRWwplRpSpC6HoxmUFWwvtUDJpg3NJEOSEcrQN3Djq7hxoYhbt+58G9MLRUV/CDl8/zk5w9iRpV2nE8rs7C4tLySXc2trW9sbtnbOw0lEolJHQsmZDNAijDKSV1TzUgzlgRFASO3weBy7N/eEamo4Dd6GBM/Qj1OQ4qRNqhjH4YFVAraJFaUCV6E59CAIizB8Mjc6Nj53yWcXznFPolp2JoCFGnjMneTBTrWN/tLsCJxHhGjOkVMt1Yu2nSGqKGRnl2okiMcID1CMtU3IUEeWnk31G8MCQLgyFNIdrOKHfJ1IUKTWMAtMZId1Xv70x/MtrJTqs+CnlcaIJx9OHwoRBLeA4HNilkmDNhqZAWFLzV4j7SCKsTYQ5E8J89/+LxnHZdcru9Um+ejGLIwv2wD4oABd4oAquQA3UAQb34BE8gxfrwXqyXq23aWvGms3sgh+y3r8AbXWaQ=</latexit><latexit sha1_base64="K6twBKbOB5C0wzZzXVPiUxzw7U=">ACD3icdZDLSgMxFIYz9VbrbdSlm2BRWwplRpSpC6HoxmUFWwvtUDJpg3NJEOSEcrQN3Djq7hxoYhbt+58G9MLRUV/CDl8/zk5w9iRpV2nE8rs7C4tLySXc2trW9sbtnbOw0lEolJHQsmZDNAijDKSV1TzUgzlgRFASO3weBy7N/eEamo4Dd6GBM/Qj1OQ4qRNqhjH4YFVAraJFaUCV6E59CAIizB8Mjc6Nj53yWcXznFPolp2JoCFGnjMneTBTrWN/tLsCJxHhGjOkVMt1Yu2nSGqKGRnl2okiMcID1CMtU3IUEeWnk31G8MCQLgyFNIdrOKHfJ1IUKTWMAtMZId1Xv70x/MtrJTqs+CnlcaIJx9OHwoRBLeA4HNilkmDNhqZAWFLzV4j7SCKsTYQ5E8J89/+LxnHZdcru9Um+ejGLIwv2wD4oABd4oAquQA3UAQb34BE8gxfrwXqyXq23aWvGms3sgh+y3r8AbXWaQ=</latexit><latexit sha1_base64="K6twBKbOB5C0wzZzXVPiUxzw7U=">ACD3icdZDLSgMxFIYz9VbrbdSlm2BRWwplRpSpC6HoxmUFWwvtUDJpg3NJEOSEcrQN3Djq7hxoYhbt+58G9MLRUV/CDl8/zk5w9iRpV2nE8rs7C4tLySXc2trW9sbtnbOw0lEolJHQsmZDNAijDKSV1TzUgzlgRFASO3weBy7N/eEamo4Dd6GBM/Qj1OQ4qRNqhjH4YFVAraJFaUCV6E59CAIizB8Mjc6Nj53yWcXznFPolp2JoCFGnjMneTBTrWN/tLsCJxHhGjOkVMt1Yu2nSGqKGRnl2okiMcID1CMtU3IUEeWnk31G8MCQLgyFNIdrOKHfJ1IUKTWMAtMZId1Xv70x/MtrJTqs+CnlcaIJx9OHwoRBLeA4HNilkmDNhqZAWFLzV4j7SCKsTYQ5E8J89/+LxnHZdcru9Um+ejGLIwv2wD4oABd4oAquQA3UAQb34BE8gxfrwXqyXq23aWvGms3sgh+y3r8AbXWaQ=</latexit>
slide-99
SLIDE 99

f(a + b✏) = f(a) + f 0(a)b✏

<latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit><latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit><latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit><latexit sha1_base64="hP+6LrUf2d3tZaldqaQvEKMXyw=">AB2XicbZDNSgMxFIXv1L86Vq1rN8EiuCozbnQpuHFZwbZCO5RM5k4bmskMyR2hDH0BF25EfC93vo3pz0JbDwQ+zknIvSculLQUBN9ebWd3b/+gfugfNfzjk9Nmo2fz0gjsilzl5jnmFpXU2CVJCp8LgzyLFfbj6f0i7+gsTLXTzQrMr4WMtUCk7O6oyaraAdLMW2IVxDC9YaNb+GS7KDUJxa0dhEFBUcUNSaFw7g9LiwUXUz7GgUPNM7RtRxzi6dk7A0N+5oYkv394uKZ9bOstjdzDhN7Ga2MP/LBiWlt1EldVESarH6KC0Vo5wtdmaJNChIzRxwYaSblYkJN1yQa8Z3HYSbG29D7odBu3wMYA6nMFXEIN3AHD9CBLghI4BXevYn35n2suqp569LO4I+8zx84xIo4</latexit><latexit sha1_base64="rLpr8cHxequTxR8LaZc5zgbYAF4=">ACMHicbVDLSgMxFL1TX7VWrW7dBIvYIpQZN7oRBDcuq9gHtKVk0owNzWSG5I5Yhv6XG3/CnRs3LhTxI0wfiLa9EDic3Ifx4+lMOi6r05mZXVtfSO7mdvKb+/sFvbydRMlmvEai2Skmz41XArFayhQ8masOQ19yRv+4GqsNx64NiJSdziMeSek90oEglG0VLdwG5QoOSF+m8dGyEiVyQVpI3/ESevUurlCOkqtrTyxqXa8Vj8bdEtFN2KOymyCLwZKMKsqt3CS7sXsS03ZikxrQ8N8ZOSjUKJvko104Mjykb2HktCxUNuemkyVG5MgyPRJE2j6FZML+/ZHS0Jh6FtnSLFv5rUxuUxrJRicd1Kh4gS5YtNBQSIJRmQcJOkJzRnKoQWUaWF3JaxPNWVo487ZELz5kxdB/bTiuRXvxoUsHMAhlMCDM7iEa6hCDRg8wRt8wKfz7Lw7X9O4Ms4st34V873D4+TrIU=</latexit><latexit sha1_base64="rxm9pMm1IqVIqj9FBpbj+mIvM=">ACMHicdVBNSwMxEJ2tX7V+rV69BEVUhLIrau1BELx4rGJboS0lm2ZtaDa7JLNiWfq/vPgnvHnx4kERf4RpK0VFBwLDey9vZl6QSGHQ856c3NT0zOxcfr6wsLi0vOKuLtZMnGrGqyWsb4OqOFSKF5FgZJfJ5rTKJC8HvTOhnz9lmsjYnWF/YS3InqjRCgYRQu13ctwh5I9EjR5YoSM1S45IU3kdziyzqyaK6SDzMp2B1b4J7c9JCcWbXfTK5YPy17pkPhFb1TEIkdHB+XyBNmEr6q03cdmJ2ZpZN2YpMY0fC/BVkY1Cib5oNBMDU8o69l5DdsqGnHTykZLDMiWRTokjLV9CskI/f4jo5Ex/Siwyohi1/zmhuBfXCPF8LiVCZWkyBUbDwpTSTAmwyBJR2jOUPZtQ5kWdlfCulRThjbug1hcv/TW2/6HtF/8KDPKzDBuyADyU4hXOoQBUY3MzvMKb8+C8O/juHLOV25r8KOcj0/+SKzU</latexit><latexit sha1_base64="NFPUZKu+53YQz/YBOZgPOAas0Cc=">ACO3icdVBNSwMxEM3Wr1q/Vj16CRbRIpRdsa09CEUvHqtYW2hLyaZDWazSzIrlqX/y4t/wpsXLx4U8erd9IOiUgcCw3tv3kyeFwmuwXGerdTM7Nz8Qnoxs7S8srpmr29c6TBWlNVoKELV8IhmgktWAw6CNSLFSOAJVvduTwd8/Y4pzUN5Cb2ItQNyLbnPKQEDdewLf4/gfey1WKS5CGUOH+MWsHsYWidGzSQfmJkub4RTuV2B+TEomNnXy5UHZKBezmnWFhgxSLh+XyBMmicVU79lOrG9I4MG5UEK2brhNBOyEKOBWsn2nFmkWE3p9TdNKEjDdToZH9PGOQbrYD5V5EvAQ/TmRkEDrXuAZUDgRv/lBuA0rhmDf9ROuIxiYJKOFvmxwBDiQZC4yxWjIHqmIVRxcyumN0QRCibujAlh8vf/m6uDvOvk3XMnWzkZx5FGW2gb7SEXlVAFnaEqiGKHtALekPv1qP1an1YnyNpyhrPbKJfZX19A3NMrnY=</latexit><latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit><latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit><latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit><latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit><latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit><latexit sha1_base64="tmOW+kb3gmFSTZUpEeFlQ4AtVYo=">ACO3icdVDLSgMxFM34rPU16tJNsIgWocxIH3YhFN24rGKr0JaSTM2NJMZkjtiGfpfbvwJd27cuFDErXvTB0VFLwQu5x7s3xIsE1OM6TNTM7N7+wmFpKL6+srq3bG5t1HcaKshoNRaiuPaKZ4JLVgINg15FiJPAEu/J6p0P+6pYpzUN5Cf2ItQJyI7nPKQEDte0Lf5/gA+w1WaS5CGUWH+MmsDsYWSdGzSQWJk2YER/sntDcmpRdvOLlyoeyUCtjNOaPCBikW8+XyFMmgSVXb9mOzE9I4MG5UEK0brhNBKyEKOBVskG7GmkWE9sy+hmklCZhuJaMjBnjXIB3sh8o8CXiEfp9ISKB1P/CMiDQ1b+5IfgX14jBP2olXEYxMEnHi/xYAjxMEjc4YpREH3TEKq4uRXTLlGEgok7bUKY/v3/pn6Yc52ce57PVE4mcaTQNtpB+8hFJVRBZ6iKaoie/SMXtGb9WC9WO/Wx1g6Y01mtCPsj6/AHSMrno=</latexit>
slide-100
SLIDE 100

a → f(a) + f 0(a)

<latexit sha1_base64="KUGBj6JaZA4KW9lE8oIym2nXNdQ=">ACV3icdVFbSxtBFJ5dbYzx0mgf+zIYRKUQdou3PAjSvioYBIhG8LZyWwyODuzJxVw5I/KX3xr/SlnV1DsEUPDBy+y7lNnElhMQhePH9l9VNtrb7e2Njc2v7c3NntWZ0bxrtMS23uYrBcCsW7KFDyu8xwSGPJ+/H9z5LvP3BjhVa3OMv4MIWJEolgA4aNdV+cgj0G40jnlkhtTqiFzRC/oRV7cLJuUKYF052NHfCd7mDklyWaACNjJhMEYzRj7R0OmMlGjVbQbtz0gnOTmjYDqgDjk9Pe50lkiLOJ61HyOxprlqWvEJFg7CIMhwUYFEzyeSPKLc+A3btRBi5VkHI7LKr5nTfIWOaOeQlqhbx0FpNbO0tgpU8Cp/Z8rwfe4QY7J+bAQKsuRK/baKMklRU3LI9OxMJyhnLkEmBFuVsqmYICh+4qGO8Jy94+T3vd2GLTDm+PW5Y/FOerkK9kjhyQkZ+SXJFr0iWM/CK/vRVv1Xvx/vg1v/4q9b2F5wv5J/ydvyVMs4=</latexit><latexit sha1_base64="KUGBj6JaZA4KW9lE8oIym2nXNdQ=">ACV3icdVFbSxtBFJ5dbYzx0mgf+zIYRKUQdou3PAjSvioYBIhG8LZyWwyODuzJxVw5I/KX3xr/SlnV1DsEUPDBy+y7lNnElhMQhePH9l9VNtrb7e2Njc2v7c3NntWZ0bxrtMS23uYrBcCsW7KFDyu8xwSGPJ+/H9z5LvP3BjhVa3OMv4MIWJEolgA4aNdV+cgj0G40jnlkhtTqiFzRC/oRV7cLJuUKYF052NHfCd7mDklyWaACNjJhMEYzRj7R0OmMlGjVbQbtz0gnOTmjYDqgDjk9Pe50lkiLOJ61HyOxprlqWvEJFg7CIMhwUYFEzyeSPKLc+A3btRBi5VkHI7LKr5nTfIWOaOeQlqhbx0FpNbO0tgpU8Cp/Z8rwfe4QY7J+bAQKsuRK/baKMklRU3LI9OxMJyhnLkEmBFuVsqmYICh+4qGO8Jy94+T3vd2GLTDm+PW5Y/FOerkK9kjhyQkZ+SXJFr0iWM/CK/vRVv1Xvx/vg1v/4q9b2F5wv5J/ydvyVMs4=</latexit><latexit sha1_base64="KUGBj6JaZA4KW9lE8oIym2nXNdQ=">ACV3icdVFbSxtBFJ5dbYzx0mgf+zIYRKUQdou3PAjSvioYBIhG8LZyWwyODuzJxVw5I/KX3xr/SlnV1DsEUPDBy+y7lNnElhMQhePH9l9VNtrb7e2Njc2v7c3NntWZ0bxrtMS23uYrBcCsW7KFDyu8xwSGPJ+/H9z5LvP3BjhVa3OMv4MIWJEolgA4aNdV+cgj0G40jnlkhtTqiFzRC/oRV7cLJuUKYF052NHfCd7mDklyWaACNjJhMEYzRj7R0OmMlGjVbQbtz0gnOTmjYDqgDjk9Pe50lkiLOJ61HyOxprlqWvEJFg7CIMhwUYFEzyeSPKLc+A3btRBi5VkHI7LKr5nTfIWOaOeQlqhbx0FpNbO0tgpU8Cp/Z8rwfe4QY7J+bAQKsuRK/baKMklRU3LI9OxMJyhnLkEmBFuVsqmYICh+4qGO8Jy94+T3vd2GLTDm+PW5Y/FOerkK9kjhyQkZ+SXJFr0iWM/CK/vRVv1Xvx/vg1v/4q9b2F5wv5J/ydvyVMs4=</latexit><latexit sha1_base64="KUGBj6JaZA4KW9lE8oIym2nXNdQ=">ACV3icdVFbSxtBFJ5dbYzx0mgf+zIYRKUQdou3PAjSvioYBIhG8LZyWwyODuzJxVw5I/KX3xr/SlnV1DsEUPDBy+y7lNnElhMQhePH9l9VNtrb7e2Njc2v7c3NntWZ0bxrtMS23uYrBcCsW7KFDyu8xwSGPJ+/H9z5LvP3BjhVa3OMv4MIWJEolgA4aNdV+cgj0G40jnlkhtTqiFzRC/oRV7cLJuUKYF052NHfCd7mDklyWaACNjJhMEYzRj7R0OmMlGjVbQbtz0gnOTmjYDqgDjk9Pe50lkiLOJ61HyOxprlqWvEJFg7CIMhwUYFEzyeSPKLc+A3btRBi5VkHI7LKr5nTfIWOaOeQlqhbx0FpNbO0tgpU8Cp/Z8rwfe4QY7J+bAQKsuRK/baKMklRU3LI9OxMJyhnLkEmBFuVsqmYICh+4qGO8Jy94+T3vd2GLTDm+PW5Y/FOerkK9kjhyQkZ+SXJFr0iWM/CK/vRVv1Xvx/vg1v/4q9b2F5wv5J/ydvyVMs4=</latexit>
slide-101
SLIDE 101

a → f(a)

<latexit sha1_base64="OqyWYhCG08NF8uxyFUTVaekACA=">ACdnicdVFNa9tAEF2pX6n75bSnEihLHJOEgpFKPupDISXHFOok4BlzGi9ipesdsXuKI0R/gn9c731d/SY0aKMUlJBxaG97MvJ1JC608RtGfIHzy9NnzFysvW69ev3n7r36/tTb0gk5EFZbd56Cl1oZOUCFWp4XTkKeanmWXh7V/NmVdF5Z8wNnhRzlcGFUpgQgQeP2r262BfwzTxNZeKWt2ebfeILyGpveFcmlQZhXJNuek/BRbrMmly1awBOnLqYIztmfPMkc5DK19VG3WRjzrs0o06pXVO6rBy3O1Gv9uP9nd53Iua4ITs7e30+0ukwxZxMm7/TiZWlDn5EBq8H8ZRgaMKHCqh5byVlF4WIC7J6ZBSQ0b8qGrskw1CJjyzjp5B3qD3KyrIvZ/lKSlzwKn/l6vBx7hidnXUaVMUaI04m5QVmqOltc34BPlpEA9owSEU+SViyk4EiXatESln/f3L6pRdHvfj7TufgcLGOFbG1tkWi9k+O2DH7IQNmGB/g4/BetAJbsJPYTfcvJOGwaLmA3sQYXQLuYi8iA=</latexit><latexit sha1_base64="OqyWYhCG08NF8uxyFUTVaekACA=">ACdnicdVFNa9tAEF2pX6n75bSnEihLHJOEgpFKPupDISXHFOok4BlzGi9ipesdsXuKI0R/gn9c731d/SY0aKMUlJBxaG97MvJ1JC608RtGfIHzy9NnzFysvW69ev3n7r36/tTb0gk5EFZbd56Cl1oZOUCFWp4XTkKeanmWXh7V/NmVdF5Z8wNnhRzlcGFUpgQgQeP2r262BfwzTxNZeKWt2ebfeILyGpveFcmlQZhXJNuek/BRbrMmly1awBOnLqYIztmfPMkc5DK19VG3WRjzrs0o06pXVO6rBy3O1Gv9uP9nd53Iua4ITs7e30+0ukwxZxMm7/TiZWlDn5EBq8H8ZRgaMKHCqh5byVlF4WIC7J6ZBSQ0b8qGrskw1CJjyzjp5B3qD3KyrIvZ/lKSlzwKn/l6vBx7hidnXUaVMUaI04m5QVmqOltc34BPlpEA9owSEU+SViyk4EiXatESln/f3L6pRdHvfj7TufgcLGOFbG1tkWi9k+O2DH7IQNmGB/g4/BetAJbsJPYTfcvJOGwaLmA3sQYXQLuYi8iA=</latexit><latexit sha1_base64="OqyWYhCG08NF8uxyFUTVaekACA=">ACdnicdVFNa9tAEF2pX6n75bSnEihLHJOEgpFKPupDISXHFOok4BlzGi9ipesdsXuKI0R/gn9c731d/SY0aKMUlJBxaG97MvJ1JC608RtGfIHzy9NnzFysvW69ev3n7r36/tTb0gk5EFZbd56Cl1oZOUCFWp4XTkKeanmWXh7V/NmVdF5Z8wNnhRzlcGFUpgQgQeP2r262BfwzTxNZeKWt2ebfeILyGpveFcmlQZhXJNuek/BRbrMmly1awBOnLqYIztmfPMkc5DK19VG3WRjzrs0o06pXVO6rBy3O1Gv9uP9nd53Iua4ITs7e30+0ukwxZxMm7/TiZWlDn5EBq8H8ZRgaMKHCqh5byVlF4WIC7J6ZBSQ0b8qGrskw1CJjyzjp5B3qD3KyrIvZ/lKSlzwKn/l6vBx7hidnXUaVMUaI04m5QVmqOltc34BPlpEA9owSEU+SViyk4EiXatESln/f3L6pRdHvfj7TufgcLGOFbG1tkWi9k+O2DH7IQNmGB/g4/BetAJbsJPYTfcvJOGwaLmA3sQYXQLuYi8iA=</latexit><latexit sha1_base64="OqyWYhCG08NF8uxyFUTVaekACA=">ACdnicdVFNa9tAEF2pX6n75bSnEihLHJOEgpFKPupDISXHFOok4BlzGi9ipesdsXuKI0R/gn9c731d/SY0aKMUlJBxaG97MvJ1JC608RtGfIHzy9NnzFysvW69ev3n7r36/tTb0gk5EFZbd56Cl1oZOUCFWp4XTkKeanmWXh7V/NmVdF5Z8wNnhRzlcGFUpgQgQeP2r262BfwzTxNZeKWt2ebfeILyGpveFcmlQZhXJNuek/BRbrMmly1awBOnLqYIztmfPMkc5DK19VG3WRjzrs0o06pXVO6rBy3O1Gv9uP9nd53Iua4ITs7e30+0ukwxZxMm7/TiZWlDn5EBq8H8ZRgaMKHCqh5byVlF4WIC7J6ZBSQ0b8qGrskw1CJjyzjp5B3qD3KyrIvZ/lKSlzwKn/l6vBx7hidnXUaVMUaI04m5QVmqOltc34BPlpEA9owSEU+SViyk4EiXatESln/f3L6pRdHvfj7TufgcLGOFbG1tkWi9k+O2DH7IQNmGB/g4/BetAJbsJPYTfcvJOGwaLmA3sQYXQLuYi8iA=</latexit>
slide-102
SLIDE 102

a ??? ⇣ a → f(a) ⌘ = f(a) + f 0(a)b✏

<latexit sha1_base64="D/C2uoUbwgNL37t1TcnjAvR9oVA=">ACpXicdVHbahsxENVuekndm5s+9kXEDkloMbsl/qhOKQveSkJXYCXmO0stYW0UqLNvGiP2zfkXf+jed3RiTlnRAMJxzZs7MKC2UdBFv4Nw49HjJ083n7Wev3j56nX7zdbImdJyMeRGXudMieU1GIEpS4LqxgearEVXrzpeavgvrpNGXsCzEJGdzLTPJGSA0bf/cyfYfU/TRBROKqP36WeagLiFprdHudDAKo+y/QqFD3K7Nblu0Uoy3KRmlvfZd2KJjmDRSq1b2r9YDCoEDyVc3ROrJwvgFlrftB7ZbVbt0o+NLJ6pBpA98ZpbTRtd6Je/7AfHR/SuBc1QRE5Ojro9dIh6zifNr+lcwML3Mcmyvm3DiOCph4ZkFyJapWUjpRMH6Di40x1TiOm/hm24ruIDKjmbH4NAGvV/hWe7cMk9RWS/s/uVq8CFuXEL2aeKlLkoQmt8ZaWiYGj9ZXQmreCglpgwbiXOSvmCWcYBP7aFR1jv/v9k9LEXR734qBzcro6xyZ5R7bJHonJMTkhZ+ScDAkPtoOz4CL4Fu6GX8PLcHQnDYNVzVvyV4TP4EyzY4=</latexit><latexit sha1_base64="D/C2uoUbwgNL37t1TcnjAvR9oVA=">ACpXicdVHbahsxENVuekndm5s+9kXEDkloMbsl/qhOKQveSkJXYCXmO0stYW0UqLNvGiP2zfkXf+jed3RiTlnRAMJxzZs7MKC2UdBFv4Nw49HjJ083n7Wev3j56nX7zdbImdJyMeRGXudMieU1GIEpS4LqxgearEVXrzpeavgvrpNGXsCzEJGdzLTPJGSA0bf/cyfYfU/TRBROKqP36WeagLiFprdHudDAKo+y/QqFD3K7Nblu0Uoy3KRmlvfZd2KJjmDRSq1b2r9YDCoEDyVc3ROrJwvgFlrftB7ZbVbt0o+NLJ6pBpA98ZpbTRtd6Je/7AfHR/SuBc1QRE5Ojro9dIh6zifNr+lcwML3Mcmyvm3DiOCph4ZkFyJapWUjpRMH6Di40x1TiOm/hm24ruIDKjmbH4NAGvV/hWe7cMk9RWS/s/uVq8CFuXEL2aeKlLkoQmt8ZaWiYGj9ZXQmreCglpgwbiXOSvmCWcYBP7aFR1jv/v9k9LEXR734qBzcro6xyZ5R7bJHonJMTkhZ+ScDAkPtoOz4CL4Fu6GX8PLcHQnDYNVzVvyV4TP4EyzY4=</latexit><latexit sha1_base64="D/C2uoUbwgNL37t1TcnjAvR9oVA=">ACpXicdVHbahsxENVuekndm5s+9kXEDkloMbsl/qhOKQveSkJXYCXmO0stYW0UqLNvGiP2zfkXf+jed3RiTlnRAMJxzZs7MKC2UdBFv4Nw49HjJ083n7Wev3j56nX7zdbImdJyMeRGXudMieU1GIEpS4LqxgearEVXrzpeavgvrpNGXsCzEJGdzLTPJGSA0bf/cyfYfU/TRBROKqP36WeagLiFprdHudDAKo+y/QqFD3K7Nblu0Uoy3KRmlvfZd2KJjmDRSq1b2r9YDCoEDyVc3ROrJwvgFlrftB7ZbVbt0o+NLJ6pBpA98ZpbTRtd6Je/7AfHR/SuBc1QRE5Ojro9dIh6zifNr+lcwML3Mcmyvm3DiOCph4ZkFyJapWUjpRMH6Di40x1TiOm/hm24ruIDKjmbH4NAGvV/hWe7cMk9RWS/s/uVq8CFuXEL2aeKlLkoQmt8ZaWiYGj9ZXQmreCglpgwbiXOSvmCWcYBP7aFR1jv/v9k9LEXR734qBzcro6xyZ5R7bJHonJMTkhZ+ScDAkPtoOz4CL4Fu6GX8PLcHQnDYNVzVvyV4TP4EyzY4=</latexit><latexit sha1_base64="D/C2uoUbwgNL37t1TcnjAvR9oVA=">ACpXicdVHbahsxENVuekndm5s+9kXEDkloMbsl/qhOKQveSkJXYCXmO0stYW0UqLNvGiP2zfkXf+jed3RiTlnRAMJxzZs7MKC2UdBFv4Nw49HjJ083n7Wev3j56nX7zdbImdJyMeRGXudMieU1GIEpS4LqxgearEVXrzpeavgvrpNGXsCzEJGdzLTPJGSA0bf/cyfYfU/TRBROKqP36WeagLiFprdHudDAKo+y/QqFD3K7Nblu0Uoy3KRmlvfZd2KJjmDRSq1b2r9YDCoEDyVc3ROrJwvgFlrftB7ZbVbt0o+NLJ6pBpA98ZpbTRtd6Je/7AfHR/SuBc1QRE5Ojro9dIh6zifNr+lcwML3Mcmyvm3DiOCph4ZkFyJapWUjpRMH6Di40x1TiOm/hm24ruIDKjmbH4NAGvV/hWe7cMk9RWS/s/uVq8CFuXEL2aeKlLkoQmt8ZaWiYGj9ZXQmreCglpgwbiXOSvmCWcYBP7aFR1jv/v9k9LEXR734qBzcro6xyZ5R7bJHonJMTkhZ+ScDAkPtoOz4CL4Fu6GX8PLcHQnDYNVzVvyV4TP4EyzY4=</latexit>
slide-103
SLIDE 103

a ??? ⇣ a → f(a) ⌘ = c

<latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit><latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit><latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit><latexit sha1_base64="hP+6LrUf2d3tZaldqaQvEKMXyw=">AB2XicbZDNSgMxFIXv1L86Vq1rN8EiuCozbnQpuHFZwbZCO5RM5k4bmskMyR2hDH0BF25EfC93vo3pz0JbDwQ+zknIvSculLQUBN9ebWd3b/+gfugfNfzjk9Nmo2fz0gjsilzl5jnmFpXU2CVJCp8LgzyLFfbj6f0i7+gsTLXTzQrMr4WMtUCk7O6oyaraAdLMW2IVxDC9YaNb+GS7KDUJxa0dhEFBUcUNSaFw7g9LiwUXUz7GgUPNM7RtRxzi6dk7A0N+5oYkv394uKZ9bOstjdzDhN7Ga2MP/LBiWlt1EldVESarH6KC0Vo5wtdmaJNChIzRxwYaSblYkJN1yQa8Z3HYSbG29D7odBu3wMYA6nMFXEIN3AHD9CBLghI4BXevYn35n2suqp569LO4I+8zx84xIo4</latexit><latexit sha1_base64="DZlYACtAeG47LO59Qxau9BSI5g=">ACkXicbVFdaxNBFJ1dv2qsmvomgw2xRZL2PXFvkhEfaiIUMG0hWwIdyezydDZmWXmrjYM+6v8J75b7y7DaW2vTBwOfcz8krTwmyd8ovnP3v0HGw97jzYfP3na39o89rZ2Qo6F1dad5uClVkaOUaGWp5WTUOZanuRn1r95Kd0XlnzA1eVnJawMKpQApCoWf/3TrEL/A3PM1l5pa3Z4+95hvIcu9qB7NIgNIFsew0Zb9Vet+JliV5WOChlbs/DAYNz0rAZa5M6HLDaDRqiPyoFtQ5c2qxRHDO/uJX0tpugyb72zdSJeaGb97WSYdMFvgnQNtk6jmb9P9ncirqkaYUG7ydpUuE0gEMltGx6We1lBeKM9pkQNTJT0O3ZMN3iJnzwjp6BnHXs0IUHq/KnNytnv61pL3qZNaiwOpkGZqkZpxEWjotYcLW9/is+VkwL1igAIp2hWLpbgQCD9Z4+OkF5f+SY4fjtMk2H6PWEb7AV7xXZyt6xD+yQHbExE9HzaBQdRl/il/Hn+OvFueJofbdn7L+Iv/0DeynKbg=</latexit><latexit sha1_base64="NBS2UTmrSA3Mg5z9/Gk1k05wbUg=">ACkXicdVFRSxtBEN672tZG20bfSkGWGqlSCXelavNQUtQHSxEsNCrkQtjb7CWLe7vH7lxrWO5X9Z/0rf/GuVOCLXZgYfi+b+abmU0LJR1E0Z8gfLT0+MnT5WetldXnL1621bPnSktFwNulLGXKXNCS0GIEGJy8IKlqdKXKRXRzV/8UNYJ43+DvNCjHI21TKTnAFC4/avrWyb0Xc0TUThpDJ6h36iCYhraHp7lAsNrPIo26lQ+CD3tiYXLVpJZlkuUnPtO6xT0SRnMEul9k2t7/f7FYKHcorOiZXTGTBrzU96r6x261TJbiNrRlpwvBq3N6Nub68XHezRuBs1QRHZ3/Q6y2QTXIXZ+P272RieJnjtFwx54ZxVMDIMwuSK1G1ktKJgvEr3GeIqUYnN/LNkhXdQmRCM2PxaANer/Cs9y5eZ6ist7T/cvV4EPcsITs48hLXZQgNL81ykpFwdD6p+hEWsFBzTFh3EqclfIZs4wD/mcLj7DY/f/J+ftuHXjbxFZJq/JG7JNYnJAPpMTckYGhAevgn5wEnwJN8Lj8OvtucLg7m7r5K8IT28A6d7KvQ=</latexit><latexit sha1_base64="RTU5IMd8EpxIyRdFu+NC58tWZnY=">ACnHicdVFtaxNBEN4732p8S/WTCLKYFsq4U76Yj5ISvVDRYQKJi3kQtjb7CVL93aP3TltWO5X+U/85r9x7hpClTqwMDzPM/PMzKaFkg6i6HcQ3rp95+69jfutBw8fPX7S3nw6cqa0XAy5Ucaep8wJbUYgQlzgsrWJ4qcZefKj5s+/COmn0N1gWYpKzuZaZ5AwQmrZ/bmXbjO7SNBGFk8roHfqeJiAuoentUS40sMqjbKdC4Y3c65pct2glmW5SM2l7JuRZOcwSKV2je1fjAYVAgeyzk6J1bOF8CsNT/otbLarVslbxpZM9Ka49W03Yl6/f1+dLhP417UBEXk4GCv318jHbK02n7VzIzvMxWq6Yc+M4KmDimQXJlahaSelEwfgF7jPGVKOTm/hmyYpuITKjmbH4NAGvV7hWe7cMk9RWe/p/uVq8CZuXEL2buKlLkoQml8ZaWiYGj9U3QmreCglpgwbiXOSvmCWcYB/7OFR1jv/v9k9LYXR734a9Q5Ol6dY4O8IK/INonJITkiJ+SUDAkPngeD4CT4FL4MP4afwy9X0jBY1Twjf0U4+gPDicvB</latexit><latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit><latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit><latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit><latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit><latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit><latexit sha1_base64="Qxqd5KSXMg2zS1m4kj/uPk2tIk=">ACnHicdVFtaxNBEN67+lLjW6yfRJDFpNihDvpi/kgKdUPFREqmLSQC2Fvs5cs3ds9due0Yblf5T/xm/GuWsIVerAwvA8z8wzM5sWSjqIot9BuHr9p27m/da9x8fPS4/WRr5ExpuRhyo4w9T5kTSmoxBAlKnBdWsDxV4iy9+FDzZ9+FdLob7AsxCRncy0zyRkgNG3/3M52GH1N0QUTiqjd+l7moC4hKa3R7nQwCqPst0KhTdyr2py3aKVZJblIjWXvsu6FU1yBotUat/U+sFgUCF4LOfonFg5XwCz1vyg18pqt26VvGlkzUhrjlfTdifq9f70eE+jXtRExSRg4O9fn+NdMgqTqftX8nM8DLHablizo3jqICJZxYkV6JqJaUTBeMXuM8YU41ObuKbJSu6jciMZsbi0Ab9HqFZ7lzyzxFZb2n+5erwZu4cQnZu4mXuihBaH5lJWKgqH1T9GZtIKDWmLCuJU4K+ULZhkH/M8WHmG9+/+T0dteHPXir3udo+PVOTbJc/KS7JCYHJIjckJOyZDw4FkwCE6CT+GL8GP4OfxyJQ2DVc1T8leEoz/EycvF</latexit>
slide-104
SLIDE 104

a flatMap ⇣ a → f(a) ⌘ = c

<latexit sha1_base64="4brNCMfx1zbTjUgtpcnuVY6oV5U=">ACoHicdVHbahsxENVub4l7c9vHUBCxQxMazG7JpX4IhOQlDw1NoE5CvcbMylpbRCst0mwbI/a78h969UuzEmLemAYDjnzJyZUVpIYTGKfgfho8dPnj5bW09f/Hy1ev2m7cXVpeG8QHTUpurFCyXQvEBCpT8qjAc8lTy/T6uOYvf3BjhVbfcF7wUQ5TJTLBAD0bt9uZJtAP9I04YUVUqstekAT5DfY9HZezhVC5bxsq/LCB7kPNbls0UoyAzlP9Y3rQreiSQ4S4VyTa3LJOApFJUnjsTUuydGTGcIxuif9F5p7ditku1G1oy15Fg1bneiXn+3H+3v0rgXNUE9sre30+8vkQ5ZxNm4/SuZaFbmfmImwdphHBU4cmBQMmrVlJaXgC79jsNfaq8kx25ZtGKbnhkQjNt/FNIG/R+hYPc2nmemW9q/2Xq8GHuGJ2eRE6okSt2Z5SVkqKm9W/RiTCcoZz7BJgRflbKZmCAof/Tlj/Ccvf/JxefenHUi893OodHi3OskDWyTjZJTPbJITkhZ2RAWPA+OA6+BKfhengSfg3P76RhsKh5R/6K8PsfoXLN9Q=</latexit><latexit sha1_base64="4brNCMfx1zbTjUgtpcnuVY6oV5U=">ACoHicdVHbahsxENVub4l7c9vHUBCxQxMazG7JpX4IhOQlDw1NoE5CvcbMylpbRCst0mwbI/a78h969UuzEmLemAYDjnzJyZUVpIYTGKfgfho8dPnj5bW09f/Hy1ev2m7cXVpeG8QHTUpurFCyXQvEBCpT8qjAc8lTy/T6uOYvf3BjhVbfcF7wUQ5TJTLBAD0bt9uZJtAP9I04YUVUqstekAT5DfY9HZezhVC5bxsq/LCB7kPNbls0UoyAzlP9Y3rQreiSQ4S4VyTa3LJOApFJUnjsTUuydGTGcIxuif9F5p7ditku1G1oy15Fg1bneiXn+3H+3v0rgXNUE9sre30+8vkQ5ZxNm4/SuZaFbmfmImwdphHBU4cmBQMmrVlJaXgC79jsNfaq8kx25ZtGKbnhkQjNt/FNIG/R+hYPc2nmemW9q/2Xq8GHuGJ2eRE6okSt2Z5SVkqKm9W/RiTCcoZz7BJgRflbKZmCAof/Tlj/Ccvf/JxefenHUi893OodHi3OskDWyTjZJTPbJITkhZ2RAWPA+OA6+BKfhengSfg3P76RhsKh5R/6K8PsfoXLN9Q=</latexit><latexit sha1_base64="4brNCMfx1zbTjUgtpcnuVY6oV5U=">ACoHicdVHbahsxENVub4l7c9vHUBCxQxMazG7JpX4IhOQlDw1NoE5CvcbMylpbRCst0mwbI/a78h969UuzEmLemAYDjnzJyZUVpIYTGKfgfho8dPnj5bW09f/Hy1ev2m7cXVpeG8QHTUpurFCyXQvEBCpT8qjAc8lTy/T6uOYvf3BjhVbfcF7wUQ5TJTLBAD0bt9uZJtAP9I04YUVUqstekAT5DfY9HZezhVC5bxsq/LCB7kPNbls0UoyAzlP9Y3rQreiSQ4S4VyTa3LJOApFJUnjsTUuydGTGcIxuif9F5p7ditku1G1oy15Fg1bneiXn+3H+3v0rgXNUE9sre30+8vkQ5ZxNm4/SuZaFbmfmImwdphHBU4cmBQMmrVlJaXgC79jsNfaq8kx25ZtGKbnhkQjNt/FNIG/R+hYPc2nmemW9q/2Xq8GHuGJ2eRE6okSt2Z5SVkqKm9W/RiTCcoZz7BJgRflbKZmCAof/Tlj/Ccvf/JxefenHUi893OodHi3OskDWyTjZJTPbJITkhZ2RAWPA+OA6+BKfhengSfg3P76RhsKh5R/6K8PsfoXLN9Q=</latexit><latexit sha1_base64="4brNCMfx1zbTjUgtpcnuVY6oV5U=">ACoHicdVHbahsxENVub4l7c9vHUBCxQxMazG7JpX4IhOQlDw1NoE5CvcbMylpbRCst0mwbI/a78h969UuzEmLemAYDjnzJyZUVpIYTGKfgfho8dPnj5bW09f/Hy1ev2m7cXVpeG8QHTUpurFCyXQvEBCpT8qjAc8lTy/T6uOYvf3BjhVbfcF7wUQ5TJTLBAD0bt9uZJtAP9I04YUVUqstekAT5DfY9HZezhVC5bxsq/LCB7kPNbls0UoyAzlP9Y3rQreiSQ4S4VyTa3LJOApFJUnjsTUuydGTGcIxuif9F5p7ditku1G1oy15Fg1bneiXn+3H+3v0rgXNUE9sre30+8vkQ5ZxNm4/SuZaFbmfmImwdphHBU4cmBQMmrVlJaXgC79jsNfaq8kx25ZtGKbnhkQjNt/FNIG/R+hYPc2nmemW9q/2Xq8GHuGJ2eRE6okSt2Z5SVkqKm9W/RiTCcoZz7BJgRflbKZmCAof/Tlj/Ccvf/JxefenHUi893OodHi3OskDWyTjZJTPbJITkhZ2RAWPA+OA6+BKfhengSfg3P76RhsKh5R/6K8PsfoXLN9Q=</latexit>
slide-105
SLIDE 105

There is a monad for Dual

slide-106
SLIDE 106

This expresses the chain rule

slide-107
SLIDE 107

final case class Dual[A](v: A, d: Double) { def flatMap[B](f: A => Dual[B]): Dual[B] = { val next = f(v) val nextD = this.d * next.d Dual(next.v, nextD) } }

slide-108
SLIDE 108

final case class Dual[A](v: A, d: Double) { def flatMap[B](f: A => Dual[B]): Dual[B] = { val next = f(v) val nextD = this.d * next.d Dual(next.v, nextD) } def sin: Dual = this.flatMap(a => Dual(Math.sin(a), Math.cos(a))) }

slide-109
SLIDE 109

For deep learning, generalise to tensors

slide-110
SLIDE 110

Forward-mode scales in the size of the input dimension

slide-111
SLIDE 111

Reverse-mode AD

slide-112
SLIDE 112

Chain rule doesn’t care about order

slide-113
SLIDE 113

(g f)0 = (g0 f)f 0

<latexit sha1_base64="sZmzg3fzI0qzPIKMghK+XeDHmSE=">ACBnicdZDLSgMxFIYzXmu9jboUIVikdVMyokxdCEU3LivYC7RDyaSZaWgmMyQZoQxdufFV3LhQxK3P4M63Mb1QVPSHwMn3n0Nyfj/hTGmEPq2FxaXldXcWn59Y3Nr297Zbag4lYTWScxj2fKxopwJWtdMc9pKJMWRz2nTH1yN/eYdlYrF4lYPE+pFOBQsYARrg7r2QSmEHcIkgcFxEV7AUlic34Ni1y6g8nFdEZdMpoImiIkYvmpABmqnXtj04vJmlEhSYcK9V2UK9DEvNCKejfCdVNMFkgEPaNqXAEVeNljBI8M6cEgluYIDSf0+0SGI6WGkW86I6z76rc3hn957VQHFS9jIk1FWT6UJByqGM4zgT2mKRE86EpMJHM/BWSPpaYaJNc3oQw3/3/onFSdlDZuTktVC9nceTAPjgEJeAF1TBNaiBOiDgHjyCZ/BiPVhP1qv1Nm1dsGYze+CHrPcv0JKWKw=</latexit><latexit sha1_base64="sZmzg3fzI0qzPIKMghK+XeDHmSE=">ACBnicdZDLSgMxFIYzXmu9jboUIVikdVMyokxdCEU3LivYC7RDyaSZaWgmMyQZoQxdufFV3LhQxK3P4M63Mb1QVPSHwMn3n0Nyfj/hTGmEPq2FxaXldXcWn59Y3Nr297Zbag4lYTWScxj2fKxopwJWtdMc9pKJMWRz2nTH1yN/eYdlYrF4lYPE+pFOBQsYARrg7r2QSmEHcIkgcFxEV7AUlic34Ni1y6g8nFdEZdMpoImiIkYvmpABmqnXtj04vJmlEhSYcK9V2UK9DEvNCKejfCdVNMFkgEPaNqXAEVeNljBI8M6cEgluYIDSf0+0SGI6WGkW86I6z76rc3hn957VQHFS9jIk1FWT6UJByqGM4zgT2mKRE86EpMJHM/BWSPpaYaJNc3oQw3/3/onFSdlDZuTktVC9nceTAPjgEJeAF1TBNaiBOiDgHjyCZ/BiPVhP1qv1Nm1dsGYze+CHrPcv0JKWKw=</latexit><latexit sha1_base64="sZmzg3fzI0qzPIKMghK+XeDHmSE=">ACBnicdZDLSgMxFIYzXmu9jboUIVikdVMyokxdCEU3LivYC7RDyaSZaWgmMyQZoQxdufFV3LhQxK3P4M63Mb1QVPSHwMn3n0Nyfj/hTGmEPq2FxaXldXcWn59Y3Nr297Zbag4lYTWScxj2fKxopwJWtdMc9pKJMWRz2nTH1yN/eYdlYrF4lYPE+pFOBQsYARrg7r2QSmEHcIkgcFxEV7AUlic34Ni1y6g8nFdEZdMpoImiIkYvmpABmqnXtj04vJmlEhSYcK9V2UK9DEvNCKejfCdVNMFkgEPaNqXAEVeNljBI8M6cEgluYIDSf0+0SGI6WGkW86I6z76rc3hn957VQHFS9jIk1FWT6UJByqGM4zgT2mKRE86EpMJHM/BWSPpaYaJNc3oQw3/3/onFSdlDZuTktVC9nceTAPjgEJeAF1TBNaiBOiDgHjyCZ/BiPVhP1qv1Nm1dsGYze+CHrPcv0JKWKw=</latexit><latexit sha1_base64="sZmzg3fzI0qzPIKMghK+XeDHmSE=">ACBnicdZDLSgMxFIYzXmu9jboUIVikdVMyokxdCEU3LivYC7RDyaSZaWgmMyQZoQxdufFV3LhQxK3P4M63Mb1QVPSHwMn3n0Nyfj/hTGmEPq2FxaXldXcWn59Y3Nr297Zbag4lYTWScxj2fKxopwJWtdMc9pKJMWRz2nTH1yN/eYdlYrF4lYPE+pFOBQsYARrg7r2QSmEHcIkgcFxEV7AUlic34Ni1y6g8nFdEZdMpoImiIkYvmpABmqnXtj04vJmlEhSYcK9V2UK9DEvNCKejfCdVNMFkgEPaNqXAEVeNljBI8M6cEgluYIDSf0+0SGI6WGkW86I6z76rc3hn957VQHFS9jIk1FWT6UJByqGM4zgT2mKRE86EpMJHM/BWSPpaYaJNc3oQw3/3/onFSdlDZuTktVC9nceTAPjgEJeAF1TBNaiBOiDgHjyCZ/BiPVhP1qv1Nm1dsGYze+CHrPcv0JKWKw=</latexit>
slide-114
SLIDE 114

(g f)0(x) = g0(f(x))f 0(x)

<latexit sha1_base64="3wodGyIM8XDlYHraf6gUe0KJwQ=">ACHicdZDLSgMxFIYz9VbrerShcEinW6GmVptXQhFNy4r2Au0Q8mkmTY0kxmSjFiGLt34Km5cKOLWR3Dn25heBX9IfDlP+eQnN+LGJXKtj+M1MLi0vJKejWztr6xuZXd3mnIMBaY1HIQtHykCSMclJXVDHSigRBgcdI0xteTOrNGyIkDfm1GkXEDVCfU59ipLTVze6bfdjBVGDoF/LmbQGewX7e9DUV/Mm9m83Z1m5WHRKUEOlfHQyBa3iMXQse6ocmKvWzb53eiGOA8IVZkjKtmNHyk2QUBQzMs50YkihIeoT9oaOQqIdJPpImN4qJ0e9EOhD1dw6n6fSFAg5SjwdGeA1ED+rk3Mv2rtWPkVN6E8ihXhePaQHzOoQjhJBfaoIFixkQaEBdV/hXiABMJKZ5fRIXxtCv+HRtFybMu5KuWq5/M40mAPHATOKAMquAS1EAdYHAHsATeDbujUfjxXidtaM+cwu+CHj7RN7CZ2</latexit><latexit sha1_base64="3wodGyIM8XDlYHraf6gUe0KJwQ=">ACHicdZDLSgMxFIYz9VbrerShcEinW6GmVptXQhFNy4r2Au0Q8mkmTY0kxmSjFiGLt34Km5cKOLWR3Dn25heBX9IfDlP+eQnN+LGJXKtj+M1MLi0vJKejWztr6xuZXd3mnIMBaY1HIQtHykCSMclJXVDHSigRBgcdI0xteTOrNGyIkDfm1GkXEDVCfU59ipLTVze6bfdjBVGDoF/LmbQGewX7e9DUV/Mm9m83Z1m5WHRKUEOlfHQyBa3iMXQse6ocmKvWzb53eiGOA8IVZkjKtmNHyk2QUBQzMs50YkihIeoT9oaOQqIdJPpImN4qJ0e9EOhD1dw6n6fSFAg5SjwdGeA1ED+rk3Mv2rtWPkVN6E8ihXhePaQHzOoQjhJBfaoIFixkQaEBdV/hXiABMJKZ5fRIXxtCv+HRtFybMu5KuWq5/M40mAPHATOKAMquAS1EAdYHAHsATeDbujUfjxXidtaM+cwu+CHj7RN7CZ2</latexit><latexit sha1_base64="3wodGyIM8XDlYHraf6gUe0KJwQ=">ACHicdZDLSgMxFIYz9VbrerShcEinW6GmVptXQhFNy4r2Au0Q8mkmTY0kxmSjFiGLt34Km5cKOLWR3Dn25heBX9IfDlP+eQnN+LGJXKtj+M1MLi0vJKejWztr6xuZXd3mnIMBaY1HIQtHykCSMclJXVDHSigRBgcdI0xteTOrNGyIkDfm1GkXEDVCfU59ipLTVze6bfdjBVGDoF/LmbQGewX7e9DUV/Mm9m83Z1m5WHRKUEOlfHQyBa3iMXQse6ocmKvWzb53eiGOA8IVZkjKtmNHyk2QUBQzMs50YkihIeoT9oaOQqIdJPpImN4qJ0e9EOhD1dw6n6fSFAg5SjwdGeA1ED+rk3Mv2rtWPkVN6E8ihXhePaQHzOoQjhJBfaoIFixkQaEBdV/hXiABMJKZ5fRIXxtCv+HRtFybMu5KuWq5/M40mAPHATOKAMquAS1EAdYHAHsATeDbujUfjxXidtaM+cwu+CHj7RN7CZ2</latexit><latexit sha1_base64="3wodGyIM8XDlYHraf6gUe0KJwQ=">ACHicdZDLSgMxFIYz9VbrerShcEinW6GmVptXQhFNy4r2Au0Q8mkmTY0kxmSjFiGLt34Km5cKOLWR3Dn25heBX9IfDlP+eQnN+LGJXKtj+M1MLi0vJKejWztr6xuZXd3mnIMBaY1HIQtHykCSMclJXVDHSigRBgcdI0xteTOrNGyIkDfm1GkXEDVCfU59ipLTVze6bfdjBVGDoF/LmbQGewX7e9DUV/Mm9m83Z1m5WHRKUEOlfHQyBa3iMXQse6ocmKvWzb53eiGOA8IVZkjKtmNHyk2QUBQzMs50YkihIeoT9oaOQqIdJPpImN4qJ0e9EOhD1dw6n6fSFAg5SjwdGeA1ED+rk3Mv2rtWPkVN6E8ihXhePaQHzOoQjhJBfaoIFixkQaEBdV/hXiABMJKZ5fRIXxtCv+HRtFybMu5KuWq5/M40mAPHATOKAMquAS1EAdYHAHsATeDbujUfjxXidtaM+cwu+CHj7RN7CZ2</latexit>
slide-115
SLIDE 115

(g f)0(x) = g0(f(x))f 0(x)

<latexit sha1_base64="WBIFhfMAYyeZokVQcH120S6JYno=">ACMnicdVDLSgMxFM3Ud32NunQTLGK7KTPjo3UhiG50p2BboS0lk2baYOZBckdahvkmN36J4EIXirj1I0zHCir1QOBwzn3luJHgCizrychNTc/Mzs0v5BeXldWzbX1ugpjSVmNhiKU1y5RTPCA1YCDYNeRZMR3BWu4N6cjv3HLpOJhcAXDiLV90gu4xykBLXM82IPtyiXFHulneKghI9wb6fYAjaAbHi61kAJE087alic6oMe2YBat8WHEcew9rUq3sHmREw9nHdtnKUEBjXHTMh1Y3pLGvh1BlGraVgTthEjgVLA034oViwi90WuamgbEZ6qdZLtTvK2VLvZCqV8AOFN/diTEV2rou7rSJ9BXf72ROMlrxuBV2wkPohYQL8WebHAEOJRfrjLJaMghpoQKrm+FdM+kYSCTjmvQ/j+Kf6f1J2ybZXty73C8ck4jnm0ibZQEdmogo7RGbpANUTRHXpEL+jVuDejTfj/as0Z4x7NtAvGB+fCHqNA=</latexit><latexit sha1_base64="WBIFhfMAYyeZokVQcH120S6JYno=">ACMnicdVDLSgMxFM3Ud32NunQTLGK7KTPjo3UhiG50p2BboS0lk2baYOZBckdahvkmN36J4EIXirj1I0zHCir1QOBwzn3luJHgCizrychNTc/Mzs0v5BeXldWzbX1ugpjSVmNhiKU1y5RTPCA1YCDYNeRZMR3BWu4N6cjv3HLpOJhcAXDiLV90gu4xykBLXM82IPtyiXFHulneKghI9wb6fYAjaAbHi61kAJE087alic6oMe2YBat8WHEcew9rUq3sHmREw9nHdtnKUEBjXHTMh1Y3pLGvh1BlGraVgTthEjgVLA034oViwi90WuamgbEZ6qdZLtTvK2VLvZCqV8AOFN/diTEV2rou7rSJ9BXf72ROMlrxuBV2wkPohYQL8WebHAEOJRfrjLJaMghpoQKrm+FdM+kYSCTjmvQ/j+Kf6f1J2ybZXty73C8ck4jnm0ibZQEdmogo7RGbpANUTRHXpEL+jVuDejTfj/as0Z4x7NtAvGB+fCHqNA=</latexit><latexit sha1_base64="WBIFhfMAYyeZokVQcH120S6JYno=">ACMnicdVDLSgMxFM3Ud32NunQTLGK7KTPjo3UhiG50p2BboS0lk2baYOZBckdahvkmN36J4EIXirj1I0zHCir1QOBwzn3luJHgCizrychNTc/Mzs0v5BeXldWzbX1ugpjSVmNhiKU1y5RTPCA1YCDYNeRZMR3BWu4N6cjv3HLpOJhcAXDiLV90gu4xykBLXM82IPtyiXFHulneKghI9wb6fYAjaAbHi61kAJE087alic6oMe2YBat8WHEcew9rUq3sHmREw9nHdtnKUEBjXHTMh1Y3pLGvh1BlGraVgTthEjgVLA034oViwi90WuamgbEZ6qdZLtTvK2VLvZCqV8AOFN/diTEV2rou7rSJ9BXf72ROMlrxuBV2wkPohYQL8WebHAEOJRfrjLJaMghpoQKrm+FdM+kYSCTjmvQ/j+Kf6f1J2ybZXty73C8ck4jnm0ibZQEdmogo7RGbpANUTRHXpEL+jVuDejTfj/as0Z4x7NtAvGB+fCHqNA=</latexit><latexit sha1_base64="WBIFhfMAYyeZokVQcH120S6JYno=">ACMnicdVDLSgMxFM3Ud32NunQTLGK7KTPjo3UhiG50p2BboS0lk2baYOZBckdahvkmN36J4EIXirj1I0zHCir1QOBwzn3luJHgCizrychNTc/Mzs0v5BeXldWzbX1ugpjSVmNhiKU1y5RTPCA1YCDYNeRZMR3BWu4N6cjv3HLpOJhcAXDiLV90gu4xykBLXM82IPtyiXFHulneKghI9wb6fYAjaAbHi61kAJE087alic6oMe2YBat8WHEcew9rUq3sHmREw9nHdtnKUEBjXHTMh1Y3pLGvh1BlGraVgTthEjgVLA034oViwi90WuamgbEZ6qdZLtTvK2VLvZCqV8AOFN/diTEV2rou7rSJ9BXf72ROMlrxuBV2wkPohYQL8WebHAEOJRfrjLJaMghpoQKrm+FdM+kYSCTjmvQ/j+Kf6f1J2ybZXty73C8ck4jnm0ibZQEdmogo7RGbpANUTRHXpEL+jVuDejTfj/as0Z4x7NtAvGB+fCHqNA=</latexit>
slide-116
SLIDE 116

(g f)0(x) = g0(f(x))f 0(x)

<latexit sha1_base64="gtypDJLSLkRW12zm6+MkwOTDj60=">ACHXicdVBLS0JBGJ1rL7OX1bLNkIS6kXvN0haB1KalQT5AReaOc3Vw7oOZ74Zy8Y+06a+0aVFEizbRv2m8GlTUgYHDOd9rjh0IrsA0P4zE0vLK6lpyPbWxubW9k97dayg/lJTVqS982bKJYoJ7rA4cBGsFkhHXFqxpjy5nfvOWScV97wYmAeu6ZOBxh1MCWuqlS7kB7lAuKXby2dw4j89xB9gY4smRLmYekGk0yOYc7eanzqyol86YhbNysWiVsCaV8vFpTDSKJ9gqmDEyaIFaL/3W6fs0dPUwKohSbcsMoBsRCZwKNk1QsUCQkd6XVtTj7hMdaP4hik+0kofO7UzwMcq987IuIqNXFtXekSGKrf3kz8y2uH4FS6EfeCEJhH54ucUGDw8Swq3OeSURATQiVXN+K6ZBIQkEHmtIhfP0U/08axYJlFqzrUqZ6sYgjiQ7QIcohC5VRFV2hGqojiu7QA3pCz8a98Wi8GK/z0oSx6NlHP2C8fwJ0zKBV</latexit><latexit sha1_base64="gtypDJLSLkRW12zm6+MkwOTDj60=">ACHXicdVBLS0JBGJ1rL7OX1bLNkIS6kXvN0haB1KalQT5AReaOc3Vw7oOZ74Zy8Y+06a+0aVFEizbRv2m8GlTUgYHDOd9rjh0IrsA0P4zE0vLK6lpyPbWxubW9k97dayg/lJTVqS982bKJYoJ7rA4cBGsFkhHXFqxpjy5nfvOWScV97wYmAeu6ZOBxh1MCWuqlS7kB7lAuKXby2dw4j89xB9gY4smRLmYekGk0yOYc7eanzqyol86YhbNysWiVsCaV8vFpTDSKJ9gqmDEyaIFaL/3W6fs0dPUwKohSbcsMoBsRCZwKNk1QsUCQkd6XVtTj7hMdaP4hik+0kofO7UzwMcq987IuIqNXFtXekSGKrf3kz8y2uH4FS6EfeCEJhH54ucUGDw8Swq3OeSURATQiVXN+K6ZBIQkEHmtIhfP0U/08axYJlFqzrUqZ6sYgjiQ7QIcohC5VRFV2hGqojiu7QA3pCz8a98Wi8GK/z0oSx6NlHP2C8fwJ0zKBV</latexit><latexit sha1_base64="gtypDJLSLkRW12zm6+MkwOTDj60=">ACHXicdVBLS0JBGJ1rL7OX1bLNkIS6kXvN0haB1KalQT5AReaOc3Vw7oOZ74Zy8Y+06a+0aVFEizbRv2m8GlTUgYHDOd9rjh0IrsA0P4zE0vLK6lpyPbWxubW9k97dayg/lJTVqS982bKJYoJ7rA4cBGsFkhHXFqxpjy5nfvOWScV97wYmAeu6ZOBxh1MCWuqlS7kB7lAuKXby2dw4j89xB9gY4smRLmYekGk0yOYc7eanzqyol86YhbNysWiVsCaV8vFpTDSKJ9gqmDEyaIFaL/3W6fs0dPUwKohSbcsMoBsRCZwKNk1QsUCQkd6XVtTj7hMdaP4hik+0kofO7UzwMcq987IuIqNXFtXekSGKrf3kz8y2uH4FS6EfeCEJhH54ucUGDw8Swq3OeSURATQiVXN+K6ZBIQkEHmtIhfP0U/08axYJlFqzrUqZ6sYgjiQ7QIcohC5VRFV2hGqojiu7QA3pCz8a98Wi8GK/z0oSx6NlHP2C8fwJ0zKBV</latexit><latexit sha1_base64="gtypDJLSLkRW12zm6+MkwOTDj60=">ACHXicdVBLS0JBGJ1rL7OX1bLNkIS6kXvN0haB1KalQT5AReaOc3Vw7oOZ74Zy8Y+06a+0aVFEizbRv2m8GlTUgYHDOd9rjh0IrsA0P4zE0vLK6lpyPbWxubW9k97dayg/lJTVqS982bKJYoJ7rA4cBGsFkhHXFqxpjy5nfvOWScV97wYmAeu6ZOBxh1MCWuqlS7kB7lAuKXby2dw4j89xB9gY4smRLmYekGk0yOYc7eanzqyol86YhbNysWiVsCaV8vFpTDSKJ9gqmDEyaIFaL/3W6fs0dPUwKohSbcsMoBsRCZwKNk1QsUCQkd6XVtTj7hMdaP4hik+0kofO7UzwMcq987IuIqNXFtXekSGKrf3kz8y2uH4FS6EfeCEJhH54ucUGDw8Swq3OeSURATQiVXN+K6ZBIQkEHmtIhfP0U/08axYJlFqzrUqZ6sYgjiQ7QIcohC5VRFV2hGqojiu7QA3pCz8a98Wi8GK/z0oSx6NlHP2C8fwJ0zKBV</latexit>
slide-117
SLIDE 117

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

slide-118
SLIDE 118

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

1.0

slide-119
SLIDE 119

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

0.84 0.84 1.0

slide-120
SLIDE 120

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

0.84 0.84 1.0 0.71

slide-121
SLIDE 121

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

0.84 0.84 1.0 0.71 1

slide-122
SLIDE 122

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

0.84 0.84 1.0 0.71 0.54 0.54

slide-123
SLIDE 123

x

f(x) = sin2(x)

<latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit><latexit sha1_base64="wuIaXCG6dgrV6TKmYgqt9jM4Xg=">AB+HicdZDLSgMxFIYzXmu9dNSlm2AR6mbIFGXqQi6cVnBXqAdSybNtKGZzJBkxDr0Sdy4UMStj+LOtzG9UFT0h8DPd87hnPxBwpnSCH1aS8srq2vruY385tb2TsHe3WuoOJWE1knMY9kKsKcCVrXTHPaSiTFUcBpMxheTurNOyoVi8WNHiXUj3BfsJARrA3q2oWwdH8Mz6Fi4rZsbNcuIues4noFLoOmgoaYuShBSmCuWpd+6PTi0kaUaEJx0q1XZRoP8NSM8LpON9JFU0wGeI+bRsrcESVn0PH8MjQ3owjKV5QsMp/T6R4UipURSYzgjrgfpdm8C/au1UhxU/YyJNRVktihMOdQxnKQAe0xSovnIGEwkM7dCMsASE2ypsQFn/3zTKjosc9/qkWL2Yx5EDB+AQlIALPFAFV6AG6oCAFDyCZ/BiPVhP1qv1NmtdsuYz+CHrPcvxzeR4A=</latexit>

sin sin ×

0.84 0.84 1.0 0.71 0.91

slide-124
SLIDE 124

Use a monad (or con'nua'ons)

slide-125
SLIDE 125

flatMap is the chain rule

slide-126
SLIDE 126

final case class AD[A]
 (v: A, k: Double => Double) { // Chain rule def flatMap[B](f: A => AD[B]): AD[B] = { val self = this val next = f(v) AD(next.v, 
 (d: Double) => next.k(d) * self.k(d)) } }

  • bject AD {

def pure(x: Double): AD[Double] = AD(x, d => 1.0) }

slide-127
SLIDE 127

final case class AD[A](v: A, k: Double => Double) { // Chain rule def flatMap[B](f: A => AD[B]): AD[B] = { val self = this val next = f(v) AD(next.v, (d: Double) => next.k(d) * self.k(d)) } def +(that: AD[Double])(implicit ev: A =:= Double): AD[Double] = AD(this.v + that.v, (d: Double) => this.k(d) + that.k(d)) def *(that: AD[Double])(implicit ev: A =:= Double): AD[Double] = AD(this.v * that.v, (d: Double) => (this.k(d) * that.v) + (that.k(d) * this.v)) def sin(implicit ev: A =:= Double): AD[Double] = this.flatMap(x => AD(Math.sin(x), (d) => Math.cos(x) * d)) def gradient: Double = this.k(1.0) }

  • bject AD {

def pure(x: Double): AD[Double] = AD(x, d => 1.0) }

slide-128
SLIDE 128

val f = (x: AD[Double]) => 
 x.sin * x.sin f(AD.pure(1.0)).gradient // res: Double = 0.9092974268256818

slide-129
SLIDE 129

Reverse-mode scales in the size of the output dimension

slide-130
SLIDE 130

|input| |output|

<latexit sha1_base64="EHcgG1m+brEGcr9363NM2u/lSw=">AC3icdZDLSsNAFIYnXmu9RV26GVoEVyURJXVXdOygr1AU8pkOk2HTiZh5kQsbfdufBU3LhRx6wu482ctqGo6A8Dh+8/hzPnDxLBNTjOp7W0vLK6tp7byG9ube/s2nv7dR2nirIajUWsmgHRTHDJasBsGaiGIkCwRrB4HLqN26Z0jyWNzBMWDsioeQ9TgkY1LELYx/YHYy4TFKYjLEfhjhDcQoz1rGLTum87HnOGXZLzkzYECPWZAiylTt2B9+N6ZpxCRQbRuU4C7RFRwKlgk7yfapYQOiAha5lSkojp9mh2ywQfGdLFvViZJwHP6PeJEYm0HkaB6YwI9PVvbwr/8lop9Mrt+Z1M0vmiXiowxHgaDO5yxSiIoSkIVdz8FdM+UYSCiS9vQljc/n9RPym5Tsm9Pi1WLrI4cugQFdAxcpGHKugKVENUXSPHtEzerEerCfr1Xqbty5Z2cwB+iHr/QutzJy8</latexit><latexit sha1_base64="EHcgG1m+brEGcr9363NM2u/lSw=">AC3icdZDLSsNAFIYnXmu9RV26GVoEVyURJXVXdOygr1AU8pkOk2HTiZh5kQsbfdufBU3LhRx6wu482ctqGo6A8Dh+8/hzPnDxLBNTjOp7W0vLK6tp7byG9ube/s2nv7dR2nirIajUWsmgHRTHDJasBsGaiGIkCwRrB4HLqN26Z0jyWNzBMWDsioeQ9TgkY1LELYx/YHYy4TFKYjLEfhjhDcQoz1rGLTum87HnOGXZLzkzYECPWZAiylTt2B9+N6ZpxCRQbRuU4C7RFRwKlgk7yfapYQOiAha5lSkojp9mh2ywQfGdLFvViZJwHP6PeJEYm0HkaB6YwI9PVvbwr/8lop9Mrt+Z1M0vmiXiowxHgaDO5yxSiIoSkIVdz8FdM+UYSCiS9vQljc/n9RPym5Tsm9Pi1WLrI4cugQFdAxcpGHKugKVENUXSPHtEzerEerCfr1Xqbty5Z2cwB+iHr/QutzJy8</latexit><latexit sha1_base64="EHcgG1m+brEGcr9363NM2u/lSw=">AC3icdZDLSsNAFIYnXmu9RV26GVoEVyURJXVXdOygr1AU8pkOk2HTiZh5kQsbfdufBU3LhRx6wu482ctqGo6A8Dh+8/hzPnDxLBNTjOp7W0vLK6tp7byG9ube/s2nv7dR2nirIajUWsmgHRTHDJasBsGaiGIkCwRrB4HLqN26Z0jyWNzBMWDsioeQ9TgkY1LELYx/YHYy4TFKYjLEfhjhDcQoz1rGLTum87HnOGXZLzkzYECPWZAiylTt2B9+N6ZpxCRQbRuU4C7RFRwKlgk7yfapYQOiAha5lSkojp9mh2ywQfGdLFvViZJwHP6PeJEYm0HkaB6YwI9PVvbwr/8lop9Mrt+Z1M0vmiXiowxHgaDO5yxSiIoSkIVdz8FdM+UYSCiS9vQljc/n9RPym5Tsm9Pi1WLrI4cugQFdAxcpGHKugKVENUXSPHtEzerEerCfr1Xqbty5Z2cwB+iHr/QutzJy8</latexit><latexit sha1_base64="EHcgG1m+brEGcr9363NM2u/lSw=">AC3icdZDLSsNAFIYnXmu9RV26GVoEVyURJXVXdOygr1AU8pkOk2HTiZh5kQsbfdufBU3LhRx6wu482ctqGo6A8Dh+8/hzPnDxLBNTjOp7W0vLK6tp7byG9ube/s2nv7dR2nirIajUWsmgHRTHDJasBsGaiGIkCwRrB4HLqN26Z0jyWNzBMWDsioeQ9TgkY1LELYx/YHYy4TFKYjLEfhjhDcQoz1rGLTum87HnOGXZLzkzYECPWZAiylTt2B9+N6ZpxCRQbRuU4C7RFRwKlgk7yfapYQOiAha5lSkojp9mh2ywQfGdLFvViZJwHP6PeJEYm0HkaB6YwI9PVvbwr/8lop9Mrt+Z1M0vmiXiowxHgaDO5yxSiIoSkIVdz8FdM+UYSCiS9vQljc/n9RPym5Tsm9Pi1WLrI4cugQFdAxcpGHKugKVENUXSPHtEzerEerCfr1Xqbty5Z2cwB+iHr/QutzJy8</latexit>
slide-131
SLIDE 131

h[ps:/ /github.com/noelwelsh/ fdl

slide-132
SLIDE 132

Differen'able Programming

slide-133
SLIDE 133

Differen'able programming = automa'c differen'a'on + composi'onal code

slide-134
SLIDE 134

Treat differen'able programming as programming

slide-135
SLIDE 135

Ergonomics

slide-136
SLIDE 136

Correctness

slide-137
SLIDE 137

Performance

slide-138
SLIDE 138

Ergonomics

slide-139
SLIDE 139

val f = x => sin(x) * sin(x)

slide-140
SLIDE 140

# Tensorflow (Python) X = tf.placeholder(tf.float32)
 Y = tf.sin(X) Z = tf.multiply(Y, Y)

slide-141
SLIDE 141

Solu'on: be[er DSLs

slide-142
SLIDE 142

Correctness

slide-143
SLIDE 143

Tensor dimensions must agree

slide-144
SLIDE 144

× =

Vector[3] Matrix[3,5] Vector[5]

slide-145
SLIDE 145

Axis have meaning

slide-146
SLIDE 146

// What is axis 1?

tf.reduce_sum(tensor, 1)

slide-147
SLIDE 147

Solu'on: expressive type systems

slide-148
SLIDE 148

h[ps:/ /github.com/ ctongfei/nexus

slide-149
SLIDE 149

Linear logic and differen'al λ-calculus

slide-150
SLIDE 150

Performance

slide-151
SLIDE 151

Need compila'on (to GPU) for performance

slide-152
SLIDE 152

Now: embedded DSLs

slide-153
SLIDE 153

Future: languages (with staging)

slide-154
SLIDE 154

h[ps:/ /github.com/ feiwang3311/Lantern.git

slide-155
SLIDE 155

Conclusions

slide-156
SLIDE 156

Deep learning is about func'on composi'on and deriva'ves

slide-157
SLIDE 157

FP is about func'on composi'on

slide-158
SLIDE 158

And we can easily express deriva'ves in FP

slide-159
SLIDE 159

Scala is well posi'oned for the next genera'on of DL systems

slide-160
SLIDE 160

But it’s a lot of engineering work…

slide-161
SLIDE 161

Thank You! github.com/noelwelsh/fdl

Noel Welsh @noelwelsh

underscore