<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Fri, 18 May 2012 14:08:20 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>Blog &amp; News</title><subtitle>Blog &amp; News</subtitle><id>http://numerics.mathdotnet.com/blog/</id><link rel="alternate" type="application/xhtml+xml" href="http://numerics.mathdotnet.com/blog/"/><link rel="self" type="application/atom+xml" href="http://numerics.mathdotnet.com/blog/atom.xml"/><updated>2011-07-21T06:11:28Z</updated><generator uri="http://www.squarespace.com/" version="Squarespace Site Server v5.11.81 (http://www.squarespace.com/)">Squarespace</generator><entry><title>Creating a Matrix from a list of Vectors</title><category term="Change Log"/><category term="Numerics"/><id>http://numerics.mathdotnet.com/blog/2011/6/27/creating-a-matrix-from-a-list-of-vectors.html</id><link rel="alternate" type="text/html" href="http://numerics.mathdotnet.com/blog/2011/6/27/creating-a-matrix-from-a-list-of-vectors.html"/><author><name>Math.NET Team</name></author><published>2011-06-27T12:52:54Z</published><updated>2011-06-27T12:52:54Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Feature request 5691 was implemented in commit ca95f4f7.</p>
<p>We've added two new static methods in the Matrix&lt;T&gt; class, CreateFromRows and CreateFromColumns.</p>
<p>Example:</p>
<pre class="brush:csharp"> var row1 = new DenseVector(new [] { 1.0 });
 var row2 = new DenseVector(new [] { 1.0, 2.0, 3.0, 4.0 });
 var row3 = new DenseVector(new [] { 1.0, 2.0 });
 var rowVectors = new List&gt;{row1, row2, row3 };
 var matrix = Matrix.CreateFromRows(rowVectors);
