旧バージョンの新機能

v9.0リリースノート

Version 9.1.5 (2025/10)

  • Independent Component Analysis (ICA): New FastIca class that implements the FastICA algorithm for separating multivariate signals into statistically independent components.
  • New methods for computing the value and derivative of orthogonal polynomials.

Version 9.1.4 (2025/8)

  • New algorithms and other improvements for finding the zeros of a function:
    • Ridders’ method (RiddersSolver)
    • Regula Falsi variants with improved convergence (RegulaFalsiSolver): standard, Illinois, Pegasus and Anderson-Bjork methods.
    • Allocation-free implementation of many of these methods.
  • New probability distribution: Type XII Burr.

Version 9.1.3 (2025/5)

  • New methods for automatic bin selection when creating histograms.
  • New effect size measures (\eta^2) (eta squared) and (\omega^2) (omega squared)) for Analysis of Variance models.
  • Fixed an indexing issue with vectors that use Memory<T> to store their data.
  • Improved F# support.

Version 9.1.2 (2025/4)

  • New probability distributions: the Zipf distribution, also known as the zeta distribution, and the Zipfian distribution which is a truncated version with finite support.
  • New effect size measures (Cohen’s d and Hedges’ g) for one and two sample T tests.
  • New MultipleTesting class to apply various correction methods (Bonferroni, Holm, etc.) when running multiple tests.
  • Support for generalized harmonic numbers and related functions like PowerSum (Faulhaber’s function).
  • New methods for cumulative minimum and maximum of vectors.
  • New methods for normalizing vectors and rows and columns of matrices.
  • Improved the reliability of logistic regression.

Version 9.1.0 (2025/3)

  • New algorithms for global optimization: Particle Swarm Optimization, Differential Evolution, Covariance Matrix Adaptation - Evolution Strategy (CMA-ES), Simulated Annealing.
  • Improved the performance of the pure .NET Fourier transforms, especially for sizes that are not the product of small primes.
  • Added methods to compute an orthogonal/unitary basis for the image (column space, row space) and kernel (null space) of a matrix.
  • Improved the diagnostics and inference performance of the Linear Discriminant Analysis (LDA) class.
  • The minor version number was bumped to 1 to indicate minor changes in the inheritance hierarchy for optimizers and the LDA classes.

Version 9.0.7 (2025/2)

  • New QuadraticDiscriminantAnalysis (QDA) class to classify data using a quadratic decision boundary.
  • Fligner-Killeen test for equality of variances.
  • New probability distributions: Folded normal distribution and hyperbolic secant distribution.
  • New LinearAlgebraPool<T> to provide memory-efficient storage for short-lived vectors and matrices.
  • Performance improvements enabled by LinearAlgebraPool<T> in many algorithms.
  • Improved and expanded the documentation of probability distributions and statistical tests, including contingency tables.

Version 9.0.6 (2025/2)

  • Added the static Compare class to compare numbers and sequences within a specified tolerance.
  • Added new special functions: Scaled versions of Airy functions and some Bessel functions, difference between modified Bessel and Struve functions, exponential integral of arbitrary order, inverse of the Digamma function.
  • Performance improvements, including optimizing the handling of static arrays to minimize allocations and overhead.
  • Improved consistency in the names of some special functions, including Hankel functions and exponential integrals. The methods with old names have been marked obsolete and will eventually be removed.

Version 9.0.5 (2025/1)

  • New IntegrationRules class to create stand-alone integration rules for a variety of weight functions.
  • Considerably improved the performance of the adaptive numerical integrator.
  • Methods to compute the Discrete Cosine Transform and its inverse.
  • Optimized the calculation of the eigenvalues and eigenvectors of a symmetric tridiagonal matrix.
  • Improvements to the GumbelDistribution class to make a clearer distinction between the variants that model the smallest or the largest extreme value.
  • New abbreviated aliases (Pdf, Cdf, and InverseCdf) for some static methods of probability distributions.
  • Various minor bug fixes and performance improvements.

Version 9.0.4 (2024/11)

  • New ChiDistribution class to represent the chi distribution and compute probabilities and quantiles.
  • New HalleySolver class to solve equations using Halley’s method, a third-order root-finding algorithm.
  • New Span based API’s: polynomial interpolation; mean, standard deviation, skewness and kurtosis estimates.
  • New extension methods for sampling without replacement.
  • New left and right tail probabilities for Parameter objects.
  • Fixed a problem with scaling the rows of sparse matrices.
  • Fixed a problem when aligning vectors with different indexes with identical values.

Version 9.0.3 (2024/11)

  • Support for .NET 9.0 and C# 13 features, including Span-based params lists and collection expressions for vectors and matrices.
  • New accumulator and aggregator for the Sum of Absolute Differences (SAD) of two sequences.
  • Many new tensor operators, taking advantage of new .NET 9.0 functionality.
  • Performance optimizations in the tensor library for ternary operators.

Version 9.0.2 (2024/10)

  • New VandermondeMatrix<T> class to represent Vandermonde matrices and solve Vandermode systems of equations efficiently.
  • New FiniteDifferenceMethod class to represent finite difference methods for approximating derivatives of functions.
  • Improvements to the Derivative method to support higher-order derivatives, higher order methods, and more.
  • Fixed an issue where the PartialLeastSquares class would not compute the predicted values correctly under some conditions.
  • Fixed a regression in the Pricipal Component Analysis class.
  • Several performance improvements and minor bug fixes.

Version 9.0.1 (2024/9)

  • The performance of BigInteger has been improved across the board. The difference is particularly noticeable for small numbers. By extension, BigRational and BigFloat benefit as well.
  • The scaling and standardization of features for Pricipal Component Analysis has been enhanced. Centering of variables can be disabled, and a new scaling option has bee added that ensures that the maximum absolute value of a variable is 1.
  • Improvements in the calculation of the nearest correlation matrix. The method is more reliable and now has the option to specify a minimum value for the eigenvalues of the resulting matrix.

v9.0での新機能 (2024/8)

A new name

Extreme Optimization is now Numerics.NET, affirming our position as the leading numerical library for .NET.

Version 9 completes our migration: Both the NuGet packages and the namespaces have been changed to reflect this.

This will require some changes in your projects, but migration should be pretty straightforward:

  • Update the package references to Numerics.NET (see below).
  • Rename all Extreme.Mathematics namespace references to Numerics.NET
  • Rename all remaining Extreme namespace references to Numerics.NET

If you encounter any challenges, we’re always here to help.

NuGet packages

The packages are available on the NuGet Gallery.

All NuGet packages now start with the Numerics.NET prefix. We’ve also reorganized them in a more convenient way. The functionality is spread over several core packages, while a number of bundles offer a simple way to get everything you need.

The main bundle packages are:

  • Numerics.NET: bundles all managed packages. No native libraries are included.
  • Numerics.NET.win-x64: everything in Numerics.NET plus processor-optimized native libraries for Windows (x64).
  • Numerics.NET.linux-x64: everything in Numerics.NET plus processor-optimized native libraries for Linux (x64).

Of course you stil have the option of installing the individual packages if that is what you prefer.

Linear algebra

Tensors

A tensor is a generalization of vectors and matrices to arbitrary dimensions. With the growing popularity in areas such as machine learning and AI, the time has come to add support for tensors to Numerics.NET.

There is so much new here that we’ve written an entire post just on the topic of tensors in Numerics.NET: In Depth: Tensors.

Some of the features in Numerics.NET’s tensor type are not available in other tensor libraries include:

  • Setting the destination of an operation, like Tensor.Add(left, right, result). This avoids unnecessary allocations and can dramatically improve performance.
  • Memory layouts other than contiguous C-style (last index varies fastest). Much of the power and expressiveness of tensor libraries derives from the ability to rearrange the logical layout of the data while leaving the memory layout unchanged.
  • Scalar tensors. A scalar tensor is a tensor with zero dimensions. This is useful in many algorithms, especially when working with tensors of different ranks.
  • Aggregation along a specific dimension.
  • Conditional evaluation. This is useful when you want to apply an operation only to certain elements of a tensor.
  • Support for GPU and other platforms. Our tensor type is designed to be extensible so that, when provided with a suitable implementation, the same code can work on any platform, including GPU.

Memory<T> based vector and matrix storage

In previous versions, vectors and matrices always used managed arrays to store their. This incurred a penalty when working with some native code because it was necessary to copy the data between managed and unmanaged memory.

