Initialization code moved to new method, InitializeDefaultLinearAlgebraProvider(), which is called from the LinearAlgebraProvider getter only if the current _linearAlgebraProvider is null. This prevents trying to initialize multiple providers when calling any of the 'UseXX' methods.
Changed MKLWrapper and OpenBLASWrapper projects to use shared blas.c and lapack.cpp files. Each project has individual blas.h and lapack.h header files.
Control.TryUseNativeMKL() etc as an alternative way to use a specific
provider if it is available, but you're not interested in why if not.
Control.TryUseNative() tries to use any known native provider in an
undefined (but reasonable) order.
Changed the default behavior to try to load any known native provider
available automatically instead of falling back to managed straight away.
Added basic inline-xml docs
Added a new unit test project which is just a copy of the UnitTests-MKL project but with different compilation symbols (NATIVEMKL vs NATIVEOPENBLAS) to control which native provider is loaded. LinearAlgebraProviderTests should probably be in its own project.
Setting the variable MathNetNumericsLAProvider=MKL
will now make Control default to the MKL provider.
If non is set or setting it fails, it will fall back
to the managed provider as before.
Instead of a specific Silverlight version, we now provide a separate
Portable Library assebly that supports .Net 4.0.1 and higher,
Silverlight 5 ad well as .Net for Metro style apps (WinRT).
New NuGet Package MathNet.Numerics.Portable with the portable library.
Since MathNet.Numerics.Portable now supports silverlight, the normal
package MathNet.Numerics no longer supports it (.Net 4 only).
Reworked the common parallel execution infrastructure for more reasonable
abstractions and better compatibility with portable libraries. Portable
libraries do support parts of the TPL, but neither the Parallel class nor
straight threading.