<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://tomwiki.com/index.php?action=history&amp;feed=atom&amp;title=MAD</id>
	<title>MAD - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://tomwiki.com/index.php?action=history&amp;feed=atom&amp;title=MAD"/>
	<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=MAD&amp;action=history"/>
	<updated>2026-11-02T23:12:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>http://tomwiki.com/index.php?title=MAD&amp;diff=2294&amp;oldid=prev</id>
		<title>Elias at 10:43, 1 December 2011</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=MAD&amp;diff=2294&amp;oldid=prev"/>
		<updated>2011-12-01T10:43:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:43, 1 December 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l79&quot;&gt;Line 79:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 79:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Conclusions &amp;amp; Future Work==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Conclusions &amp;amp; Future Work==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[MAD Conclusions &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp; Future Work&lt;/del&gt;|Conclusions &amp;amp; Future Work]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[MAD Conclusions|Conclusions &amp;amp; Future Work]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=MAD&amp;diff=2289&amp;oldid=prev</id>
		<title>Elias at 12:33, 29 November 2011</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=MAD&amp;diff=2289&amp;oldid=prev"/>
		<updated>2011-11-29T12:33:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:33, 29 November 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l64&quot;&gt;Line 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 64:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Using TOMLAB /MAD==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Using TOMLAB /MAD==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[MAD Using &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TOMLAB /&lt;/del&gt;MAD|Using &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TOMLAB /&lt;/del&gt;MAD]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[MAD Using MAD|Using MAD]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Basic Use of Forward Mode for First Derivatives==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Basic Use of Forward Mode for First Derivatives==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=MAD&amp;diff=2285&amp;oldid=prev</id>
		<title>Elias: Created page with &quot;Mad  is a Matlab  library of functions and utilities  for the automatic  differentiation  of Matlab func- tions/statements via operator and function overloading. Currently  the f...&quot;</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=MAD&amp;diff=2285&amp;oldid=prev"/>
		<updated>2011-11-29T12:19:49Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Mad  is a Matlab  library of functions and utilities  for the automatic  differentiation  of Matlab func- tions/statements via operator and function overloading. Currently  the f...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Mad  is a Matlab  library of functions and utilities  for the automatic  differentiation  of Matlab func- tions/statements via operator and function overloading. Currently  the forward mode of automatic differentiation is supported via the fmad class. For a single directional derivative objects of the fmad class use Matlab arrays  of the same size for a variable&amp;#039;s  value and its directional derivative.   Multiple  directional  derivatives are stored in objects of the derivvec class allowing for an internal 2-D, matrix  storage so allowing the use of sparse matrix storage for derivatives and ensuring efficient linear combination of derivative vectors via high-level Matlab functions. This user guide covers:&lt;br /&gt;