In version 9, vectors and matrices now support using Memory<T> to store the elements. This means you can create vectors and matrices directly from native memory. No more copying needed!

Spanified core API

The core implementations of linear algebra methods have been refitted to use Span<T> instead of arrays. This was a major undertaking that enables better performance and more flexibility in the future. For example, it is what allows us to use Memory<T> for element storage.

The one drawback is that the new API is not compatible with C++/CLI, which doesn’t support ref structs like Span<T>. So, there are no more mixed-mode native assemblies.

Schur and QZ decompositions

Two new matrix decompositions make their debut in version 9. The Schur decomposition writes a square matrix A as

where Z is orthogonal (unitary) and T, the Schur form of A, is upper triangular. The diagonal elements of T are also the eigenvalues of A. For real matrices with complex eigenvalues, the real Schur form of A is returned. This is an upper quasi-triangular matrix where 2x2 blocks on the diagonal correspond to pairs of complex conjugate eigenvalues.

Similar to eigensystems, there is also a generalization of the Schur decomposition to two matrices. This generalized Schur decomposition, also called the QZ decomposition, rewrites two square matrices A and B as

where again S and T are upper triangular, and Q and Z are orthogonal (unitary).

Mathematics

Generic arithmetic

Numerics.NET has had facilities for the generic implementation of numerical algorithms for over a decade. Our linear algebra library has supported arbitrary numerical types since 2008!

We continue to build on this foundation. The new tensor library is of course generic over the element type, but there’s more.

Our generic arithmetic implementation is built on a static class, Operations<T>, that provides all common operations on numbers. Thanks to JIT optimizations, performance is on par with hard-coded types.

The Operations<T> class now fully supports complex numbers and nullable numeric types. We’ve also brought this class up to speed with all the latest updates to the System.Math class and numeric types in recent .NET versions.

All our special number types (Quad, BigInteger, BigRational, BigFloat) implement the INumber<T> interface introduced in .NET 7.0. We’re not really happy with Microsoft’s work here. While the introduction of these interfaces is clearly a step forward in some ways, the way this was designed has some serious problems.

For .NET 7.0+ only, we’ve added generic implementations of some of the most common algorithms. The class names are the same but there is an extra type argument, which must implement INumber<T>. To find the classes, add .Generic to the namespace of the original (non-generic) class.

The following algorithms have a generic implementation:

  • Numerical integration.
  • Polynomial curve fitting, including using Chebyshev polynomials.
  • Solving equations in one variable.

Random number generators

We’ve added a new random number generator, PCG32, that is fast and compact. It is the new default random number generator.

Some new methods were recently added to .NET’s built-in random number generator. This includes GetItems, NextInt64 and NextSingle.

We’ve added implementations of these methods to our extended random number generator class so they are available to earlier .NET versions as well.

We’ve even added a few more! The GetItems method (introduced in .NET 8.0) returns a set of items chosen at random from a set of choices with replacement. This means that the same value can appear multiple times in the output. Many applications require items that are chosen without replacement. This means that every choice can appear at most once in the output. The GetItemsWithoutReplacement method does just that.

Special functions

So-called special functions are a nearly limitless group of funcions that appear in science. Some are better known and more widely used than others.

In version 9, we’ve expanded our support for special functions considerably. We’ve added:

  • Airy functions for complex argument.
  • Bessel functions for complex argument.
  • Kelvin functions.
  • Monic Hermite polynomials.
  • Jacobi polynomials.
  • Bernoulli numbers and Bernoulli polynomials.
  • Hurwitz zeta function and generalized harmonic numbers.
  • Jacobi Epsilon and Zeta functions.

Other improvements

  • New optimized methods for computing norms of band matrices.
  • An improved Quadratic Programming solver based on the algorithm of Goldfarb and Idnani.
  • Performance improvements, including in 2D integration, BigFloat functions.
  • Take advantage of enhancements and new functionality in .NET whenever possible.

Data Analysis

Aggregators

The API around aggregators (like Sum, Variance) has been overhauled to be more consistent and much more powerful.

Previously, there were two types of aggregators: normal aggregators always returned a value of a specific type. For example, computing the mean of an array always returned a double.

