<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>autodiff Wiki Rss Feed</title><link>http://autodiff.codeplex.com/</link><description>autodiff Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>https://autodiff.codeplex.com/wikipage?version=53</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using in research papers&lt;/b&gt;&lt;br /&gt;If you like the library and it helps you publish a research paper, please cite the paper I originally wrote the library for &lt;a href="https://www.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=695091"&gt;geosemantic.bib&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Used by&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Alex Shtof, Alexander Agathos, Yotam Gingold, Ariel Shamir, Daniel Cohen-Or&lt;/b&gt; &lt;a href="https://diglib.eg.org/EG/DL/CGF/volume32/issue2/v32i2pp245-253.pdf.abstract.pdf;internal&amp;amp;action=action.digitallibrary.ShowPaperAbstract"&gt;Geosemantic Snapping for Sketch-Based Modeling&lt;/a&gt; &lt;i&gt;Eurographics 2013 proceedings&lt;/i&gt; &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hendrik Skubch&lt;/b&gt;, &lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt; &lt;i&gt;Proceedings of the 27th Annual ACM Symposium on Applied Computing&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ros.org/wiki/AlicaEngine"&gt;AlicaEngine&lt;/a&gt; - A cooperative planning engine for robotics. You can see it in action in this &lt;a href="http://www.youtube.com/watch?v=HhIrhU19PG4"&gt;video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dev.heuristiclab.com"&gt;HeuristicsLab&lt;/a&gt; - a framework for heuristic and evolutionary algorithms that is developed by members of the &lt;a href="http://heal.heuristiclab.com/"&gt;Heuristic and Evolutionary Algorithms Laboratory (HEAL)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Wed, 19 Jun 2013 22:08:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130619100808P</guid></item><item><title>Updated Wiki: Home</title><link>https://autodiff.codeplex.com/wikipage?version=52</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Used by&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Alex Shtof, Alexander Agathos, Yotam Gingold, Ariel Shamir, Daniel Cohen-Or&lt;/b&gt; &lt;a href="https://diglib.eg.org/EG/DL/CGF/volume32/issue2/v32i2pp245-253.pdf.abstract.pdf;internal&amp;amp;action=action.digitallibrary.ShowPaperAbstract"&gt;Geosemantic Snapping for Sketch-Based Modeling&lt;/a&gt; &lt;i&gt;Eurographics 2013 proceedings&lt;/i&gt; &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hendrik Skubch&lt;/b&gt;, &lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt; &lt;i&gt;Proceedings of the 27th Annual ACM Symposium on Applied Computing&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ros.org/wiki/AlicaEngine"&gt;AlicaEngine&lt;/a&gt; - A cooperative planning engine for robotics. You can see it in action in this &lt;a href="http://www.youtube.com/watch?v=HhIrhU19PG4"&gt;video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dev.heuristiclab.com"&gt;HeuristicsLab&lt;/a&gt; - a framework for heuristic and evolutionary algorithms that is developed by members of the &lt;a href="http://heal.heuristiclab.com/"&gt;Heuristic and Evolutionary Algorithms Laboratory (HEAL)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Sat, 11 May 2013 06:24:00 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130511062400A</guid></item><item><title>Updated Wiki: Home</title><link>http://autodiff.codeplex.com/wikipage?version=51</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Used by&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Alex Shtof, Alexander Agathos, Yotam Gingold, Ariel Shamir, Daniel Cohen-Or&lt;/b&gt; &lt;a href="http://cs.gmu.edu/~ygingold/geosemantic/"&gt;Geosemantic Snapping for Sketch-Based Modeling&lt;/a&gt; &lt;i&gt;Proceedings of Eurographics 2013&lt;/i&gt; &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hendrik Skubch&lt;/b&gt;, &lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt; &lt;i&gt;Proceedings of the 27th Annual ACM Symposium on Applied Computing&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ros.org/wiki/AlicaEngine"&gt;AlicaEngine&lt;/a&gt; - A cooperative planning engine for robotics. You can see it in action in this &lt;a href="http://www.youtube.com/watch?v=HhIrhU19PG4"&gt;video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dev.heuristiclab.com"&gt;HeuristicsLab&lt;/a&gt; - a framework for heuristic and evolutionary algorithms that is developed by members of the &lt;a href="http://heal.heuristiclab.com/"&gt;Heuristic and Evolutionary Algorithms Laboratory (HEAL)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Mon, 04 Feb 2013 09:49:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130204094928A</guid></item><item><title>Updated Wiki: Home</title><link>http://autodiff.codeplex.com/wikipage?version=50</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Users&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Alex Shtof, Alexander Agathos, Yotam Gingold, Ariel Shamir, Daniel Cohen-Or&lt;/b&gt; &lt;a href="http://cs.gmu.edu/~ygingold/geosemantic/"&gt;Geosemantic Snapping for Sketch-Based Modeling&lt;/a&gt; &lt;i&gt;Proceedings of Eurographics 2013&lt;/i&gt; &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hendrik Skubch&lt;/b&gt;, &lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt; &lt;i&gt;Proceedings of the 27th Annual ACM Symposium on Applied Computing&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ros.org/wiki/AlicaEngine"&gt;AlicaEngine&lt;/a&gt; - A cooperative planning engine for robotics. You can see it in action in this &lt;a href="http://www.youtube.com/watch?v=HhIrhU19PG4"&gt;video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dev.heuristiclab.com"&gt;HeuristicsLab&lt;/a&gt; - a framework for heuristic and evolutionary algorithms that is developed by members of the &lt;a href="http://heal.heuristiclab.com/"&gt;Heuristic and Evolutionary Algorithms Laboratory (HEAL)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Mon, 04 Feb 2013 09:48:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130204094838A</guid></item><item><title>Updated Wiki: Home</title><link>http://autodiff.codeplex.com/wikipage?version=49</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Users&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Hendrik Skubch&lt;/b&gt;, &lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt; &lt;i&gt;Proceedings of the 27th Annual ACM Symposium on Applied Computing&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ros.org/wiki/AlicaEngine"&gt;AlicaEngine&lt;/a&gt; - A cooperative planning engine for robotics. You can see it in action in this &lt;a href="http://www.youtube.com/watch?v=HhIrhU19PG4"&gt;video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dev.heuristiclab.com"&gt;HeuristicsLab&lt;/a&gt; - a framework for heuristic and evolutionary algorithms that is developed by members of the &lt;a href="http://heal.heuristiclab.com/"&gt;Heuristic and Evolutionary Algorithms Laboratory (HEAL)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Mon, 26 Nov 2012 11:11:29 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126111129A</guid></item><item><title>Updated Wiki: Home</title><link>http://autodiff.codeplex.com/wikipage?version=48</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Users&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Hendrik Skubch&lt;/b&gt;, &lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt; &lt;i&gt;Proceedings of the 27th Annual ACM Symposium on Applied Computing&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ros.org/wiki/AlicaEngine"&gt;AlicaEngine&lt;/a&gt; - A cooperative planning engine for robotics. You can see it in action in this &lt;a href="http://www.youtube.com/watch?v=HhIrhU19PG4"&gt;video&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Fri, 23 Nov 2012 20:08:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121123080813P</guid></item><item><title>Updated Wiki: Home</title><link>http://autodiff.codeplex.com/wikipage?version=47</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Users&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt; &lt;i&gt;Proceedings of the 27th Annual ACM Symposium on Applied Computing&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Fri, 23 Nov 2012 10:26:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121123102640A</guid></item><item><title>Updated Wiki: Home</title><link>http://autodiff.codeplex.com/wikipage?version=46</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Users&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt; &lt;i&gt;Proceedings of the 27th Annual ACM Symposium on Applied Computing&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Fri, 23 Nov 2012 09:40:50 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121123094050A</guid></item><item><title>Updated Wiki: Home</title><link>http://autodiff.codeplex.com/wikipage?version=45</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;A library that provides fast, accurate and automatic differentiation &amp;#40;computes derivative &amp;#47;  gradient&amp;#41; of mathematical functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Users&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Academic research
&lt;ul&gt;&lt;li&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=2245293"&gt;Solving non-linear arithmetic constraints in soft realtime environments&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Fri, 23 Nov 2012 09:34:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121123093449A</guid></item><item><title>Updated Wiki: Home</title><link>https://autodiff.codeplex.com/wikipage?version=44</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;High-performance and high-accuracy automatic function-differentiation library suitable for optimization and numeric computing. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;Using NuGet:&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Sat, 08 Sep 2012 15:46:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120908034613P</guid></item><item><title>Updated Wiki: Home</title><link>https://autodiff.codeplex.com/wikipage?version=43</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;High-performance and high-accuracy automatic function-differentiation library suitable for optimization and numeric computing. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Sat, 08 Sep 2012 15:46:00 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120908034600P</guid></item><item><title>Updated Wiki: Home</title><link>https://autodiff.codeplex.com/wikipage?version=42</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;High-performance and high-accuracy automatic function-differentiation library suitable for optimization and numeric computing. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.nuget.org&amp;#47;List&amp;#47;Packages&amp;#47;AutoDiff"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=483788" alt="Install&amp;#32;Autodiff&amp;#32;Image" title="Install&amp;#32;Autodiff&amp;#32;Image" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Sat, 08 Sep 2012 15:45:47 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120908034547P</guid></item><item><title>Updated Wiki: Home</title><link>https://autodiff.codeplex.com/wikipage?version=41</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;High-performance and high-accuracy automatic function-differentiation library suitable for optimization and numeric computing. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;&lt;img src="http://www.nuget.org/List/Packages/AutoDiff" alt="install-autodiff.png" title="install-autodiff.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="https://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Sat, 08 Sep 2012 15:43:48 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120908034348P</guid></item><item><title>Updated Wiki: Temporary Post Used For Theme Detection (73ae7c2f-5080-4eb7-a0ae-68067fbb2d27 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)</title><link>https://autodiff.codeplex.com/wikipage?title=Temporary Post Used For Theme Detection (73ae7c2f-5080-4eb7-a0ae-68067fbb2d27 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This is a temporary post that was not deleted. Please delete this manually. (40940c7f-4b23-4fda-a5e5-0a6c8ab29afa - 3bfe001a-32de-4114-a6b4-4005b770f6d7)&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Mon, 07 May 2012 12:21:54 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Temporary Post Used For Theme Detection (73ae7c2f-5080-4eb7-a0ae-68067fbb2d27 - 3bfe001a-32de-4114-a6b4-4005b770f6d7) 20120507122154P</guid></item><item><title>Updated Wiki: Vector math</title><link>http://autodiff.codeplex.com/wikipage?title=Vector math&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Short intro&lt;/h1&gt;
&lt;h1&gt;Creating vectors&lt;/h1&gt;
&lt;h1&gt;Vector operations&lt;/h1&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Mon, 07 May 2012 12:18:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Vector math 20120507121803P</guid></item><item><title>Updated Wiki: Temporary Post Used For Theme Detection (a949b0db-7244-4c9e-a857-f7f34fb2737e - 3bfe001a-32de-4114-a6b4-4005b770f6d7)</title><link>https://autodiff.codeplex.com/wikipage?title=Temporary Post Used For Theme Detection (a949b0db-7244-4c9e-a857-f7f34fb2737e - 3bfe001a-32de-4114-a6b4-4005b770f6d7)&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This is a temporary post that was not deleted. Please delete this manually. (ed9443c4-70ab-4521-84ce-2762a87b0000 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Mon, 07 May 2012 12:14:19 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Temporary Post Used For Theme Detection (a949b0db-7244-4c9e-a857-f7f34fb2737e - 3bfe001a-32de-4114-a6b4-4005b770f6d7) 20120507121419P</guid></item><item><title>Updated Wiki: Supported functions survey</title><link>http://autodiff.codeplex.com/wikipage?title=Supported functions survey&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Basic arithmetic&lt;/h1&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
&lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

&lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * z;
&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Large sums&lt;/h1&gt;
&lt;h1&gt;Powers&lt;/h1&gt;
&lt;h1&gt;Special functions&lt;/h1&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Mon, 07 May 2012 12:09:37 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Supported functions survey 20120507120937P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://autodiff.codeplex.com/documentation?version=12</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Benchmarks&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Documentation"&gt;0.3 benchmark&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Documentation"&gt;0.5 vs 0.3 benchmark&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;AutoDiff tutorial&lt;/h1&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=Your%20first%20AutoDiff%20application&amp;referringTitle=Documentation"&gt;Your first AutoDiff application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=AutoDiff%20revisited%20-%20Compiled%20terms&amp;referringTitle=Documentation"&gt;AutoDiff revisited - Compiled terms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=Solving%20equations%20-%20Newton-Raphson%20sample&amp;referringTitle=Documentation"&gt;Solving equations - Newton-Raphson sample&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=Optimization%20-%20simple%20gradient%20descent&amp;referringTitle=Documentation"&gt;Optimization - simple gradient descent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=Optimization%20-%20integration%20with%20AlgLib&amp;referringTitle=Documentation"&gt;Optimization - integration with AlgLib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=Optimization%20-%20integration%20with%20ExtremeOptimization&amp;referringTitle=Documentation"&gt;Optimization - integration with ExtremeOptimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=User-defined%20functions&amp;referringTitle=Documentation"&gt;User-defined functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=Supported%20functions%20survey&amp;referringTitle=Documentation"&gt;Supported functions survey&lt;/a&gt; (under construction)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://autodiff.codeplex.com/wikipage?title=Vector%20math&amp;referringTitle=Documentation"&gt;Vector math&lt;/a&gt; (under construction)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Mon, 07 May 2012 11:58:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120507115808A</guid></item><item><title>Updated Wiki: Home</title><link>http://autodiff.codeplex.com/wikipage?version=40</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;High-performance and high-accuracy automatic function-differentiation library suitable for optimization and numeric computing. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is it for?&lt;/b&gt;&lt;br /&gt;AutoDiff provides a simple and intuitive API for computing function gradients/derivatives along with a fast state-of-the-art algorithm for performing the computation. Such computations are mainly useful in numeric optimization scenarios. Numeric programming in .NET has never been simpler.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting AutoDiff&lt;/b&gt;&lt;br /&gt;You can download the library either from this site&amp;#39;s download section, or you can use &lt;a href="http://www.nuget.org/List/Packages/AutoDiff"&gt;NuGet&lt;/a&gt; to install the package in your solution.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code example&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; AutoDiff;

