Join our MAILINGLIST:
RECENT BLOG ENTRIES:
With ILNumerics you can easily implement your algorithms in applications with custom GUIs using .NET. Learn more about:
For deeper insights visit the documentation section.
The combination of convenient syntax and high performance is provided by ILNumerics' generic Array Classes. ILNumerics features a large collection of computational functions that serve as the base of higher level algorithms.
ILNumerics is based on efficient generic array classes - capable of serving as scalar, vector, matrix or n-dimensional arrays, especially supporting real and complex elements in single and double precision and integer elements, where applicable. Arrays exist as dense arrays, logical arrays and cells.
The API has been designed with the most convenient syntax in mind. Language features are tightly oriented towards popular mathematical scripting languages. Efficient subarray creation, array modifications and overloaded operators allow for an intuitive syntax - without any performance sacrifice.
For numerical arrays ILNumerics provides a large collection of computational functions covering a wide range of numeric algebra. Included are trigonometric functions, all important matrix decompositions, equation solver, eigenvalues, efficient sorting and integral transformations. They serve as the fundamental base of higher level algorithms in ILNumerics.
All important trigonometric functions are included in the collection of built in functions: cos, sin, tan, the inverse trigonometric functions asin, acos, atan2 and its hyperbolic counterparts sinh, cosh, and tanh. A large collection of common array manipulation functions is provided, which includes abs, all, and, any, cart2pol, ceil, cell, conj, diff,empty, exp, eye, find, fix, fliplr, flipud, floor, ge, gt, horzcat, imag, ccomplex, ind2sub, isempty, isequal, isequalwithequalnans, isfinite, isinf, isnan, isneginf, isnull, isnullorempty, isposinf, le, load, log, log10, logspace, lt, max, maxall, mean, meshgrid, min, minall, mod, multiply, neq, ones, or, pol2cart, pow, prod, r, rand, randn, randperm, real, real2complex, real2fcomplex, repmat, reshape, round, set, sign, sort, sqrt, sub2ind, subtract, sum, sumall, trace, vec, vertcat, xor, and zeros.
Processor specific BLAS libraries highly speed up all matrix computations. ILNumerics relies on Intels® performance optimized Math Kernel Library (MKL) as reliable LAPACK implementation. Custom implementations can get incorporated. Out of the box, all standard matrix decompositions (SVD, QR, LU, PINV, CHOL, ...), linear equation solvers, generalized eigenvalues and all common miscellaneous matrix operations like determinants and rank retrieval are provided.
State of the art FFT routines enable the full spectrum of fourier transforms for single and double precision arrays: real and complex transforms, forward and backward transforms and transformations in one, two or n-dimensions. FFTs rely on the MKL internally. Prepared interfaces exist for FFTW and for AMDs ACML.
Based on the quick sort algorithm, sorting is possible for numerical arrays along arbitrary dimensions, with optional index retrieval. ILNumerics sorting easily beats the speed of the .NET implementation (Array.Sort) by factors.
While the .NET runtime does an excellent job cleaning up small objects, large numerical arrays cause a serious hit on the GC if created frequently. ILNumerics collects memory in a pool for subsequent requests. The memory footprint of the application decreases drastically.
ILNumerics mostly runs several times faster than other popular mathematical frameworks. The speed is comparable to native C libraries. This is achieved by saving time in GC, increased memory locality of the data, profound loop optimizations and parallelism.
A number of ILNumerics performance counters is exposed to the Windows Performance Monitor. They give detailed insight into the runtime behaviour, helping to localize possible areas of concern and to gather runtime statistics. The whole spectrum of sophisticated commercial profiling tools is available as well.
Graphics are already inherently built into ILNumerics. All output is based on a dynamic 3D scene graph implementation. It allows the creation of complex interactive visualisations and the enhancement and re-configuration of existing scenes. ILNumerics scenes can be hosted inside a Windows.Forms.Control to add interactivity or used for offscreen rendering without any visual controls. The export into vector and pixel graphics is supported.
Large scenes profit from a transparent memory management based on automatic buffer sharing and reuse. Buffer based rendering provides the fastest user experience on recent graphics cards supporting OpenGL 3.1. For older hardware a GDI+ based software renderer ensures compatibility.
ILNumerics comes with a number of scientific plots: 1D, 2D and 3D line and scatter plots, 3D surfaces and contour plots. The full spectrum of configurable helpers exist: markers, legends, colorbars, labels. The core of the plotting section is a plot cube implementation. It brings convenient labeling and hosting of arbitrary plots in 3 dimensions. Consistent logarithmic axis scaling is supported as well as clipping and tiling and the enhancement of plots with custom scene graph components.
In ILNumerics, several Toolboxes for Machine Learning and Statistical Functions are included.
A number of machine learning algorithms is provided. Every algorithm is optimized for both: memory consumption and execution speed. The range of algorithms spreads from supervised to unsupervised algorithms and each provides a convenient variable parameter list.
The following common functions for statistical operations are included: