FSharp.MathToolshttp://fsmathtools.codeplex.com/project/feeds/rssThis project aims to augment the Microsoft F# distribution with code that is of use to the mathematical (or scientific) computing community.Source code checked in, #69709http://fsmathtools.codeplex.com/SourceControl/changeset/changes/69709Upgrade: New Version of LabDefaultTemplate.xaml. To upgrade your build definitions, please visit the following link: http://go.microsoft.com/fwlink/?LinkId=254563Project Collection Service AccountsMon, 01 Oct 2012 22:10:56 GMTSource code checked in, #69709 20121001101056PSource code checked in, #69708http://fsmathtools.codeplex.com/SourceControl/changeset/changes/69708Checked in by server upgradeProject Collection Service AccountsMon, 01 Oct 2012 22:06:45 GMTSource code checked in, #69708 20121001100645PSource code checked in, #52373http://fsmathtools.codeplex.com/SourceControl/changeset/changes/52373Checked in by server upgrade_TFSSERVICEWed, 28 Jul 2010 17:08:20 GMTSource code checked in, #52373 20100728050820PUpdated Wiki: Homehttp://fsmathtools.codeplex.com/Wiki/View.aspx?title=Home&version=6<div class="wikidoc">
<h1>
FSharp.MathTools: Change of Plans
</h1>In the interest of having one great open source library for the .NET platform we have refocussed our efforts and are now contributing to <a href="http://dnanalytics.codeplex.com/" class="externalLink">dnAnalytics<span class="externalLinkIcon"></span></a>. <a href="http://dnanalytics.codeplex.com/" class="externalLink">dnAnalytics<span class="externalLinkIcon"></span></a> now includes all the functionality that was in FSharp.MathTools and <i>much more</i>. Although <a href="http://dnanalytics.codeplex.com/" class="externalLink">dnAnalytics<span class="externalLinkIcon"></span></a> is written as a C# library with the choice of including fast native code, we have added an F# front end to accomodate the functional programming community. The code for FSharp.MathTools will still be available from this site.<br /> <br />Cheers, Jurgen<br /> <br /> <br /><h2>
Old Information
</h2> <br /><b>Project Description</b><br />This community project is an effort to augment the F# libraries with methods for mathematical computing. We have different bits and pieces of code in different areas which we add as soon as they are tested and have a usable interface.<br /> <br />Our philosophy is to provide an interface for mathematical computing to F#. As for the backend: we plan to implement as much functionality as we can ourselves, but resort to quality libraries that are freely available for specialized functionality. E.g. currently, our Fourier transform library binds to the FFTW library which is a very high quality, high performance Fourier transform implementation which we cannot hope to do a better job on. If you have any suggestions for useful libraries which F# should be able to use, let us know.<br /> <br /><b>Overview</b><br />The code is organized into the following modules:<br /><ol>
<li><i>FSharp.MathTools.Core</i>: currently the major part of this module implements special functions such as gamma, beta, erf, ... Also under this module there will be various other utility function such as a Histogram, etc.</li><li><i>FSharp.MathTools.Stat</i>: implements all functionality related to probability and statistics. The main content of this module is a series of classes that implement various operations (evaluate pdf/cdf, compute means and variances, sample) for standard probability distributions such as the uniform, Bernoulli, normal, exponential, gamma, beta and Dirichlet distributions.</li><li> <i>FSharp.MathTools.Transforms</i>: currently, this module implements experimental bindings to the FFTW fourier transform library. More information and examples on this binding are <a href="http://fsmathtools.codeplex.com/Wiki/View.aspx?title=fftw&referringTitle=Home">here</a>.</li><li> <i>FSharp.MathTools.Optimization</i>: implements algorithms for unconstrained numerical optimization. Currently, there are F# implementations of line search, gradient descent and conjugate gradient algorithms. However, as we explained above, we are evaluating different free libraries for having fast access to a wider range of optimization algorithms, possibly including constrained optimization.</li><li> <i>FSharp.MathTools.IO</i>: augments the F# linear algebra types with functionality to read and write matrices in text of matlab formats.</li><li> <i>FSharp.MathTools.Compatibility.Matlab</i>: essentially some conveniently named shortcuts for common Matlab functions.</li><li><i>FSharp.MathTools.Notation</i>: some convenient names for F# library modules and classes.</li>
</ol> <br /> <br /><b>Roadmap</b><br />Currently, the library is developed on an as-need basis by its developers. Likely extensions for the future are<br /><ul>
<li>more special functions,</li><li>bindings and extensions to the dnAnalytics linear algebra library,</li><li>extended support for numerical optimization,</li><li>performance optimizations: YourKit has kindly agreed to support our open source projects with its full-featured .NET Profiler. This is a great donation to our project and we are excited to use their profiler to improve our library.</li>
</ul>
</div>jvangaelWed, 08 Apr 2009 08:59:03 GMTUpdated Wiki: Home 20090408085903AUPDATED WIKI: Homehttp://www.codeplex.com/fsmathtools/Wiki/View.aspx?title=Home&version=5<div class="wikidoc">
<b>Project Description</b><br />This community project is an effort to augment the F# libraries with methods for mathematical computing. We have different bits and pieces of code in different areas which we add as soon as they are tested and have a usable interface.<br /> <br />Our philosophy is to provide an interface for mathematical computing to F#. As for the backend: we plan to implement as much functionality as we can ourselves, but resort to quality libraries that are freely available for specialized functionality. E.g. currently, our Fourier transform library binds to the FFTW library which is a very high quality, high performance Fourier transform implementation which we cannot hope to do a better job on. If you have any suggestions for useful libraries which F# should be able to use, let us know.<br /> <br /><b>Overview</b><br />The code is organized into the following modules:<br /><ol>
<li><i>FSharp.MathTools.Core</i>: currently the major part of this module implements special functions such as gamma, beta, erf, ... Also under this module there will be various other utility function such as a Histogram, etc.</li><li><i>FSharp.MathTools.Stat</i>: implements all functionality related to probability and statistics. The main content of this module is a series of classes that implement various operations (evaluate pdf/cdf, compute means and variances, sample) for standard probability distributions such as the uniform, Bernoulli, normal, exponential, gamma, beta and Dirichlet distributions.</li><li> <i>FSharp.MathTools.Transforms</i>: currently, this module implements experimental bindings to the FFTW fourier transform library. More information and examples on this binding are <a href="http://www.codeplex.com/fsmathtools/Wiki/View.aspx?title=fftw&referringTitle=Home">here</a>.</li><li> <i>FSharp.MathTools.Optimization</i>: implements algorithms for unconstrained numerical optimization. Currently, there are F# implementations of line search, gradient descent and conjugate gradient algorithms. However, as we explained above, we are evaluating different free libraries for having fast access to a wider range of optimization algorithms, possibly including constrained optimization.</li><li> <i>FSharp.MathTools.IO</i>: augments the F# linear algebra types with functionality to read and write matrices in text of matlab formats.</li><li> <i>FSharp.MathTools.Compatibility.Matlab</i>: essentially some conveniently named shortcuts for common Matlab functions.</li><li><i>FSharp.MathTools.Notation</i>: some convenient names for F# library modules and classes.</li>
</ol> <br /> <br /><b>Roadmap</b><br />Currently, the library is developed on an as-need basis by its developers. Likely extensions for the future are<br /><ul>
<li>more special functions,</li><li>bindings and extensions to the dnAnalytics linear algebra library,</li><li>extended support for numerical optimization,</li><li>performance optimizations: YourKit has kindly agreed to support our open source projects with its full-featured .NET Profiler. This is a great donation to our project and we are excited to use their profiler to improve our library. Keep posted for more information about the results. In the mean time, we encourage you to check out their products (see below).</li>
</ul> <br /> <br /> <br />YourKit, LLC is creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: <a href="http://www.yourkit.com/.net/profiler/index.jsp" class="externalLink">YourKit .NET Profiler<span class="externalLinkIcon"></span></a> and <a href="http://www.yourkit.com/java/profiler/index.jsp" class="externalLink">YourKit Java Profiler<span class="externalLinkIcon"></span></a><br />
</div>jvangaelWed, 13 Feb 2008 13:19:31 GMTUPDATED WIKI: Home 20080213011931PUPDATED WIKI: Homehttp://www.codeplex.com/fsmathtools/Wiki/View.aspx?title=Home&version=4<div class="wikidoc">
<b>Project Description</b><br />This community project is an effort to augment the F# libraries with methods for mathematical computing. We have different bits and pieces of code in different areas which we add as soon as they are tested and have a usable interface.<br /> <br />Our philosophy is to provide an interface for mathematical computing to F#. As for the backend: we plan to implement as much functionality as we can ourselves, but resort to quality libraries that are freely available for specialized functionality. E.g. currently, our Fourier transform library binds to the FFTW library which is a very high quality, high performance Fourier transform implementation which we cannot hope to do a better job on. If you have any suggestions for useful libraries which F# should be able to use, let us know.<br /> <br /><b>Overview</b><br />The code is organized into the following modules:<br /><ol>
<li><i>FSharp.MathTools.Core</i>: currently the major part of this module implements special functions such as gamma, beta, erf, ... Also under this module there will be various other utility function such as a Histogram, etc.</li><li><i>FSharp.MathTools.Stat</i>: implements all functionality related to probability and statistics. The main content of this module is a series of classes that implement various operations (evaluate pdf/cdf, compute means and variances, sample) for standard probability distributions such as the uniform, Bernoulli, normal, exponential, gamma, beta and Dirichlet distributions.</li><li> <i>FSharp.MathTools.Transforms</i>: currently, this module implements experimental bindings to the FFTW fourier transform library. More information and examples on this binding are <a href="http://www.codeplex.com/fsmathtools/Wiki/View.aspx?title=fftw&referringTitle=Home">here</a>.</li><li> <i>FSharp.MathTools.Optimization</i>: implements algorithms for unconstrained numerical optimization. Currently, there are F# implementations of line search, gradient descent and conjugate gradient algorithms. However, as we explained above, we are evaluating different free libraries for having fast access to a wider range of optimization algorithms, possibly including constrained optimization.</li><li> <i>FSharp.MathTools.IO</i>: augments the F# linear algebra types with functionality to read and write matrices in text of matlab formats.</li><li> <i>FSharp.MathTools.Compatibility.Matlab</i>: essentially some conveniently named shortcuts for common Matlab functions.</li><li><i>FSharp.MathTools.Notation</i>: some convenient names for F# library modules and classes.</li>
</ol> <br /> <br /><b>Roadmap</b><br />Currently, the library is developed on an as-need basis by its developers. Likely extensions for the future are<br /><ul>
<li>more special functions,</li><li>bindings and extensions to the dnAnalytics linear algebra library,</li><li>extended support for numerical optimization,</li><li>performance optimizations: YourKit has kindly agreed to support our open source projects with its full-featured .NET Profiler. This is a great donation to our project and we are excited to use their profiler to improve our library. Keep posted for more information about the results. In the mean time, we encourage you to check out their products (see below).</li>
</ul> <br /> <br /> <br />YourKit, LLC is creator of innovative and intelligent tools for profiling<br />Java and .NET applications. Take a look at YourKit's leading software products:<br /><a href="http://www.yourkit.com/.net/profiler/index.jsp">YourKit .NET Profiler</a> and<br /><a href="http://www.yourkit.com/java/profiler/index.jsp">YourKit Java Profiler</a>. <br />
</div>jvangaelTue, 12 Feb 2008 20:20:27 GMTUPDATED WIKI: Home 20080212082027PSource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspx- Some fixes and simplifications. - Added Multinomial sampling.jvangaelThu, 24 Jan 2008 16:43:29 GMTSource code checked in 20080124044329PSource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspx- Added random number generators for the Gamma, Beta and Dirichlet distributions. - BUGFIX: the normal random number generator.jvangaelSun, 16 Dec 2007 18:31:56 GMTSource code checked in 20071216063156PProject License Changedhttp://www.codeplex.com/fsmathtools/Project/License.aspx?LicenseHistoryId=7023Microsoft Public License (Ms-PL) This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. 1. Definitions The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. A "contribution" is the original software, or any additions or changes to the software. A "contributor" is any person that distributes its contribution under this license. "Licensed patents" are a contributor's patent claims that read directly on its contribution. 2. Grant of Rights (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. 3. Conditions and Limitations (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.Fri, 30 Nov 2007 19:12:48 GMTProject License Changed 20071130071248PSource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspxBUGFIX - normpdfjvangaelTue, 13 Nov 2007 21:25:05 GMTSource code checked in 20071113092505PUPDATED WIKI: fftwhttp://www.codeplex.com/fsmathtools/Wiki/View.aspx?title=fftw&version=2<div class="wikidoc">
<h1>
Experimental Fast Fourier Transform
</h1> <br />FSharp.MathTools now includes experimental bindings to the <a href="http://www.fftw.org/" class="externalLink">FFTW<span class="externalLinkIcon"></span></a> fast Fourier transform library. In order to use the bindings with fsmathtools.dll, download the fftw dll's from <a href="http://www.fftw.org/download.html" class="externalLink">here<span class="externalLinkIcon"></span></a>. Put the dll's in your application's directory and you should be set to compute fast fourier transforms! We are currently only experimenting with the library and no other methods than the fourier transform and its inverse are bound. Stay tuned for a more exhaustive interface.<br /> <br />The following sample shows how easy it is to use the FFTW library:<br /><pre>
#light
#r "fsmathtools.dll"
let f = FFT [|1.0;2.0;3.0;4.0|]
let dif = InverseFFT f
</pre>
</div>jvangaelSun, 04 Nov 2007 20:48:07 GMTUPDATED WIKI: fftw 20071104084807PSource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspx- Changed the basic random number generator to allow a seed based on system time. - Experimental bindings to FFTW library. - Rewrote the distribution functions so they now all work as static functions. - Added exponential distribution. - Added a histogram function.jvangaelMon, 29 Oct 2007 07:13:54 GMTSource code checked in 20071029071354AUPDATED WIKI: fftwhttp://www.codeplex.com/fsmathtools/Wiki/View.aspx?title=fftw&version=1<div class="wikidoc">
<h1>
Experimental Fast Fourier Transform
</h1> <br />FSharp.MathTools now includes experimental bindings to the <a href="http://www.fftw.org/" class="externalLink">FFTW<span class="externalLinkIcon"></span></a> fast Fourier transform libraray. In order to use the bindings. In order to use fsmathtools.dll and download the fftw dll's from <a href="http://www.fftw.org/download.html" class="externalLink">here<span class="externalLinkIcon"></span></a>. Put them into the same directory and you should be set to start computing fast fourier transforms. We are currently only experimenting with the library and no other methods than the fourier transform and its inverse are bound. Stay tuned for a more exhaustive interface.<br /> <br />The following sample shows how easy it is to use the FFTW library:<br /><pre>
#light
#r "fsmathtools.dll"
let f = FFT [|1.0;2.0;3.0;4.0|]
let dif = InverseFFT f
</pre>
</div>jvangaelMon, 29 Oct 2007 07:11:12 GMTUPDATED WIKI: fftw 20071029071112AUPDATED WIKI: Homehttp://www.codeplex.com/fsmathtools/Wiki/View.aspx?title=Home&version=3<div class="wikidoc">
<b>Project Description</b><br />This project aims to augment the Microsoft F# distribution with code that is of use to the mathematical (or scientific) computing community.
<br /> <br /> <br /><b>Overview and Roadmap</b><br /> <br />This community project is an effort to augment the F# libraries with methods for mathematical computing. We have different bits and pieces of code in different areas which we will add as soon as they are tested and have a usable interface. The areas we are focussing on right now are:<br />- Special functions such as gamma, beta, erf, ...,<br />- PDF/CDF evaluations for standard distributions,<br />- Sampling from standard distributions,<br />- Numerical optimization routines (Gradient Descent, Newton, Quasi-Newton, Conjugate Gradient, ...),<br />- IO for matrix and vector formats,<br />- <a href="http://www.codeplex.com/fsmathtools/Wiki/View.aspx?title=fftw&referringTitle=Home">Fourier Transforms</a>: experimental bindings to FFTW libraray.<br /> <br />If you have any expertise in areas such as interpolation, PDE's, ... and would like to contribute, get in touch with Jurgen.<br />
</div>jvangaelMon, 29 Oct 2007 07:03:27 GMTUPDATED WIKI: Home 20071029070327ASource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspxadded Matlab's cumsum.jvangaelThu, 18 Oct 2007 08:32:56 GMTSource code checked in 20071018083256ASource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspx- Matlab compatibility randperm using Knuth shuffle.jvangaelSun, 14 Oct 2007 18:58:02 GMTSource code checked in 20071014065802PSource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspx- Added matlab's: normrand(). - Added line search for finding point that satisfies strong Wolfe conditions. - Added gradient descent optimization procedure. - Added conjugate gradient optimization procedure. - Added some initial univariate distribution classes. - Added more regression tests.jvangaelSat, 13 Oct 2007 14:36:24 GMTSource code checked in 20071013023624PSource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspxAdded Matlab compatibility functions log2, log10, rand and randn. Started implementing the optimization library: for now the Point class and BackTrackLineSearch. (+ simple regression test) jvangaelSat, 06 Oct 2007 19:12:33 GMTSource code checked in 20071006071233PCREATED ISSUE: Erf, Erfc have poor precisionhttp://www.codeplex.com/fsmathtools/WorkItem/View.aspx?WorkItemId=7460The current implementation of these algorithms only has a precision of 1e-5 and 1e-4 respectively. We should look at more accurate implementations.<br /><br />Info:<br />- http://mathworld.wolfram.com/Erf.html<br />jvangaelThu, 04 Oct 2007 09:16:37 GMTCREATED ISSUE: Erf, Erfc have poor precision 20071004091637ASource code checked inhttp://www.codeplex.com/fsmathtools/SourceControl/ListDownloadableCommits.aspxA preliminary version of the error function (Erf) and the complementary error function Erfc. This implementation has limited precision.jvangaelThu, 04 Oct 2007 09:11:02 GMTSource code checked in 20071004091102A