Aggregators now have an As<T> method that lets you change that. The input elements are converted to the result type. The converted elements are then used to compute the aggregate.

This is a breaking change. If you have code that depends on the type of the result of an aggregator being fixed, you will need to update it. For example, instead of Aggregators.Mean, you now use Aggregators.Mean.As<double>().

All aggregators support skipping missing values in the input. More generally, you can apply any condition to the input values and only those values that meet the condition will be included in the aggregation.

Accumulators

Internally, many of the aggregators use accumulators. These are simple structures that incrementally accumulate the result of the aggregation.

These accumulators have now been made public in the Numerics.NET.DataAnalysis.Accumulators namespace.

One accumulator can be the basis for several different aggregators. For example, the VarianceAccumulator<T> can return the count, the mean, as well as both the population and sample variance and standard deviation.

Statistics

New probability distributions

We’ve added a number of probability distributions. The following contiunous distributions are new in version 9:

  • Arcsine distribution
  • Hyperbolic distribution
  • Inverse chi square distribution
  • Inverse gamma distribution
  • Inverse Gaussian distribution
  • Inverse Weibull distribution
  • Johnson family of distributions
  • Maxwell distribution
  • Normal inverse Gaussian distribution

Also new is the log-series distribution, a discrete distribution with applications in biology and finance.

Improvements in statistical models

No major new features here.

  • When performing stepwise regression, you can now get detailed information about each step.
  • New diagnostics for linear regression: Predicted residual error sum of squares (PRESS) and Predicted R2.

v8.0での新機能 (2021/6)

.NET Core and .NET Standard support

  • Support for .NET Core 3.1.
  • Support for .NET Standard 2.0.
  • Support for .NET Framework 4.0 and 4.6.
  • Support for .NET 5.0.
  • All packages are available on the Nuget Gallery.

Linear algebra

Major enhancements

  • Support for indexing using range and index operators.
  • Upgraded native libraries to Intel® OneAPI version 2021 Update 2.
  • Upgraded managed linear algebra library to LAPACK 3.9.1.

Other improvements

  • Improve performance for managed complex linear algebra.
  • Code quality and performance improvements in the machine translation of LAPACK.
  • Deconstruction of matrix decompositions into their component matrices.

Mathematics

General improvements

  • Complex number arithmetic is optimized to be on par with non-generic code.
  • Easier creation of complex numbers thanks to an implicit conversion from a 2-tuple to a complex number.
  • Deconstructors for complex and rational numbers.
  • New integration algorithm: double-exponential quadrature.
  • Automatic differentiation supports the new System.Math methods.

Equation solvers

  • New one-dimensional equation solver based on TOMS algorithm 487.
  • One-dimensional equation solvers can now restrict their search to a user-defined interval.
  • Improved robustness of one-dimensional equation solvers.

Special functions

  • New: Struve functions, which are the solutions of the inhomogeneous Bessel differential equations.
  • Improved accuracy and performance of various gamma-related functions.

Statistics and data analysis

Hypothesis tests

  • New: Fisher's Exact Test for 2x2 and RxC contingency tables.
  • Breusch-Godfrey test for serial correlation in the residuals of a linear regression.

Probability distributions

  • New: DiscreteDistribution<T> that can sample from a finite set of arbitrary objects.
  • New continuous distributions: Johnson family of distributions, arcsine distribution, PERT distribution.
  • New properties of distributions: Entropy, Median, Mode, IsMultimodal, GetAllModes()
  • New LogProbability method for discrete distributions.
  • Gumbel (extreme value) distribution now allows modelling of the smallest or the largest extreme value.
  • New: Estimation of inverse Weibull and Gumbel distributions.

v7.0での新機能 (2018/12)

.NET Core and .NET Standard support

  • Support for .NET Core 1.1 and 2.1.
  • Support for .NET Standard 1.3 and 2.0.
  • Support for .NET Framework 3.5, 4.0, 4.72 and later.
  • All packages are available on the Nuget Gallery.

Linear algebra

Major enhancements

  • Broadcasting vectors in matrix operations.
  • Enable Conditional Numerical Reproducibility option for native libraries.
  • Upgraded native libraries to Intel® Math Kernel Library version 2019 Update 0.
  • Upgraded managed linear algebra library to LAPACK 3.7.0.
  • Improved range and accuracy of matrix exponential.
  • Vector Map methods that include index as delegate argument.