&lt;span style="color:Blue;"&gt;class&lt;/span&gt; Program
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] args)
    {
            &lt;span style="color:Green;"&gt;// define variables&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; x = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; y = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; z = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Variable();

            &lt;span style="color:Green;"&gt;// define our function&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;var&lt;/span&gt; func = (x + y) * TermBuilder.Exp(z + x * y);

            &lt;span style="color:Green;"&gt;// prepare arrays needed for evaluation/differentiation&lt;/span&gt;
            Variable[] vars = { x, y, z };
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] values = {1, 2, -3 };

            &lt;span style="color:Green;"&gt;// evaluate func at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt; value = func.Evaluate(vars, values);

            &lt;span style="color:Green;"&gt;// calculate the gradient at (1, 2, -3)&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;double&lt;/span&gt;[] gradient = func.Differentiate(vars, values);

            &lt;span style="color:Green;"&gt;// print results&lt;/span&gt;
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The value at (1, 2, -3) is &amp;quot;&lt;/span&gt; + value);
            Console.WriteLine(&lt;span style="color:#A31515;"&gt;&amp;quot;The gradient at (1, 2, -3) is ({0}, {1}, {2})&amp;quot;&lt;/span&gt;, gradient[0], gradient[1], gradient[2]);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;In the &lt;a href="http://autodiff.codeplex.com/documentation"&gt;Documentation&lt;/a&gt; tab right now we have some basic tutorials, and some others are under construction. We also have an &lt;a href="http://www.codeproject.com/KB/library/Automatic_Differentiation.aspx"&gt;article&lt;/a&gt; on CodeProject. In addition, the binary distribution contains XML comments for all public methods and a help file you can view with your favorite help viewer. And finally, the &lt;a href="http://autodiff.codeplex.com/SourceControl/list/changesets"&gt;source control&lt;/a&gt; contains some code examples in addition to the library&amp;#39;s code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;There are many open and commercial .NET libraries that have numeric optimization as one of their features (for example, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx"&gt;Microsoft Solver Foundation&lt;/a&gt;,  &lt;a href="http://www.alglib.net"&gt;AlgLib&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/projects/sho/"&gt;Microsoft Research SHO&lt;/a&gt; &lt;a href="http://www.extremeoptimization.com/"&gt;Extreme Optimization&lt;/a&gt;, &lt;a href="http://www.centerspace.net/"&gt;CenterSpace NMath&lt;/a&gt;) . Most of them require the user to be able to evaluate the function and the function&amp;#39;s gradient. This library tries to save the work in manually developing the function&amp;#39;s gradient and coding it.&lt;br /&gt;Once the developer defines his/her function, the AutoDiff library can automatically evaluate and differentiate this function at any point. This allows &lt;u&gt;easy development and prototyping&lt;/u&gt; of applications based on numeric optimization.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fast! See &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.5%20vs%200.3%20benchmark&amp;referringTitle=Home"&gt;0.5 vs 0.3 benchmark&lt;/a&gt; and &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=Home"&gt;0.3 benchmark&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Composition of functions using arithmetic operators, Exp, Log, Power and user-defined unary and binary functions.&lt;/li&gt;
