Math.NET Numerics
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

358 lines
28 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Building Math.NET Numerics
</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="Math.NET Numerics, providing methods and algorithms for numerical computations in science, engineering and every day use. .Net 4, .Net 3.5, SL5, Win8, WP8, PCL 47 and 136, Mono, Xamarin Android/iOS."/>
<meta name="author" content="Christoph Ruegg, Marcus Cuda, Jurgen Van Gael"/>
<script src="https://code.jquery.com/jquery-1.8.0.js"></script>
<script src="https://code.jquery.com/ui/1.8.23/jquery-ui.js"></script>
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet"/>
<link type="text/css" rel="stylesheet" href="https://numerics.mathdotnet.com/content/style.css" />
<style>
#main table:not(.pre) {
border: 1px solid #dddddd;
max-width: 100%;
border-style: solid;
border-width: 1px;
border-color: gray;
border-collapse: collapse;
border-right-width: 1px;
border-bottom-width: 1px;
margin-top: 15px;
margin-bottom: 25px;
}
#main table:not(.pre) th, #main table:not(.pre) td {
border: 1px solid #dddddd;
padding: 6px;
}
#main table:not(.pre) th p, #main table:not(.pre) td p {
margin-bottom: 5px;
}
</style>
<script type="text/javascript" src="https://numerics.mathdotnet.com/content/tips.js"></script>
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
</head>
<body>
<div class="container">
<div class="masthead">
<ul class="nav nav-pills pull-right">
<li><a href="https://www.mathdotnet.com">Math.NET Project</a></li>
<li><a href="https://numerics.mathdotnet.com">Math.NET Numerics</a></li>
<li><a href="https://github.com/mathnet/mathnet-numerics">GitHub</a></li>
</ul>
<h3 class="muted">Math.NET Numerics</h3>
</div>
<hr />
<div class="row">
<div class="span9" id="main">
<h1><a name="Building-Math-NET-Numerics" class="anchor" href="#Building-Math-NET-Numerics">Building Math.NET Numerics</a></h1>
<p>If you do not want to use the official binaries, or if you like to modify,
debug or contribute, you can compile locally either using Visual Studio or
manually with the build scripts.</p>
<h2><a name="VisualStudio-or-Xamarin-Studio" class="anchor" href="#VisualStudio-or-Xamarin-Studio">VisualStudio or Xamarin Studio</a></h2>
<p>We clearly separate dependency management from the IDE, you should therefore
run <code>restore.cmd</code> or <code>restore.sh</code> once after every git checkout in order to restore
the dependencies exactly as defined. Otherwise Visual Studio and other IDEs
may fail to compile or provide correct IntelliSense.</p>
<p>Tests can be run with the usual integrated NUnit test runners or ReSharper.</p>
<h2><a name="MSBuild-or-XBuild" class="anchor" href="#MSBuild-or-XBuild">MSBuild or XBuild</a></h2>
<p>Instead of a compatible IDE you can also build the solutions directly with
<code>msbuild</code>, or on Mono with <code>xbuild</code>. You may need to run <code>restore.cmd</code> or
<code>restore.sh</code> before, once after every git checkout in order to restore the dependencies.</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l">1: </span>
<span class="l">2: </span>
<span class="l">3: </span>
<span class="l">4: </span>
<span class="l">5: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="i">restore</span><span class="o">.</span><span class="i">cmd</span> (<span class="k">or</span> <span class="i">restore</span><span class="o">.</span><span class="i">sh</span>) # <span class="i">restore</span> <span class="i">dependencies</span> (<span class="i">once</span>)
<span class="i">msbuild</span> <span class="i">MathNet</span><span class="o">.</span><span class="i">Numerics</span><span class="o">.</span><span class="i">sln</span> # <span class="i">only</span> <span class="i">build</span> <span class="k">for</span> <span class="o">.</span><span class="i">Net</span> <span class="n">4</span> (<span class="i">main</span> <span class="i">solution</span>)
<span class="i">msbuild</span> <span class="i">MathNet</span><span class="o">.</span><span class="i">Numerics</span><span class="o">.</span><span class="i">Net35Only</span><span class="o">.</span><span class="i">sln</span> # <span class="i">only</span> <span class="i">build</span> <span class="k">for</span> <span class="o">.</span><span class="i">Net</span> <span class="n">3.5</span>
<span class="i">msbuild</span> <span class="i">MathNet</span><span class="o">.</span><span class="i">Numerics</span><span class="o">.</span><span class="i">All</span><span class="o">.</span><span class="i">sln</span> # <span class="i">full</span> <span class="i">build</span> <span class="k">with</span> <span class="o">.</span><span class="i">Net</span> <span class="n">4</span>, <span class="n">3.5</span> <span class="k">and</span> <span class="i">PCL</span> <span class="i">profiles</span>
<span class="i">xbuild</span> <span class="i">MathNet</span><span class="o">.</span><span class="i">Numerics</span><span class="o">.</span><span class="i">sln</span> # <span class="i">build</span> <span class="k">with</span> <span class="i">Mono</span>, <span class="i">e</span><span class="o">.</span><span class="i">g</span><span class="o">.</span> <span class="i">on</span> <span class="i">Linux</span> <span class="k">or</span> <span class="i">Mac</span>
</code></pre></td>
</tr>
</table>
<h2><a name="FAKE" class="anchor" href="#FAKE">FAKE</a></h2>
<p>The fully automated build including unit tests, documentation and api
reference, NuGet and Zip packages is using <a href="http://fsharp.github.io/FAKE/">FAKE</a>.</p>
<p>FAKE itself is not included in the repository but it will download and bootstrap
itself automatically when build.cmd is run the first time. Note that this step
is <em>not</em> required when using Visual Studio or <code>msbuild</code> directly.</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l"> 1: </span>
<span class="l"> 2: </span>
<span class="l"> 3: </span>
<span class="l"> 4: </span>
<span class="l"> 5: </span>
<span class="l"> 6: </span>
<span class="l"> 7: </span>
<span class="l"> 8: </span>
<span class="l"> 9: </span>
<span class="l">10: </span>
<span class="l">11: </span>
<span class="l">12: </span>
<span class="l">13: </span>
<span class="l">14: </span>
<span class="l">15: </span>
<span class="l">16: </span>
<span class="l">17: </span>
<span class="l">18: </span>
<span class="l">19: </span>
<span class="l">20: </span>
<span class="l">21: </span>
<span class="l">22: </span>
<span class="l">23: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="i">build</span><span class="o">.</span><span class="i">cmd</span> # <span class="i">normal</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>), <span class="i">run</span> <span class="i">unit</span> <span class="i">tests</span> (<span class="o">.</span><span class="i">Net</span> <span class="i">on</span> <span class="i">Windows</span>)
<span class="o">.</span><span class="o">/</span><span class="i">build</span><span class="o">.</span><span class="i">sh</span> # <span class="i">normal</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>), <span class="i">run</span> <span class="i">unit</span> <span class="i">tests</span> (<span class="i">Mono</span> <span class="i">on</span> <span class="i">Linux</span><span class="o">/</span><span class="i">Mac</span>, <span class="o">.</span><span class="i">Net</span> <span class="i">on</span> <span class="i">Windows</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Build</span> # <span class="i">normal</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Build</span> <span class="i">incremental</span> # <span class="i">normal</span> <span class="i">build</span>, <span class="i">incremental</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Build</span> <span class="i">all</span> # <span class="i">full</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>, <span class="n">3.5</span>, <span class="i">PCL</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Build</span> <span class="i">net35</span> # <span class="i">compatibility</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">3.5</span>
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Build</span> <span class="i">signed</span> # <span class="i">normal</span> <span class="i">build</span>, <span class="i">signed</span><span class="o">/</span><span class="i">strong</span> <span class="i">named</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Test</span> # <span class="i">normal</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>), <span class="i">run</span> <span class="i">unit</span> <span class="i">tests</span>
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Test</span> <span class="i">quick</span> # <span class="i">normal</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>), <span class="i">run</span> <span class="i">unit</span> <span class="i">tests</span> <span class="i">except</span> <span class="i">long</span> <span class="i">running</span> <span class="i">ones</span>
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Test</span> <span class="i">all</span> # <span class="i">full</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>, <span class="n">3.5</span>, <span class="i">PCL</span>), <span class="i">run</span> <span class="i">all</span> <span class="i">unit</span> <span class="i">tests</span>
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Test</span> <span class="i">net35</span> # <span class="i">compatibility</span> <span class="i">build</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">3.5</span>), <span class="i">run</span> <span class="i">unit</span> <span class="i">tests</span>
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Clean</span> # <span class="i">cleanup</span> <span class="i">build</span> <span class="i">artifacts</span>
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Docs</span> # <span class="i">generate</span> <span class="i">documentation</span>
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Api</span> # <span class="i">generate</span> <span class="i">api</span> <span class="i">reference</span>
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">Zip</span> # <span class="i">generate</span> <span class="i">zip</span> <span class="i">packages</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">NuGet</span> # <span class="i">generate</span> <span class="i">NuGet</span> <span class="i">packages</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">NuGet</span> <span class="i">all</span> # <span class="i">generate</span> <span class="i">normal</span> <span class="i">NuGet</span> <span class="i">packages</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>, <span class="n">3.5</span>, <span class="i">PCL</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">NuGet</span> <span class="i">signed</span> # <span class="i">generate</span> <span class="i">signed</span><span class="o">/</span><span class="i">strong</span> <span class="i">named</span> <span class="i">NuGet</span> <span class="i">packages</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>)
<span class="i">build</span><span class="o">.</span><span class="i">cmd</span> <span class="i">All</span> # <span class="i">build</span>, <span class="i">test</span>, <span class="i">docs</span>, <span class="i">api</span> <span class="i">reference</span> (<span class="o">.</span><span class="i">Net</span> <span class="n">4.0</span>)
</code></pre></td>
</tr>
</table>
<p>If the build or tests fail claiming that FSharp.Core was not be found, see
<a href="http://fsharp.org/use/windows/">fsharp.org</a> or install the
<a href="https://go.microsoft.com/fwlink/?LinkId=261286">Visual F# 3.0 Tools</a> directly.</p>
<h2><a name="Dependencies" class="anchor" href="#Dependencies">Dependencies</a></h2>
<p>We manage NuGet and other dependencies with <a href="http://fsprojects.github.io/Paket/">Paket</a>.
You do not normally have to do anything with Paket as it is integrated into our
FAKE build tools, unless you want to actively manage the dependencies.</p>
<p>You can bootstrap or update Paket by calling <code>tools/paket/paket.bootstrapper.exe</code>.
After bootstrapping, <code>tools/paket/paket.exe restore</code> will restore the packages
to the exact version specified in the <code>paket.lock</code> file,
<code>tools/paket/paket.exe install</code> will install or migrate packages after you have
made changes to the <code>paket.dependencies</code> file, <code>tools/paket/paket.exe outdated</code>
will show whether any packages are out of date and <code>tools/paket/paket.exe update</code>
will update all packages within the defined constraints. Have a look at the Paket
website for more commands and details.</p>
<h2><a name="Documentation" class="anchor" href="#Documentation">Documentation</a></h2>
<p>This website and documentation is automatically generated from of a set of
<a href="http://commonmark.org/">CommonMark</a> structured files in <code>doc/content/</code> using
<a href="http://tpetricek.github.io/FSharp.Formatting/">FSharp.Formatting</a>.
The final documentation can be built by calling <code>build.sh Docs</code>.</p>
<p>However, for editing and previewing the docs on your local machine it is more
convenient to run <code>build.sh DocsWatch</code> in a separate console instead, which
monitors the content files and incrementally regenerates the HTML output
automatically. DocsWatch will also use local/relative URIs instead of absolute
ones, so that the links and styles will work as expected locally. This can
also be enabled in a full one-time build with <code>build.sh DocsDev</code> instead
of just <code>Docs</code>.</p>
<h2><a name="Creating-a-Release" class="anchor" href="#Creating-a-Release">Creating a Release</a></h2>
<p>While only maintainers can make official releases published on NuGet and
referred to from the website, you can use the same tools to make your own
releases for your own purposes.</p>
<p>Versioning is controlled by the release notes. Before building a new version,
first add a new release header and change notes on top of the <code>RELEASENOTES.md</code>
document in the root directory. The fake builds pick this up and propagate it
to the assembly info files automatically.</p>
<p>The build can then be launched by calling:</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l">1: </span>
<span class="l">2: </span>
<span class="l">3: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">All</span> <span class="i">release</span> # <span class="i">full</span> <span class="i">release</span> <span class="i">build</span>
<span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">NuGet</span> <span class="i">release</span> # <span class="k">if</span> <span class="i">you</span> <span class="i">only</span> <span class="i">need</span> <span class="i">NuGet</span> <span class="i">packages</span>
<span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">Zip</span> <span class="i">release</span> # <span class="k">if</span> <span class="i">you</span> <span class="i">only</span> <span class="i">need</span> <span class="i">Zip</span> <span class="i">packages</span>
</code></pre></td>
</tr>
</table>
<p>The build script will print the current version as part of the the header banner,
which is also included in the release notes document in the build artifacts.
Example:</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l"> 1: </span>
<span class="l"> 2: </span>
<span class="l"> 3: </span>
<span class="l"> 4: </span>
<span class="l"> 5: </span>
<span class="l"> 6: </span>
<span class="l"> 7: </span>
<span class="l"> 8: </span>
<span class="l"> 9: </span>
<span class="l">10: </span>
<span class="l">11: </span>
<span class="l">12: </span>
<span class="l">13: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="c">// __ __ _ _ _ _ ______ _______</span>
<span class="c">// | \/ | | | | | | \ | | ____|__ __|</span>
<span class="c">// | \ / | __ _| |_| |__ | \| | |__ | |</span>
<span class="c">// | |\/| |/ _` | __| &#39;_ \ | . ` | __| | |</span>
<span class="c">// | | | | (_| | |_| | | |_| |\ | |____ | |</span>
<span class="c">// |_| |_|\__,_|\__|_| |_(_)_| \_|______| |_|</span>
<span class="c">//</span>
<span class="c">// Math.NET Numerics - https://numerics.mathdotnet.com</span>
<span class="c">// Copyright (c) Math.NET - Open Source MIT/X11 License</span>
<span class="c">//</span>
<span class="c">// Math.NET Numerics v3.5.0</span>
<span class="c">// Math.NET Numerics MKL Provider v1.7.0</span>
<span class="c">// Math.NET Numerics Data Extensions v3.1.0</span>
</code></pre></td>
</tr>
</table>
<p>The artifacts are then ready in the <code>out/packages</code> directory.</p>
<h2><a name="Extra-Packages" class="anchor" href="#Extra-Packages">Extra Packages</a></h2>
<p>In addition to the core package this repository also include extra packages
like the MKL provider and the data extensions. Most build targets are available for
these packages as well, with the following prefixes:</p>
<ul>
<li><code>Mkl</code> for the MKL provider (<code>MklWin</code> or <code>MklLinux</code> if platform dependent)</li>
<li><code>Data</code> for the Data Extensions</li>
</ul>
<p>Example: <code>build.sh MklWinNuget release</code></p>
<h2><a name="Official-Release-Process-Maintainers-only" class="anchor" href="#Official-Release-Process-Maintainers-only">Official Release Process (Maintainers only)</a></h2>
<ul>
<li><p>Update <code>RELEASENOTES.md</code> file with relevant changes, attributed by contributor (if external). Set date.</p></li>
<li><p>Update <code>CONTRIBUTORS.md</code> file (via <code>git shortlog -sn</code>)</p></li>
<li>
<p>Build Release:</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l">1: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">All</span> <span class="i">release</span>
</code></pre></td>
</tr>
</table>
</li>
<li>Commit and push release notes and (auto-updated) assembly info files with new "Release: v1.2.3" commit</li>
<li>
<p>Publish Release:</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l">1: </span>
<span class="l">2: </span>
<span class="l">3: </span>
<span class="l">4: </span>
<span class="l">5: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">PublishDocs</span>
<span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">PublishApi</span>
<span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">PublishTag</span>
<span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">PublishMirrors</span>
<span class="i">build</span><span class="o">.</span><span class="i">sh</span> <span class="i">PublishNuGet</span>
</code></pre></td>
</tr>
</table>
<p>In theory there is also a <code>Publish</code> target to do this in one step, unfortunately
publishing to the NuGet gallery is quite unreliable.</p>
</li>
<li><p>Consider a tweet via <a href="https://twitter.com/MathDotNet">@MathDotNet</a></p></li>
<li>
<p>Update Wikipedia release version and date for the
<a href="https://en.wikipedia.org/wiki/Math.NET_Numerics">Math.NET Numerics</a> and
<a href="https://en.wikipedia.org/wiki/Comparison_of_numerical_analysis_software">Comparison of numerical analysis software</a> articles.</p>
</li>
</ul>
</div>
<div class="span3">
<ul class="nav nav-list" id="menu">
<li class="nav-header">Math.NET Numerics</li>
<li><a href="https://numerics.mathdotnet.com/Packages.html">NuGet & Binaries</a></li>
<li><a href="https://numerics.mathdotnet.com/ReleaseNotes.html">Release Notes</a></li>
<li><a href="https://numerics.mathdotnet.com/License.html">MIT/X11 License</a></li>
<li><a href="https://numerics.mathdotnet.com/Compatibility.html">Platform Support</a></li>
<li><a href="https://numerics.mathdotnet.com/api/">Class Reference</a></li>
<li><a href="https://github.com/mathnet/mathnet-numerics/issues">Issues & Bugs</a></li>
<li><a href="https://numerics.mathdotnet.com/Users.html">Who is using Math.NET?</a></li>
<li class="nav-header">Contributing</li>
<li><a href="https://numerics.mathdotnet.com/Contributors.html">Contributors</a></li>
<li><a href="https://numerics.mathdotnet.com/Contributing.html">Contributing</a></li>
<li><a href="https://numerics.mathdotnet.com/Build.html">Build & Tools</a></li>
<li><a href="http://feedback.mathdotnet.com/forums/2060-math-net-numerics">Your Ideas</a></li>
<li class="nav-header">Getting Help</li>
<li><a href="https://discuss.mathdotnet.com/c/numerics">Discuss</a></li>
<li><a href="https://stackoverflow.com/questions/tagged/mathdotnet">Stack Overflow</a></li>
<li class="nav-header">Getting Started</li>
<li><a href="https://numerics.mathdotnet.com/">Getting started</a></li>
<li><a href="https://numerics.mathdotnet.com/Constants.html">Constants</a></li>
<li>Floating-Point Numbers</li>
<li>Arbitrary Precision Numbers</li>
<li>Complex Numbers</li>
<li><a href="https://numerics.mathdotnet.com/Matrix.html">Matrices and Vectors</a></li>
<li><a href="https://numerics.mathdotnet.com/Euclid.html">Euclid & Number Theory</a></li>
<li>Combinatorics</li>
<li class="nav-header">Evaluation</li>
<li><a href="https://numerics.mathdotnet.com/Functions.html">Special Functions</a></li>
<li>Differentiation</li>
<li><a href="https://numerics.mathdotnet.com/Integration.html">Integration</a></li>
<li class="nav-header">Statistics/Probability</li>
<li><a href="https://numerics.mathdotnet.com/DescriptiveStatistics.html">Descriptive Statistics</a></li>
<li><a href="https://numerics.mathdotnet.com/Probability.html">Probability Distributions</a></li>
<li class="nav-header">Generation</li>
<li><a href="https://numerics.mathdotnet.com/Generate.html">Generating Data</a></li>
<li><a href="https://numerics.mathdotnet.com/Random.html">Random Numbers</a></li>
<li class="nav-header">Transformation</li>
<li>Fourier Transform (FFT)</li>
<li>Filtering & DSP</li>
<li>Window Functions</li>
<li class="nav-header">Solving Equations</li>
<li><a href="https://numerics.mathdotnet.com/LinearEquations.html">Linear Equation Systems</a></li>
<li>Nonlinear Root Finding</li>
<li class="nav-header">Optimization</li>
<li>Linear Least Squares</li>
<li>Nonlinear Optimization</li>
<li><a href="https://numerics.mathdotnet.com/Distance.html">Distance Metrics</a></li>
<li class="nav-header">Curve Fitting</li>
<li><a href="https://numerics.mathdotnet.com/Regression.html">Regression</a></li>
<li>Interpolation</li>
<li>Fourier Approximation</li>
<li class="nav-header">Native Providers</li>
<li><a href="https://numerics.mathdotnet.com/MKL.html">Intel MKL</a></li>
<li class="nav-header">Working Together</li>
<li><a href="https://numerics.mathdotnet.com/CSV.html">Delimited Text Files (CSV)</a></li>
<li><a href="https://numerics.mathdotnet.com/MatrixMarket.html">NIST MatrixMarket</a></li>
<li><a href="https://numerics.mathdotnet.com/MatlabFiles.html">MATLAB</a></li>
<li><a href="https://numerics.mathdotnet.com/IFSharpNotebook.html">IF# Notebook</a></li>
<li>FsLab & Deedle</li>
<li>Microsoft Excel</li>
<li>numl.net machine learning</li>
<li>R-project</li>
</ul>
</div>
</div>
</div>
</body>
</html>