New matrix decompositions

  • Generalized Eigenvalue Decomposition.
  • Generalized Singular Value Decomposition (GSVD).
  • Sparse singular value decomposition.
  • RQ decomposition, QL decomposition, and LQ decomposition.
  • Access to 'thin' version of the orthogonal factor Q in a QR decomposition.
  • Compute factors of symmetric and Hermitian indefinite decomposition.

Performance improvements

  • Improve performance for level 2 managed sparse BLAS.
  • Improve performance for various vector operations.
  • The threshold for parallel execution of vector maps can now be configured.

Mathematics

General improvements

  • The generic Operations<T> class has been optimized to eliminate nearly all overhead for the most frequently used operations on the most common argument types.
  • ParallelOptions is now exposed for all algorithms to enable cancellation and other scenarios.
  • Combinatorial iterators to enumerate all combinations, permutations, and Cartesian products of sets of items.
  • New overloads for numerical integration methods that take Interval objects to specify bounds.
  • Inverse hyperbolic functions for decimal and quad precision numbers.

Optimization

  • The NonlinearProgram class has a new constructor that accepts variable names.
  • Symbolic constraints that are linear in the variables are now recognized as such.
  • The Nonlinear Program solver can now recover when it encounters an infeasible subproblem.
  • Up to 30% improvement in the performance of the Linear Program solver
  • Limited Memory BFGS Optimizer.
  • LeastSquaresOptimizer base class for nonlinear least squares algorithms.
  • Trust Region Reflexive algorithm for nonlinear least squares.
  • Trust Region Reflexive algorithm option in nonlinear curve fitting.
  • Improved documentation for nonlinear least squares algorithms.

Special functions

  • Jacobi elliptic functions.
  • Zeros of Bessel and Airy functions.
  • The performance and accuracy of Bessel functions of the first and second kind has been improved.
  • Polygamma function.
  • Modified Bessel functions of real order.
  • "Partial application" functions for incomplete and regularized Gamma and Beta functions.
  • Zernike polynomials.

Statistics and data analysis

Data access library

  • Data Access Library providing a unified API for reading and writing data frames, matrices, and vectors.
  • Reading and writing R's .rda/.rdata and .rds files.
  • JSON serialization.
  • Other supported formats include: delimited text (CSV, TSV...), fixed-width text, Matrix Market, Matlab®, stata®

Statistical models

  • Use R-style model formulas to specify statistical models.
  • Partial Least Squares (PLS) models.
  • Linear Discriminant Analysis.
  • Kernel Density Estimation.
  • Binomial Generalized Linear Model can now be used with count data.
  • Two-way ANOVA: support for Type I, Type II, and Type III sums of squares.
  • New ConditionalVariances property on GARCH models.
  • The performance of ARIMA model fitting has been improved.
  • Nicer Summarize for statistical models.

Hypothesis tests

  • Augmented Dickey-Fuller test.
  • Cramer-von Mises Goodness-of-fit test.
  • Tests for outliers: Grubbs' test, Generalized ESD test.

Data analysis

  • New aggregators: Range, Mode, CountUnique.
  • Improved support for custom aggregators based on accumulators.
  • R-style variations of quantiles.
  • LOESS and LOWESS smoothing.
  • More categorical encodings: Backward difference, Forward difference, Helmert, reverse Helmert, orthogonal polynomial encoding.
  • Non-central chi-square, non-central F, non-central beta, and non-central t distributions.
  • Anderson Darling distribution is now public.

 

v6.0での新機能 (2018/12)

Universal improvements

  • There now is one setup for both 32 and 64 bit operating systems.
  • The documentation has been fully updated to the latest API.
  • New and updated QuickStart samples illustrate the new API.

New math features

  • Complex numbers are now generic over the type of the real and imaginary parts.
  • Flexible genetic optimization framework.
  • Akima splines and cubic Hermite splines.
  • New special functions, including complex error function and orthogonal polynomials.
  • Smoothing signals: Savitsky-Golay and Moving Average smoothing.
  • Vector functions for complex single and double precision arguments.

