<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> n 2( data y i − sin( data x i / θ )) cos( data x i / θ ) data x X i θ 2 i =1
Calculate gradient for current parameters
Change parameters by a small amount in downhill direc'on
Deep Learning
Deep learning is supervised learning of parameterised func'ons by gradient descent
Choice of func'ons that is expressive
Choice of func'ons that is suited to GPU accelera'on
Tensor mul'plica'on and non-linearity
Tensors: mul'dimensional arrays
Generalisa'on of vectors and matrices
Vector[3] Matrix[3,5] Vector[5] = ×
Matrix “weights” are parameters
Non-linearity: just about any non-linear func'on
<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> ReLU ( x ) = max (0 , x )
<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> f ( x ) = ReLU ( x × Weights)
Deep = composing many func'ons
<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> z ( x ) = k ( j ( i ( h ( g ( f ( x )))))
Differen'able Programming
SoQware that automa'cally calculates deriva'ves and compiles to GPU code
Increasing complexity of deep learning models
Condi'onals and loops
“Differen'able programming”
Automa'c Differen'a'on
Calcula'ng gradients
Deriva'ves are composi'onal
Algorithms for calcula'ng gradients
Forward-mode AD
Reverse-mode AD
Composi'on of Deriva'ves
Func'ons compose
<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> g � f = g ( f ( x ))
Deriva'ves compose
<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> ( g � f ) 0 = ( g 0 � f ) f 0
Calcula'ng Gradients
Mathema'cian’s approach
Symbolic differen'a'on
( af ) 0 = af 0 <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> ( f + g ) 0 = f 0 + g 0 ( f ( x ) g ( x )) 0 = f 0 ( x ) g ( x ) + f ( x ) g 0 ( x ) ( g � f ) 0 = ( g 0 � f ) f 0 ( x n ) 0 = nx n � 1 ( e ax ) 0 = ae ax (ln( x )) 0 = 1 x (sin( x )) 0 = cos( x ) (cos( x )) 0 = � sin( x ) (tan( x )) 0 = 1 + tan 2 ( x )
Exact solu'on
No loops or condi'onals
Size of deriva've grows exponen'ally
Programmer’s approach
<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> f ( x + ✏ ) − f ( x ) ✏
Any func'on
Inexact. Choosing ε is hard
Automa'c differen'a'on approach
Two main algorithms: forward and reverse
Exact solu'on
Any func'on
Forward-mode AD
Calculate with dual numbers
<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> a + b ✏ ✏ 2 = 0
final case class Dual(v: Double, d: Double)
Add rules for basic opera'ons and func'ons
<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> ( a + b ✏ ) + ( c + d ✏ ) = ( a + c ) + ( b + d ) ✏
final case class Dual(v: Double, d: Double) { def +(that: Dual): Dual = Dual(this.v + that.v, this.d + that.d) }
<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> ( a + b ✏ )( c + d ✏ ) = ac + bc ✏ + ad ✏ + bd ✏ 2 = ac + ( bc + ad ) ✏
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)) }
<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> f ( a + b ✏ ) = f ( a ) + f 0 ( a ) b ✏
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) }
<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> f ( x ) = sin 2 ( 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> f ( x ) = sin 2 ( x ) sin × x sin
<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> f ( x ) = sin 2 ( x ) sin Dual(1.0, 1) × x sin
<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> f ( x ) = sin 2 ( x ) Dual(0.84, 0.54) sin × x sin Dual(0.84, 0.54)
<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> f ( x ) = sin 2 ( x ) sin Dual(0.71, 0.91) × x sin
val f = (x: Dual) => x.sin * x.sin f(Dual(1.0, 1)) // res: Dual = Dual(0.7080734182735712,0.9092974268256818)
Manipula'on of the chain rule
<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> 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> f ( a + b ✏ ) = f ( a ) + f 0 ( a ) b ✏
<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> a → f ( a ) + f 0 ( a )
Recommend
More recommend