NMath Mono Changelog

What's new in NMath Mono 5.3.0

Jun 13, 2013
  • Upgraded to Intel MKL 11.0 Update 3 with resulting performance increases
  • See http://software.intel.com/en-us/articles/intel-mkl-110-release-notes
  • Added GPU acceleration of linear algebra (dense) and 1D and 2D FFT. Requires
  • NMath Premium edition and CUDA-enabled NVIDIA graphics card. For more
  • information, see CenterSpace whitepaper "NMath Premium: GPU-Accelerated
  • Math Libraries for .NET", or the NMath User's Guide
  • The NMath kernel assembly and platform-specific native libraries are now
  • loaded at runtime from an /x86 or /x64 subdirectory of the specified native
  • location (as set, for example, by property NMathConfiguration.NativeLocation)
  • Deprecated configuration property NMathConfiguration.UseExternalThreading
  • The default NMath native assembly (nmath_native_[x86|x64].dll) is now
  • built with dynamically-linked Intel OMP threading library (libiomp)
  • Implemented IEnumerable for matrix classes, and fixed issues
  • with generic iterator for vector classes, such as implmenting Reset()
  • Added matrix and vector visualizers for Visual Studio 2012 debugging
  • with support complex types
  • Fixed a bug in the FloatSymmetricSignalReader related to using signal vectors longer than necessary
  • Added an in-place solve option to LU factorization classes
  • Added vectorized performance enhancement to NMathFunction.Abs()
  • Implemented ICloneable on DoubleFunctional, DoubleMultivariableFunctional
  • and DoubleParameterizedFunctional
  • Improved support for NMath configuration paths when deploying web
  • applications
  • Exposed filename for NMathConfiguration log file
  • Added a check for OMP threading library in PATH if external threading ispecified
  • Throw LicenseException on expired license, rather than Environment.Exit()

New in NMath Mono 5.2.0 (Jun 13, 2013)

  • Upgraded to Intel MKL 10.3 Update 11 with resulting performance increases.
  • Added class NMathConfiguration for controlling the loading of the NMath
  • license key, kernel assembly, and native library. License files are no
  • longer used. Logging can be enabled for debugging configuration issues.
  • See Chp 1 in the NMath User's Guide for more information.
  • Replaced all custom NMath delegate types in the API with Func/Action
  • equivalents, and deprecated the older signatures.
  • Added support for postive and negative strided signals in all FFT classes.
  • Fixed bug in DoubleSymmetricSignalReader.UnpackSymmetricHalfToVector(),
  • in which the last element was not read.
  • Fixed bug in ResizeAndClear() of vector classes.
  • Removed previously deprecated OneVariableFunctionFitter and
  • MultiVariableFunctionFitter classes. Use templatized
  • OneVariableFunctionFitter and MultiVariableFunctionFitter instead.
  • Made Slice.All and Range.All singletons for greater efficiency.
  • Exposed OptimalX property of quadratic programmming classes.
  • Added Set() method to all matrix and vector classes for setting all
  • elements to a given value.