&lt;br /&gt;
*installation  of Mad  on UNIX  and PC platforms,&lt;br /&gt;
*using TOMLAB /MAD,&lt;br /&gt;
*basic use of the forward mode for differentiating expressions and functions&lt;br /&gt;
*advanced use of the forward mode including:&lt;br /&gt;
**dynamic propagation of sparse derivatives,&lt;br /&gt;
**sparse derivatives via compression,&lt;br /&gt;
**differentiating implicitly defined functions,&lt;br /&gt;
**control of dependencies,&lt;br /&gt;
*use of high-level interfaces for solving ODEs and optimization  problems outside of the TOMLAB frame- work,&lt;br /&gt;
*differentiating &amp;#039;&amp;#039;black-box &amp;#039;&amp;#039;functions for which derivatives are known.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Automatic (or algorithmic) differentiation (AD) is now a widely used tool within scientific computing. AD concerns the mathematical and software process of taking a computer code, which calculates  some outputs &amp;#039;&amp;#039;&amp;#039;y &amp;#039;&amp;#039;&amp;#039;in terms of inputs &amp;#039;&amp;#039;&amp;#039;x &amp;#039;&amp;#039;&amp;#039;through the action of some function &amp;#039;&amp;#039;&amp;#039;y &amp;#039;&amp;#039;&amp;#039;= &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;(&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;), and calculating the function&amp;#039;s derivatives, e.g. the Jacobian F&amp;#039;(x) = &amp;amp;delta;F / &amp;amp;delta;x. The standard reference is the book [Gri00]. It is common notation to take &amp;lt;math&amp;gt;x \in R^n&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y \in R^m&amp;lt;/math&amp;gt;. In AD the function &amp;#039;&amp;#039;&amp;#039;F &amp;#039;&amp;#039;&amp;#039;is considered to be defined by the computer code which is termed the &amp;#039;&amp;#039;source &amp;#039;&amp;#039;or &amp;#039;&amp;#039;source code&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
A variety of tools exist for AD of the standard programming languages including:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fortran &amp;#039;&amp;#039;&amp;#039;: ADIFOR [BCKM96], TAF/TAMC [GK96], Tapenade [INR05], ADO1 [PR98].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;C,C++ &amp;#039;&amp;#039;&amp;#039;: ADIC [BRM97], ADOL-C [GJU96]&lt;br /&gt;
&lt;br /&gt;
All these tools will calculate Jacobian-vector products &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;v &amp;#039;&amp;#039;&amp;#039;by the forward (tangent-linear) mode of AD. Some will calculate vector-Jacobian products &amp;#039;&amp;#039;&amp;#039;u&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt; &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;= &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt; &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;u &amp;#039;&amp;#039;&amp;#039;via the reverse (adjoint) mode. Some will efficiently calculate matrix products &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;U&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt; &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;and thus facilitate calculation of the Jacobian &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;by taking &amp;#039;&amp;#039;&amp;#039;V &amp;#039;&amp;#039;&amp;#039;= &amp;#039;&amp;#039;&amp;#039;I&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; &amp;#039;&amp;#039;or &amp;#039;&amp;#039;&amp;#039;U &amp;#039;&amp;#039;&amp;#039;= &amp;#039;&amp;#039;&amp;#039;I&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; &amp;#039;&amp;#039;(where &amp;#039;&amp;#039;&amp;#039;I&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; &amp;#039;&amp;#039;is the &amp;#039;&amp;#039;n × n &amp;#039;&amp;#039;identity matrix).  Additionally  a few will determine second derivatives (Hessians, Hessian-vector products) and even arbitrary order derivatives.  An up to date list of AD tools may be found at the website [aut05].&lt;br /&gt;
&lt;br /&gt;
The recent textbook [Gri00] and conference proceedings [BCH+ 05] detail the current state of the art in the theory and implementation of AD techniques.&lt;br /&gt;
&lt;br /&gt;
For these languages listed above AD is implemented either via source-text transformation [BCKM96, GK96, INR05, BRM97] or overloading [PR98, GJU96]. In source-text transformation the original code that numerically defines the  function &amp;#039;&amp;#039;&amp;#039;F &amp;#039;&amp;#039;&amp;#039;is transformed,  via sophisticated compiler  techniques, to new code that  calculates the  required derivatives.  In overloading the ability offered by modern programming languages to define new data-types and overload arithmetic operations and intrinsic function calls is utilised to systematically propagate derivatives through the source code and hence calculate the necessary derivatives of the function.&lt;br /&gt;
&lt;br /&gt;
In Matlab progress has been slower.  Rich and Hill [RH92] detail a TURB-C function, callable from Matlab  that allows a function defined by a character string to be differentiated by the forward mode and returned as another character string.  The resulting string representing the derivatives may then be &amp;#039;&amp;#039;evaluated &amp;#039;&amp;#039;for any particular input &amp;#039;&amp;#039;x&amp;#039;&amp;#039;. We view this approach  more as a symbolic algebra technique for differentiating a single statement rather than AD which is concerned with many lines of code containing subfunctions, looping etc. and which may make use of symbolic/compiler techniques.&lt;br /&gt;
&lt;br /&gt;
Modern developments began with Coleman &amp;amp; Verma&amp;#039;s produced the ADMIT Toolbox [CV00] allowing functions specified  by C-code to be differentiated  and accessed  from within  Matlab  through use of ADOL-C.  Of even greater relevance is the pioneering work of Verma who demonstrated in his ADMAT tool [Ver99, Ver98b] how the object oriented features of Matlab version 5 (not available to Rich and Hill in 1992) could be used to build up overloaded libraries of Matlab functions allowing first and second order derivatives to be calculated using both forward and reverse AD. ADMIT may now calculate Jacobians via ADMAT.&lt;br /&gt;
&lt;br /&gt;
Our experience of ADMAT is that, although it has floating point operations counts in line with theory, it runs rather slowly.  Additionally  we have had some difficulties with robustness of the software.  With  these deficiencies in mind we reimplemented the forward mode of AD for first derivatives in a new Matlab toolbox named Mad (Matlab Automatic Differentiation) [For06].&lt;br /&gt;
&lt;br /&gt;
In common with other overloaded, forward mode AD tools Mad  evaluates a function &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;(&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;)  at &amp;#039;&amp;#039;&amp;#039;x &amp;#039;&amp;#039;&amp;#039;= &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; and in the course of this also evaluates the directional derivative &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;(&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; )&amp;#039;&amp;#039;&amp;#039;v &amp;#039;&amp;#039;&amp;#039;This is done by first initialising &amp;#039;&amp;#039;&amp;#039;x &amp;#039;&amp;#039;&amp;#039;as an fmad object using (in Matlab syntax) x = fmad(x0,v) to specify the point &amp;#039;&amp;#039;&amp;#039;x &amp;#039;&amp;#039;&amp;#039;of evaluation and the directional derivative &amp;#039;&amp;#039;&amp;#039;v&amp;#039;&amp;#039;&amp;#039;. Then evaluation of y=F(x)  propagates fmad objects which, through overloading of the elementary operations and functions of Matlab  ensures that directional derivatives and values of all successive quantities and in particular &amp;#039;&amp;#039;&amp;#039;y &amp;#039;&amp;#039;&amp;#039;are calculated. By specifying &amp;#039;&amp;#039;&amp;#039;v &amp;#039;&amp;#039;&amp;#039;= &amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039;, a matrix forming several directional derivatives, then several directional derivatives may be propagated simultaneously.  In particular, if &amp;#039;&amp;#039;&amp;#039;V &amp;#039;&amp;#039;&amp;#039;= &amp;#039;&amp;#039;&amp;#039;I &amp;#039;&amp;#039;&amp;#039;the identity matrix, then the Jacobian &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;t &amp;#039;&amp;#039;(&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;) at &amp;#039;&amp;#039;&amp;#039;x &amp;#039;&amp;#039;&amp;#039;= &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;  is evaluated. The tool is not restricted to vector valued functions.  If the result of a calculation is a &amp;#039;&amp;#039;N &amp;#039;&amp;#039;-dimensional array, then directional derivatives are &amp;#039;&amp;#039;N &amp;#039;&amp;#039;-dimensional arrays, and an &amp;#039;&amp;#039;N &amp;#039;&amp;#039;+ 1 dimensional array may be propagated  to handle multiple directional derivatives.&lt;br /&gt;
&lt;br /&gt;
Our implementation features:&lt;br /&gt;
&lt;br /&gt;
*A new Matlab class fmad which overloads the builtin  Matlab arithmetic and some intrinsic functions.&lt;br /&gt;
&lt;br /&gt;
*Separation of storage and manipulation of derivatives into a separate class derivvec. This greatly reduces the complexity of the Matlab code for the fmad class. Additionally it allows for the straightforward optimisation of the derivative vector operations using the high level matrix/array functions of Matlab.&lt;br /&gt;
&lt;br /&gt;
*The derivvec class also allows for the use of Matlab&amp;#039;s sparse matrix representation to exploit sparsity in the derivative calculations at runtime for arbitrary dimension arrays.&lt;br /&gt;
&lt;br /&gt;
*New for version 1.2:  &amp;#039;&amp;#039;Support for compressed Jacobian calculations when a sparse Jacobian has known sparsity pattern detailed in section 5.4.&lt;br /&gt;
&lt;br /&gt;
*New for version 1.2: &amp;#039;&amp;#039;High-level interfaces for enabling use of Mad  with Matlab&amp;#039;s Optimization Toolbox and stiff ODE solvers as described  in Section 6.&lt;br /&gt;
&lt;br /&gt;
*New for version 1.2: &amp;#039;&amp;#039;Black box interfaces of section 7 for interfacing Mad  with code for which derivative code already has been developed or for calling external procedures for which derivatives are known.&lt;br /&gt;
&lt;br /&gt;
*New for version 1.2: &amp;#039;&amp;#039;all examples now available as script M-files and added to the Matlab path on startup.&lt;br /&gt;
&lt;br /&gt;
*New for version 1.2: &amp;#039;&amp;#039;Improved help facilities allowing removal of the Appendix of previous versions of this manual and introduced in Section 2.5.&lt;br /&gt;
&lt;br /&gt;
Coverage of Matlab&amp;#039;s huge range of intrinsic functions is being constantly extended with new functionality added as demanded;  so allowing for carefully testing on user&amp;#039;s test cases before  widespread release.&lt;br /&gt;
&lt;br /&gt;
An implementation of reverse mode AD is currently under development.&lt;br /&gt;
&lt;br /&gt;
This document constitutes a User Guide for the fmad class of Mad.  Section 2 covers installing Mad.  Section 4 introduces  basic usage of the forward mode via some simple  examples.  Section 5 details  more advanced usage of the  forward mode and in particular provides guidance on how Matlab  functions  should be written  to give effective  usage of Mad.   Section 6 introduces  the high-level  interfaces  first  described in [FK04].   These  allow users of Matlab&amp;#039; Optimisation Toolbox [Mat06b] or Matlab&amp;#039;s stiff ODE solvers [mat06a, Chapter 5] to easily use Mad  for calculating function gradients or Jacobians. Section 7 details &amp;#039;&amp;#039;black box &amp;#039;&amp;#039;interfaces allowing users to interface Mad to functions whose derivatives are known and which possibly are coded in external &amp;#039;&amp;#039;mex &amp;#039;&amp;#039;files written in Fortran or C.&lt;br /&gt;
&lt;br /&gt;
==Installation of Mad==&lt;br /&gt;
*[[MAD Installation of Mad|Installation of Mad]]&lt;br /&gt;
&lt;br /&gt;
==Using TOMLAB /MAD==&lt;br /&gt;
*[[MAD Using TOMLAB /MAD|Using TOMLAB /MAD]]&lt;br /&gt;
&lt;br /&gt;
==Basic Use of Forward Mode for First Derivatives==&lt;br /&gt;
*[[MAD Basic Use of Forward Mode for First Derivatives|Basic Use of Forward Mode for First Derivatives]]&lt;br /&gt;
&lt;br /&gt;
==Advanced Use of Forward Mode for First Derivatives==&lt;br /&gt;
*[[MAD Advanced Use of Forward Mode for First Derivatives|Advanced Use of Forward Mode for First Derivatives]]&lt;br /&gt;
&lt;br /&gt;
==High-Level Interfaces to Matlab’s ODE and Optimization Solvers==&lt;br /&gt;
*[[MAD High-Level Interfaces to Matlab’s ODE and Optimization Solvers|High-Level Interfaces to Matlab’s ODE and Optimization Solvers]]&lt;br /&gt;
&lt;br /&gt;
==Black Box Interfaces==&lt;br /&gt;
*[[MAD Black Box Interfaces|Black Box Interfaces]]&lt;br /&gt;
&lt;br /&gt;
==Conclusions &amp;amp; Future Work==&lt;br /&gt;
*[[MAD Conclusions &amp;amp; Future Work|Conclusions &amp;amp; Future Work]]&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
</feed>