</pre>
<p>This will create a 3x4 dense matrix. The number of columns is determined by the maximum length of the given vectors (zero is used to pad short rows). Note that the storage type of the first vector determines the storage type of the matrix (i.e. a sparse vector creates a sparse matrix). CreateFromColumns works similarly.</p>]]></content></entry><entry><title>$50 Bug and Feature Bounties</title><category term="Numerics"/><id>http://numerics.mathdotnet.com/blog/2011/5/12/50-bug-and-feature-bounties.html</id><link rel="alternate" type="text/html" href="http://numerics.mathdotnet.com/blog/2011/5/12/50-bug-and-feature-bounties.html"/><author><name>Math.NET Team</name></author><published>2011-05-12T12:36:23Z</published><updated>2011-05-12T12:36:23Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Help us improve Math.NET Numerics. We are offering $50 bounties for finding and fixing a bug, or implementing a feature request.&nbsp;To claim a bug bounty, provide a unit test that demonstrates a bug and&nbsp;provide a fix. For a feature bounty, complete a task or feature request in the&nbsp;<a href="http://mathnetnumerics.codeplex.com/workitem/list/basic">Math.NET Numerics' Issue Tracker</a>.</p>
<p>Additional terms:<br /><span>1) documentation or resource string&nbsp;typos don't count as bugs.</span><br />2) bug fixes must include a unit test that demostrates the bug.<br />3) all new features must include unit tests.<br />4) only tasks and feature requests that are added by or accepted by the Math.NET team are eligible.&nbsp;<br />5)&nbsp;bounties will be paid via <span>PayPal</span>.<br />6) a maximum of 30 boutnites will be paid.<br />7) the Math.NET Numerics team must accept the submitted fix or feature code. The team can reject any submission for any reason.</p>
<p>&nbsp;</p>]]></content></entry><entry><title>Final Beta &amp; Start of a Competition</title><category term="competition"/><id>http://numerics.mathdotnet.com/blog/2011/5/1/final-beta-start-of-a-competition.html</id><link rel="alternate" type="text/html" href="http://numerics.mathdotnet.com/blog/2011/5/1/final-beta-start-of-a-competition.html"/><author><name>Math.NET Team</name></author><published>2011-05-01T19:10:09Z</published><updated>2011-05-01T19:10:09Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Two years ago, the people who developed Math.Net Iridium and dnAnalytics, both open source numerical libraries for .NET, came together with the idea of creating one great numerical library for .NET. Based on our combined experiences, we designed a new library and called it Math.Net Numerics.<br /><br />During the past two years, with financial support from <a href="http://research.microsoft.com">Microsoft Research</a> and together with some great new developers on the team, we are on the final leg of delivering Math.Net Numerics 1.0: the last release of Math.Net Numerics beta.<br /><br />The .NET platform is a good place for scientific computing. Modulo a few essential things we'd like to see in the future, e.g. integration with SIMD instructions, the .NET runtime allows us to write fairly efficient numerical code. Nonetheless, there are places where improvements should be possible and we'd like to invite you to help us out.<br /><br />Starting from today, we're running a contest on writing the most efficient matrix multiplication routine in .NET. We will incorporate the best code into Math.Net Numerics before we release v1.0 of the library.&nbsp; As a thanks you, the winner will receive a 1500$ prize! (The runner up will win 500$.) The contest rules and benchmark harness are up at <a href="http://gemm.codeplex.com/">http://gemm.codeplex.com/</a>. We hope you enter our competition and share your insights on making the best .NET numerical code out there!</p>]]></content></entry><entry><title>Online computation of statistics</title><id>http://numerics.mathdotnet.com/blog/2011/4/12/online-computation-of-statistics.html</id><link rel="alternate" type="text/html" href="http://numerics.mathdotnet.com/blog/2011/4/12/online-computation-of-statistics.html"/><author><name>Math.NET Team</name></author><published>2011-04-12T21:23:32Z</published><updated>2011-04-12T21:23:32Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>I was recently reading a <a href="http://brenocon.com/blog/2008/11/calculating-running-variance-in-python-and-c/">blog post</a> by a fellow machine learner on how to efficiently compute a variance or standard deviation. Imagine we have 1GB worth of doubles for which we want to compute the standard deviation.</p>
<p>Since the standard deviation is defined as E[(X - E[X])<span style="vertical-align: super;">2</span>] we could compute the mean of our list of doubles, subtract it from each element in the list, and average the resulting list. The problem with this method is that not only is it numerically suboptimal to do so (recall, when the standard deviation is small, we are potentially subtracting the two very similar numbers X and E[X] = catastrophic cancellation), it is also inefficient as it requires two passes over our data.</p>
<p>In a little Math.Net Numerics program (<a href="https://gist.github.com/916469">get it here</a>), I use the Statistics class to compute the standard deviation for an array of 100,000,000 doubles (that's about 800MB of data). The code is extremely simple, except for some IO code which you can find in <a href="https://gist.github.com/916469">the full source</a>, you only need to write</p>
<pre class="brush:csharp">
var sdev = Statistics.StandardDeviation(ReadFile(sr));</pre>
<p>Math.Net Numerics is guaranteed to only loop over your data once, as well as be numerically stable. When streaming the data from file, no extra memory is used beyond a handful of doubles for bookkeeping and the computation finishes in 57 seconds (that's streaming from my laptop's hard drive at around 13MB/sec). When reading the whole array into memory, the computation finishes in about 5 seconds (but ofcourse will consume almost 800MB of RAM).</p>
<p>Check out the rest of MathNet.Numerics.Statistics for methods to compute other statistics efficiently. Enjoy! -Jurgen</p>]]></content></entry><entry><title>Our first bounty</title><category term="Bounty"/><category term="News"/><category term="Numerics"/><id>http://numerics.mathdotnet.com/blog/2011/2/26/our-first-bounty.html</id><link rel="alternate" type="text/html" href="http://numerics.mathdotnet.com/blog/2011/2/26/our-first-bounty.html"/><author><name>Math.NET Team</name></author><published>2011-02-26T12:44:33Z</published><updated>2011-02-26T12:44:33Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>As mentioned in the last post, we are having difficulty creating an ATLAS/LAPACK library for Windows. So we posted a $1000 bounty at FOSS Factory - <a href="http://www.fossfactory.org/project/p250">http://www.fossfactory.org/project/p250</a> .</p>
<p>We also created a general Math.NET Numerics project for future bounties or user posted bounties - <a href="http://www.fossfactory.org/project/p252">http://www.fossfactory.org/project/p252</a> . If you are wondering why the ATLAS bounty wasn't posted to this project, it is because the ATLAS script will usefully to people we'll beyond Math.NET Numerics.</p>]]></content></entry><entry><title>Where are we at ...</title><category term="Numerics"/><category term="Update"/><id>http://numerics.mathdotnet.com/blog/2011/1/30/where-are-we-at.html</id><link rel="alternate" type="text/html" href="http://numerics.mathdotnet.com/blog/2011/1/30/where-are-we-at.html"/><author><name>Marcus Cuda</name></author><published>2011-01-30T13:01:25Z</published><updated>2011-01-30T13:01:25Z</updated><content type="html" xml:lang="en-US"><![CDATA[<!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Cambria} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Cambria; min-height: 14.0px} li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Cambria} ul.ul1 {list-style-type: hyphen} -->
<p class="p1">We released Numerics Beta 1 about two months ago. Since then we&rsquo;ve:</p>
<ul class="ul1">
<li class="li1">optimized the sparse vector and matrix performance</li>
<li class="li1">switched unit testing frameworks from MbUnit to NUnit. With NUnit we can now have a single test suite the covers both .NET and Silverlight.</li>
<li class="li1">added an example project that provides examples for all major classes in the library.</li>
<li class="li1">added an IsSymmetric and Modulus methods to the matrix interface.</li>
<li class="li1">reworked the iterative solver interface.</li>
<li class="li1">added a few other tweaks and optimization.</li>
</ul>
<p class="p2">Two items are left for the Beta 2 release, adding the native interface and&nbsp;improved managed matrix multiplication.&nbsp; The initial native interface will just&nbsp;focus on linear algebra. We are half way done with the Intel Math Kernel&nbsp;Library (MKL) wrapper. We&rsquo;ll then move on to the AMD Core Math Library&nbsp;(ACML) and then ATLAS/LAPACK. All three libraries share a similar interface, so&nbsp;once the MKL wrapper is compete the other two will be simple to add.&nbsp;</p>
<p class="p2">We have an outstanding issue with the ATLAS/LAPACK library. We are using&nbsp;Cygwin to build ATLAS. The threading library depends on the Cygwin runtime &ndash;&nbsp;which is released under the GPL. Users who use Numerics with a threaded&nbsp;version of ATLAS will be bound by the terms of the GPL even though Math.NET&nbsp;Numerics is released under the X11/MIT license. We are looking for ways to not&nbsp;include the Cygwin runtime library (other than only using a serial build of&nbsp;ATLAS). One way we are exploring is to use MinGW to build ATLAS. But so far&nbsp;we haven&rsquo;t been successful. If anybody wants to give us a hand on finding a&nbsp;way around using the Cygwin runtime, let us know.</p>]]></content></entry><entry><title>Math.Net Website Overhaul</title><id>http://numerics.mathdotnet.com/blog/2010/5/19/mathnet-website-overhaul.html</id><link rel="alternate" type="text/html" href="http://numerics.mathdotnet.com/blog/2010/5/19/mathnet-website-overhaul.html"/><author><name>Math.NET Team</name></author><published>2010-05-19T21:29:22Z</published><updated>2010-05-19T21:29:22Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>As we are ramping up to a version 1.0 release of Math.Net we are giving the website an overhaul. With more emphasis on documentation and samples we hope to get people started with Math.Net even faster!</p>]]></content></entry></feed>
