ILNumerics is a mathematical class library for Common Language Infrastructure (CLI) developers and a domain specific language (DSL) for the implementation of numerical algorithms on the .NET platform. While algebra systems with graphical user interfaces focus on prototyping of algorithms, implementation of such algorithms into distribution-ready applications is done using development environments and general purpose programming languages (GPL). ILNumerics integrates into Visual Studio and aims at supporting the creation of technical applications based on .NET.
| ILNumerics | |
|---|---|
| Developer | ILNumerics GmbH |
| Stable release | v7.4
/ December 10, 2025 |
| Written in | C#, Visual Basic |
| Operating system | .NET Framework / Mono, Windows, Linux, MacOS |
| Platform | IA-32, x86-64, AnyCPU |
| Type | Technical computing, Mathematical software |
| License | Proprietary |
| Website | ilnumerics |
History
editILNumerics started in 2006 as an open source project, originating from Technische Universität Berlin.[1] In 2007 ILNumerics won the BASTA! Innovation Awards 2007[2] as most innovative .NET project in Germany, Switzerland and Austria. After 6 years of open source development, the project added a closed source, proprietary license in 2011, aiming business and academic developers at the same time. The project quickly gained popularity (download numbers and engagement at stackoverflow.com,[3][4][5] download counts from website not available). The .NET framework was selected as a managed foundation, since earlier attempts on the Java platform had been abandoned due to technical limitations. Similarly, the .NET framework has not been designed with the focus on requirements of technical application development. ILNumerics added interfaces to popular codes (LAPACK, FFTW), complex numbers and generic mult-dimensional array classes. In 2010 graphical capabilities have been added. Efforts to increase the performance of the technology were introduced in 2011. At the same time, a company was founded to continue the development.
In 2024 the release of version 7.1 marked a significant step for auto-parallelization of numerical array codes written with the ILNumerics DSL. The language deploys a compiler, injecting autonomous intelligence into each array expression, transforming them into autonomously scheduled, highly optimized code.
The technological goal is to establish the .NET framework as the leading platform for technical computing, beating unmanaged alternative languages for numeric computing in terms of performance and developer convenience.
Accelerator Compiler
editAt runtime, the system identifies independent array operations across function and even module boundaries and executes them concurrently on the available parallel compute resources (CPU cores, GPU, …). To achieve this, the originally sequential program structure is first decomposed into individual "segments" (corresponding to individual or merged array operations) and is later reassembled for massively parallel execution. Each array operation is equipped with its own autonomous intelligence, allowing it to independently make important decisions without assistance from the programmer: it determines the optimal compute resource based on real-time cost evaluation and prepares optimized code for the operation. As soon as all dependencies are available, it immediately starts execution.
Syntax
editILNumerics implements base functionality frequently needed for application development in technical areas: N-dimensional arrays, complex numbers, linear algebra, FFT and plotting controls (2D and 3D). The array classes are fully compatible with the array features of Matlab and numpy, including internal storage order, subarray creation, expansion, and advanced indexing. Higher level functionality is provided by toolboxes for interpolation, optimization, statistics, HDF5 and machine learning. The ILNumerics DSL is embedded into .NET. Computational algorithms are formulated using any CLI language. However, only C# is officially recommended. Due to the strong type system of the .NET framework algorithms created with ILNumerics are strongly typed. This deviates from the syntax of alternatives, which are often weakly typed and therefore easier to adopt.
Graphics
editA scene graph is used in ILNumerics to realize graphical output. Interactive 2D and 3D plots are used in WPF and Windows Forms applications. Hardware accelerated drawing is available via OpenGL. A fully featured software renderer is provided for legacy hardware, based on GDI+, SkiaSharp and SVG.
IDE integration
editILNumerics is distributed as an extension to Visual Studio. It adds a tool window to the IDE for the graphical inspection of mathematical objects while stepping through user code.
Performance
editSince ILNumerics comes as a CLI assembly, it targets Common Language Infrastructure (CLI) applications. Just like Java - those frameworks are often criticized for not being suitable for numerical computations. Reasons are the memory management by a garbage collector, the intermediate language execution and deficient optimizations by the compilers involved. ILNumerics approaches these limitations by performing loop unrolling, removal of bound checks on array accesses and cache optimizations. Further speed-up is gained by the auto-management of the memory of large array objects. Linear algebra routines rely on processor specific optimized versions of LAPACK and BLAS.
ILNumerics arrays utilize the unmanaged heap for storing data. This way, the size of ILNumerics arrays is not limited by the CLR and interoperability with 3rd party libraries is improved.
While these optimizations are suitable to bring algorithms performance on par with unmanaged languages, ILNumerics auto-parallelization adds significant advantage on a higher level of program granularity. The ability to auto-distribute whole array expressions onto parallel computing resources at runtime and the specific approach of ILNumerics in identifying parallel potential beyond simple loop bodies gains unique execution efficiency – at the same time removing optimization burden from the programmer.
See also
editReferences
edit- ^ "Centre for Entrepreneurship: Steckbrief ILNumerics". Entrepreneurship.tu-berlin.de. Archived from the original on 2016-02-20. Retrieved 2016-01-28.
- ^ "BASTA! Innovation Award 2007". Archived from the original on 2006-02-27. Retrieved 2008-08-18.
- ^ ilnumerics. "NuGet Gallery | ILNumerics 4.8.0". Nuget.org. Retrieved 2016-01-28.
- ^ "Newest 'ilnumerics' Questions". Stack Overflow. Retrieved 2016-01-28.
- ^ "ILNumerics Ultimate VS extension". Visualstudiogallery.msdn.microsoft.com. Retrieved 2016-01-28.