New in NMath Mono 5.1.0 (Jun 13, 2013)

  • Simplified the NMath installer. Updated license keys will be issued upon
  • upgrade. A license file must now be deployed with your NMath applications.
  • Upgraded to Intel MKL 10.3 Update 6 with resulting performance increases.
  • Removed assembly NMathShared.dll.
  • Added assembly NMathChartMicrosoft.dll containing class NMathChart, which
  • provides static methods for plotting NMath types using the Microsoft Chart
  • Controls for .NET. (For more information, see whitepaper "NMath Visualization
  • Using the Microsoft Chart Controls.")
  • Added classes for solving first order initial value differential equations
  • by the Runge-Kutta method. Class FirstOrderInitialValueProblem encapsulates
  • a first order initial value differential equation, and class RungeKuttaSolver
  • solves them.
  • Added static method NMathFunctions.NaNSort() for sorting vectors containing
  • NaN's. NMathFunctions.Sort() no longer supports vectors containing NaN's.
  • NMathFunctions.Sort() now does a much faster in-place sort for compact vectors
  • and an out-of-place sort for strided vectors. Previously all sorting was done
  • out-of-place.
  • Added method NMathFunctions.Sign() that applies the signum function over real vectors.
  • Redesigned method NMathFunctions.Median(), which is now approximately 25X faster.
  • Added new Fill() method to vectorized random number generators for filling a
  • DoubleVector.
  • Added NMathFunctions.CumulativeProduct() methods.
  • Improved performance of NMathFunctions.OuterProduct().
  • Added exponential moving average filter weights to class MovingWindowFilter.
  • Added MatrixFunctions.Solve() methods for factoring and solving general sparse matrices.
  • Added class LevenbergMarquardtMinimizer and deprecated LevenburgMarquardtMinimizer.
  • Added static method NMathKernel.Init() for explicitly loading the kernel
  • assembly (for example, on application start-up).

New in NMath Mono 5.0.0 (Jun 13, 2013)

  • Upgraded to Intel MKL 10.3 Update 2 with resulting performance increases.
  • Added a new set of random number generator classes based on MKL vectorized random number generators.
  • Continuous distributions:
  • FloatRandomBetaDistribution, DoubleRandomBetaDistribution
  • FloatRandomCauchyDistribution, DoubleRandomCauchyDistribution
  • FloatRandomExponentialDistribution, DoubleRandomExponentialDistribution
  • FloatRandomGammaDistribution, DoubleRandomGammaDistribution
  • FloatRandomGaussianDistribution, DoubleRandomGaussianDistribution
  • FloatRandomGumbelDistribution, DoubleRandomGumbelDistribution
  • FloatRandomLaplaceDistribution, DoubleRandomLaplaceDistribution
  • FloatRandomLogNormalDistribution, DoubleRandomLogNormalDistribution
  • FloatRandomRayleighDistribution, DoubleRandomRayleighDistribution
  • FloatRandomUniformDistribution, DoubleRandomUniformDistribution
  • FloatRandomWeibullDistribution, DoubleRandomWeibullDistribution
  • Discrete distributions:
  • IntRandomBernoulliDistribution
  • IntRandomBinomialDistribution
  • IntRandomGeometricDistribution
  • IntRandomHypergeometricDistribution
  • IntRandomNegativeBionomialDistribution
  • IntRandomPoissonDistribution
  • IntRandomPoissonVaryingMeanDistribution
  • IntRandomUniformBitsDistribution
  • IntRandomUniformDistribution
  • Added class RandomNumberStream to encapsulate a stream of random numbers, and class RandomNumbers, an adapter for the RandomNumberStream class to give the same behavior as a scalar-type random number generator.
  • Added class IndependentRandomStreams for creating streams of independent
  • random numbers, classes LeapfrogStream and LeapfrogRandomStreams for
  • creating independent random streams using the leapfrog method, and classes
  • SkipAheadStream and SkipAheadRandomStreams for creating streams of
  • independent random numbers using the skip-ahead method.
  • Added classes QuasiRandomNumberGenerator for generating sequences of
  • quasirandom points, class NiederreiterQuasiRandomGenerator for generating
  • quasirandom numbers using the Niederreiter method, and class
  • SobolQuasiRandomGenerator for generating quasirandom numbers using the
  • Sobal method.
  • Added classes for solving quadratic programming (QP) and nonlinear
  • programming (NLP) problems. Classes DoubleFunctional and
  • DoubleFunctionalDelegate encapsulate objective functions. Classes
  • LinearConstraint and NonlinearConstraint derive from abstract base class
  • Constraint and encapsulate problem constraints. Class
  • QuadraticProgrammingProblem encapsulates a QP problem, and class
  • ActiveSetQPSolver solves QP problems using an active set algorithm. Class
  • NonlinearProgrammingProblem encapsulates an NLP problem. NMath solves NLP
  • problems iteratively, using a sequential quadratic programming (SQP)
  • algorithm. Class SequentialQuadraticProgrammingSolver is the abstract base
  • class for SQP solvers, and concrete implementation ActiveSetLineSearchSQP
  • solves NLP problems using an active set algorithm. Class ConstantSQPStepSize
  • computes a constant step size for a SQP solver, and class L1MeritStepSize
  • computes the step size based on sufficient decrease in the L1 merit function.
  • Class LagrangianFunction represents the Lagrangian function associated with a NLP, and class DampedBFGSHessianUpdater updates the value of the Lagrangian
  • Hessian based on iterate values using a quasi-Newton approximation.
  • Added new class KFoldsSubsets and deprecated the class KFoldSubsets to fix
  • error with cross-validation subsets.
  • Added two-argument NMathFunctions.Cross() method.
  • Added NMathFunctions methods for complex numbers MaxAbs1Value(),
  • MaxAbs1Index(), MinAbs1Value(), and MinAbs1Index() which compute the absolute value of a complex number as the sum of magnitudes of the real and imaginary
  • parts, and modified methods MaxAbsValue(), MaxAbsIndex(), MinAbsValue(), and MinAbsIndex() to use the Euclidean distance.
  • Fixed a memory leak in convolution code.

New in NMath Mono 4.1.0 (Jun 13, 2013)

  • Upgraded to Intel MKL 10.2 Update 5 with resulting performance increases.
  • Replaced CLI C++ kernel with a pure C# kernel that invokes MKL using
  • PInvoke() to improve .NET 4.0 experience.
  • Added class FirstOrderInitialValueProblem to encapsulate a first order initial value differential equation.
  • Added class RungeKuttaSolver for solving first order initial value differential equations by the Runge-Kutta method.
  • Added SavitzkyGolay class to generate filtering coefficients for data smoothing or for computing smooth Nth-derivatives in noisy data.
  • Added a SavitzkyGolayFilter class to both smooth data or compute the smoothed n-derivative of the the data. New boundary handling options for smooth transitions to the data boundaries.
  • Added INonlinearLeastSqMinimizer and IBoundedNonlinearLeastSqMinimizer
  • interfaces. Class TrustRegionMinimizer now implements
  • IBoundedNonlinearLeastSqMinimizer. Class LevenburgMarquardtMinimizer now
  • implements INonlinearLeastSqMinimizer.
  • Added classes BoundedOneVariableFunctionFitter and
  • BoundedMultiVariableFunctionFitter which derive from
  • OneVariableFunctionFitter and MultiVariableFunctionFitter, respectively, and accept linear bounds on the solution.
  • Class OneVariableFunctionFitter is now templatized on INonlinearLeastSqMinimizer, and BoundedOneVariableFunctionFitter is templatized on IBoundedNonlinearLeastSqMinimizer. Class MultiVariableFunctionFitter is now templatized on INonlinearLeastSqMinimizer, and class BoundedMultiVariableFunction is templatized on IBoundedNonlinearLeastSqMinimizer.
  • Added GSVDecomp and GSVDecompServer classes to compute the generalized singular value decomposition (GSVD) of a pair of general
  • rectangular matrices.
  • Added class BoxCoxTransformation which performs a Box-Cox power transformation to make non-normal data resemble normally-distributed data.
  • Added accessor for the Hessian in class VariableMetricMinimizer.
  • Added "force through origin" option to class PolynomialLeastSquares.
  • Fixed several minor issues with CLS compliance.

New in NMath Mono 4.0.0 (Jun 13, 2013)

  • Upgraded to Intel MKL 10.2 Update 1.
  • Repackaged CenterSpace.NMath.Core, CenterSpace.NMath.Matrix, and
  • CenterSpace.NMath.Analysis namespaces into a single product to simplify
  • product dependencies.
  • Reconfigured the NMath CLI C++ kernel to load the appropriate native kernel
  • 32-bit or 64-bit) at runtime. You can now build your NMath application
  • using the "Any CPU" build configuration, and deploy to either 32-bit or
  • 64-bit environments.
  • Added classes FloatForward1DFFT, DoubleForward1DFFT, FloatComplexForward1DFFT,
  • and DoubleComplexForward1DFFT to the CenterSpace.NMath.Core namespace
  • for calculating the 1D discrete fourier transform (DFT).
  • Added classes FloatComplexBackward1DFFT and DoubleComplexBackward1DFFT to the
  • CenterSpace.NMath.Core namespace for calculating the inverse 1D DFT.
  • Added classes FloatForward2DFFT, DoubleForward2DFFT, FloatComplexForward2DFFT,
  • and DoubleComplexForward2DFFT to the CenterSpace.NMath.Core namespace
  • for calculating the 2D discrete fourier transform (DFT).
  • Added classes FloatComplexBackward2DFFT and and DoubleComplexBackward2DFFT to
  • the CenterSpace.NMath.Core namespace for calculating the inverse 2D DFT.
  • Added classes FloatSymmetricBackward1DFFT and DoubleSymmetricBackward1DFFT to
  • the CenterSpace.NMath.Core namespace for exploiting the complex conjugate
  • symmetry of forward FFT results computed on real data when inverting this
  • data back to the real domain.
  • Added classes FloatSymmetricSignalReader, FloatSymmetric2DSignalReader,
  • DoubleSymmetricSignalReader, and DoubleSymmetric2DSignalReader to the
  • CenterSpace.NMath.Core namespace for unpacking symmetric complex conjugate
  • signals.
  • Added advanced, highly configurable classes FFTConfiguration, FloatGeneral1DFFT,
  • and DoubleGeneral1DFFT to the CenterSpace.NMath.Core namespace for computing
  • FFTs with strided signal data.
  • Added classes Float1DConvolution, Double1DConvolution, FloatComplex1DConvolution,
  • and DoubleComplex1DConvolution to the CenterSpace.NMath.Core namespace for
  • performing linear convolutions on real and complex 1D data.
  • Added classes Float1DCorrelation, Double1DCorrelation, FloatComplex1DCorrelation,
  • and DoubleComplex1DCorrelation to the CenterSpace.NMath.Core namespace for
  • performing linear correlation on real and complex 1D data.
  • Added FrobeniusNorm() methods to NMath general matrix classes for computing the
  • Frobenius norm.
  • Added class LevenburgMarquardtMinimizer to the CenterSpace.NMath.Analysis
  • namespace for solving nonlinear least squares problems using the
  • Levenberg-Marquardt method.