New Data Frame Library features

  • Support for LINQ queries on data frames, vectors and matrices.
  • New groupings: fixed and expanding windows, partitions, groupings on value and quantiles, 2D pivot tables, and resampling.
  • Many new aggregators; improved efficiency of many aggregations.
  • New generic Descriptives class for collecting descriptive statistics of vectors.
  • Lookup nearest and join on nearest for ordered indexes.
  • New Recurrence type lets you specify date/time patterns for use in resampling time based data.

New vector and matrix library features

  • All vector and matrix classes are now generic, including sparse matrices and complex versions.
  • New static Vector and Matrix classes remove the need to specify the element type as a generic type parameter.
  • Specify mutability: including read-only snapshot, read-only view, and writable with copy-on-write semantics.
  • Many new methods for in-place and out-of-place calculations on vectors and matrices.
  • The native libraries have been upgraded to Intel MKL version 11.3 Update 2.
  • The native libraries now support Conditional Numerical Reproducibility.
  • The CUDA libraries for 64 bit have been upgraded to CUDA version 7.5.
  • New fully managed implementation of the linear algebra library for single-precision.

New statistics features

  • Verbose output when working in an interactive environment.
  • Full integration with the DataFrame library.
  • Categorical variables are expanded into indicator variables as needed.
  • Models can be persisted in a form suitable for deployment in predictive modeling applications.
  • Several new probability distributions have been added.

 

v5.1での新機能 (2014/11)

  • Data frame class supporting advanced data manipulation.
  • Support for GPU computing
  • Offload computations to the GPU.
  • Support for quadruple precision numbers with up to 34 digits, including our full vector and matrix library. Real and complex numbers are supported.
  • Smoothing cubic splines, monotonicity preserving splines.
  • GARCH models (Generalized AutoRegressive Conditional Heteroskedasticity).
  • Regularized linear regression models: Ridge regression, LASSO and elastic net.

 

v5.0での新機能 (2013/3)

  • Much improved support for F# development.
  • Akima and cubic Hermite splines.
  • Orthogonal polynomials: Chebyshev, Legendre, Laguerre...
  • Symmetric indefinite decomposition
  • Generic and complex sparse vectors and matrices
  • Factor analysis
  • Improved setup experience.

 

v4.2での新機能 (2011/11)

  • Automatic differentiation: symbolic computation of derivatives, gradients and Jacobians.
  • Extensible with built-in support for derivatives of methods in System.Math and most elementary and special functions in the library.
  • Backward differentiation with common sub-expression elimination generates optimal evaluation.
  • New SymbolicMath class that lets you optimize functions and solve equations specified as lambda expressions using automatic differentation.
  • Evaluation of (sequences of) classic orthogonal polynomials: Chebyshev (1st and 2nd kind), Hermite, Laguerre, Legendre and Gegenbauer.
  • Stepwise linear regression.
  • Regression fits of linearized curves: logarithmic, power, exponential, reciprocal...
  • 2x2 and RxC Contingency tables.

 

v4.1での新機能 (2011/7)

  • Optimization framework. Provides a generic model for defining and solving optimization problems.
  • Quadratic Programming. Solve quadratic optimization models with linear constraints.
  • Nonlinear Programming. Optimize nonlinear functions with linear or nonlinear constraints.
  • New Decimal functions extend all the functions in System.Math to the decimal type, including sin, cos, exp.
  • Improved elementary functions. Evaluate sine, cosine and tangent accurately for huge arguments.
  • Iterative sparse solvers Efficiently solve systems with many thousands of variables, optionally using preconditioners.
  • New probability distributions LogSeries and Maxwell.

 

v4.0での新機能 (2010/12)

  • .NET Framework Version 4.0 とVisual Studio 2010の並列処理サポート
  • 複数コア利用による計算スピードの向上 (.NET 4.0のみ)
  • 新しい疎線形プログラムソルバーは、100万変数の以上の問題を解くことが可能
  • ブランチとバウンドアルゴリズムを使った混合整数線形計画法
  • 新しい特殊関数: ハイパー幾何, Riemann zeta, 楕円積分, Fresnel関数, Dawsonの積分
  • FFTのウィンドウ関数の完全セット
  • 線形代数および任意精度のタイプでの6xまでのパフォーマンスの向上
  • F#での新しい50個のクィックスタートサンプル

 

page_top_icon