Updated Algorithm Library for Java Released
The Numerical Algorithms Group (NAG) has just announced an update of more than 100 routines in the NAG Library for Java. This 24th release of what may be the largest collection of mathematical and statistical algorithms available to developers now contains more than 1,700 "fully documented and tested" routines for Java developers.
NAG is a 40-year-old organization basted in the U.K. and Chicago that develops numerical software and compilers that can be used by developers to incorporate mathematical or statistical functionality into their applications. The algorithms in the NAG libraries are used to solve problems in such areas as financial analysis, business analytics, science, engineering and research.
This is only the second release of a NAG Library focused on Java developers. The organization also produces libraries for the solution of mathematical and statistical problems for developers working in C/C++, Fortran, Python, MATLAB, C#, F#, and R, as well as multicore and Symmetric Multiprocessor (SMP) computers, Intel's Xeon Phi Coprocessors, and distributed memory systems and clusters of workstations and PCs, among others.
This release of the Java Library comes with a list of new functions and capabilities, including multi-start (global) optimization, non-negative least squares (local optimization), nearest correlation matrix, inhomogeneous time series, Gaussian mixture model, Confluent Hypergeometric Function (1F1), Brownian Bridge & random fields, best subsets, real sparse eigenproblems, matrix functions and two-stage spline approximation.
The NAG organization is populated mainly by post-doctorates in computer science, astrophysics, finance, and similarly mathematics-centric disciplines. It's a highly collaborative, not-for-profit group, which is a good thing for developers, says David Cassell, NAG's product marketing manager, because the routines in the NAG libraries are "tried and tested" by some specialists with high levels of expertise.
"It's all about stringent testing and lots of internal debates about whether these algorithms 'do what it says on the tin,'" Cassell told ADTmag. (In other words, work as advertised.) "A lot of stuff gets thrown out if we don't believe it's true maths."
"It's granite-solid, ongoing work by people who actually know what this stuff is all about," Cassell added.
The key capabilities of the NAG Library for Java include numerical facilities for things like optimization (local and global); linear, quadratic, integer and nonlinear programming and least squares problems; ordinary and partial differential equations and mesh generation; solution of dense, banded, and sparse linear equations and eigenvalue problems; solution of linear and nonlinear least squares problems; curve and surface fitting and interpolation; roots of nonlinear equations (including polynomials); and wavelet transforms. The statistical facilities in this release include random number generation, simple calculations on statistical data, correlation and regression analysis, multivariate methods, analysis of variance and contingency table analysis, time series analysis, and nonparametric statistics.
The NAG libraries are continuously evolving, updated approximately on a two-year cycle. The group itself has worked over the years with researchers in academia and a range of companies, including Intel, Microsoft, AMD to develop software and solutions for numerical and high performance computing (HPC). Developers pay an annual fee, which allows them to access the NAG libraries from within their applications.
"Because of the breadth of the library, we get used in all sorts of fields," Cassell said. "But because of the depth of the library in certain areas, we have become the software of choice for applications in the financial sector, meteorology and weather forecasting, and aerospace."