New in NMath Mono 3.0.0 (Jun 13, 2013)

  • Upgraded to Intel MKL 10.1 Update 1.
  • Added class DoubleCOWeightedLeastSq for solving weighted least squares (WLS)
  • problems
  • using a complete orthogonal (CO) decomposition technique.
  • Added class DoubleIterativelyReweightedLeastSq for solving iteratively
  • reweighted least squares (IRLS) problems.
  • Added classes DoubleLeastSqWeightingFunction, DoubleBisquareWeightingFunction,
  • and DoubleFairWeightingFunction for least squares weighting functions.
  • Added classes DoubleSparseVector, DoubleComplexSparseVector, and
  • SparseVectorData for storing sparse vectors.
  • Added classes DoubleCsrSparseMatrix, DoubleSymCsrSparseMatrix,
  • DoubleComplexCsrSparseMatrix, DoubleHermCsrSparseMatrix, SparseMatrixData,
  • ISparseMatrixStorage, and CompressedSparseRow for storing general sparse
  • matrices in compressed sparse row (CSR) format.
  • Added classes SparseMatrixFact, DoubleSparseFact, DoubleSparseSymFact,
  • DoubleSparseSymPDFact, DoubleComplexSparseFact, DoubleSparseHermFact, and
  • DoubleSparseHermPDFact for factoring general sparse matrices.
  • Added MatrixFunctions.Pseudoinverse() method using SVD.
  • Organized classes into solution folders inside Visual Studio.
  • Added VS 2008 solutions for all examples and source editions.
  • Added Add(System.Object) method to all types which implement IEnumerable.

New in NMath Mono 2.0.0 (Jun 13, 2013)

  • Upgraded to Intel MKL 10.1 Update 1
  • Added class TrustRegionMinimizer for solving both constrained and
  • unconstrained nonlinear least squares problems using the Trust Region method
  • a variant of the Levenberg-Marquardt method
  • Added class OneVariableFunctionFitter for fitting generalized one variable
  • functions to data
  • Added class MultiVariableFunctionFitter for fitting generalized multivariable
  • functions to data
  • Organized classes into solution folders inside Visual Studio
  • Added VS 2008 solutions for all examples and source editions
  • Added Add(System.Object) method to all types which implement IEnumerable