&lt;li&gt;Function gradient evaluation at specified points&lt;/li&gt;
&lt;li&gt;Function value evaluation at specified points&lt;/li&gt;
&lt;li&gt;Uses &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx"&gt;Code Contracts&lt;/a&gt; for specifying valid parameters and return values&lt;/li&gt;
&lt;li&gt;Computes gradients using Reverse-Mode AD algorithm in &lt;b&gt;linear time&lt;/b&gt;!
&lt;ul&gt;&lt;li&gt;Yes, it&amp;#39;s faster than numeric approximation for multivariate functions&lt;/li&gt;
&lt;li&gt;You get both high accuracy and speed!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Fri, 13 Apr 2012 11:14:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120413111403A</guid></item><item><title>Updated Wiki: 0.5 vs 0.3 benchmark</title><link>http://autodiff.codeplex.com/wikipage?title=0.5 vs 0.3 benchmark&amp;version=4</link><description>&lt;div class="wikidoc"&gt;We used the same benchmark program as in the &lt;a href="http://autodiff.codeplex.com/wikipage?title=0.3%20benchmark&amp;referringTitle=0.5%20vs%200.3%20benchmark"&gt;0.3 benchmark&lt;/a&gt; page, but replaced the AutoDiff library with the newer version. Here are the results. We have a substantial improvement of compilation and differentiation time. However evaluation time is a bit slower.&lt;br /&gt;In the following charts, the X axis is the number of terms and the Y axis is the time, in milliseconds.&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=367146" alt="compile.png" title="compile.png" /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=367147" alt="eval.png" title="eval.png" /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=367148" alt="diff.png" title="diff.png" /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
The charts were constructed using the following excel file: &lt;a href="http://www.codeplex.com/Download?ProjectName=autodiff&amp;DownloadId=367149"&gt;benchmark-0.5.xlsx&lt;/a&gt;.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>alexshtf</author><pubDate>Fri, 13 Apr 2012 11:11:58 GMT</pubDate><guid isPermaLink="false">Updated Wiki: 0.5 vs 0.3 benchmark 20120413111158A</guid></item></channel></rss>