ILNumerics.ONAL 0.9.4

Prefix Reserved
dotnet add package ILNumerics.ONAL --version 0.9.4
                    
NuGet\Install-Package ILNumerics.ONAL -Version 0.9.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ILNumerics.ONAL" Version="0.9.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ILNumerics.ONAL" Version="0.9.4" />
                    
Directory.Packages.props
<PackageReference Include="ILNumerics.ONAL" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ILNumerics.ONAL --version 0.9.4
                    
#r "nuget: ILNumerics.ONAL, 0.9.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ILNumerics.ONAL@0.9.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ILNumerics.ONAL&version=0.9.4
                    
Install as a Cake Addin
#tool nuget:?package=ILNumerics.ONAL&version=0.9.4
                    
Install as a Cake Tool

ILNumerics.ONAL

Open Numerical Algorithm Language (ONAL) for .NET

NuGet Build License

Write serious numerical algorithms in .NET: NumPy/MATLAB semantic, proven industrial reliability, and no vendor lock-in.

Open-sourced from the proven, mature core of ILNumerics Computing.
Your algorithms. Your IP. Your language.

Learn ILNumerics.ONAL in Y minutes !


Why ILNumerics.ONAL ?

Because serious numerical software needs more than wrapping NumPy:

Requirement How ILNumerics.ONAL addresses it
✓ Expressive numerical language Dense n-dimensional arrays, logicals, cells and complex numbers with MATLAB and NumPy compatible semantics let algorithms be expressed as high-level mathematics rather than low-level optimization code.
✓ Complete numerical foundation Broad support for elementary functions, linear algebra, transforms and the core building blocks expected from a modern numerical language.
✓ Maintainable algorithm IP Open-source language core enables long-term maintainability and protects algorithm IP from vendor dependency.
✓ Compatibility and portability State-of-the-art numerical kernels such as LAPACK are made available through automated .NET translations — enabling true write once, run everywhere across the .NET ecosystem.
✓ Production-grade maturity Grown and hardened over 15 years alongside .NET, the codebase has been proven in industrial and academic applications since 2011.
✓ Tooling and debuggability Visual Studio integration, array visualizers, large team support and standard workflows for professional development, maintenance and deployment.
✓ Competitive execution speed Standard .NET execution delivers practical performance for serious numerical workloads.
✓ Optional path to additional performance When needed, the same algorithms can optionally run on ILNumerics Computing for runtime optimizations, without changing the algorithm code.

ILNumerics.ONAL is the open-sourced language core of ILNumerics, providing multidimensional array programming and the fundamental tools for building maintainable numerical algorithm IP in .NET. Write serious numerical algorithms in .NET — with Matlab/NumPy semantics, industrial robustness, and no vendor lock-in.

Prototype like MATLAB. Deploy like HPC software.

ILNumerics.ONAL combines:

  • N-dimensional arrays
  • Mathematical array programming
  • Numerical algorithms and transforms
  • Developer tooling and visual debugging
  • Drop-in migration path to ILNumerics Computing Engine

Inspired by:

  • MATLAB
  • NumPy
  • Julia

but built for .NET.


Features

N-Dimensional Arrays

using ILNumerics;
using static ILNumerics.ILMath;

var A = rand(4,4);
var B = sin(A) + 2*A;

Console.WriteLine(B);

Supports:

  • Scalars
  • Vectors
  • Matrices
  • Tensors
  • Logical arrays
  • Cell arrays

MATLAB / NumPy-like semantics included.


Array Expressions

Write mathematics naturally, use all common functions expected from an array language:

var x = linspace(0,10,1000);

var y =
    exp(-x/5) *
    sin(4*x)
    + cos(x);

Broadcasting, indexing, slicing and vectorized expressions included.


Linear Algebra

var A = rand(500,500);

Array<double> U = 0.0, V = 0.0; 
var S = svd(A, U, V);
// work with S, U, V...


Includes:

  • LU
  • QR
  • SVD
  • Eigendecomposition
  • Solvers
  • Matrix products

Fast Fourier Transform

var signal = sin(20*t) + .4*sin(90*t);

var spectrum = fft(signal);

Built-in signal processing foundations.


Debugging Visualizers

Numerical code should be inspectable.

Features include:

visualizer


Performance Philosophy

This project focuses strictly on semantics and functionality.
It represents the core language layer of ONAL and serves as its reference implementation.

Recent breakthroughs in the automatic parallelization of array-based algorithms make it possible to fully separate:

  • what an algorithm does
  • how it is executed efficiently

All performance-related concerns — previously deeply embedded in APIs and implementation — are delegated to external compilers.


What This Means in Practice

ILNumerics.ONAL provides:

  • a complete, production-ready implementation of numerical array semantics
  • robust and reliable execution with solid baseline performance
  • no dependency on proprietary execution engines

Advanced performance features such as:

  • Auto-parallelization
  • Auto-vectorization
  • kernel fusion and graph optimization
  • Array pipelining and autonomous scheduling

are handled by ONAL-compatible compilers, such as the ILNumerics Accelerator Compiler, and can be dropped-in optionally when needed.


Result

The language core remains stable, open, and vendor-neutral, while performance can scale independently.

Write algorithms once.
Run them with reliable baseline performance.
Run them optimized later — without changing the code.


Installation

dotnet add package ILNumerics.ONAL

NuGet:

https://www.nuget.org/packages/ILNumerics.ONAL


Quick Start

⇒ Learn ILNumerics in Y minutes guide.

Matrix Example

using ILNumerics;

var A = rand(3,3);

var B = multiply(A.T, A); // matrix multiply
var C = A.T * A;          // elementwise


Solve Linear System

var A = rand(100,100);
var b = rand(100,1);

var x = linsolve(A,b);

All linear algebra uses machine-translations of the original netlib LAPACK, being more robust than manual re-implementations.


Signal Processing Example

var fs = 1000;

var t =
    linspace(
      0,
      1,
      fs);

var signal =
      sin(2*pi*50*t)
    + .5*sin(2*pi*120*t);

var spectrum = fft(signal);

Array variables are easily inspected and changes followed while debugging:

Signal Plot Spectr.
signal line plot spectrum line plot

Learn more in Y minutes: 'LearnILNumericsInYMinutes' guide.
Full documentation: ilnumerics online documentation (but make sure to ignore their 'function rules' 😉)


Contributing

Docu missing ? Feature missing ? Odd behavior ? Contributions welcome!

git clone https://github.com/ILNumerics/ILNumerics.ONAL

Open an issue or PR.


License

MIT


Citation

If you use ONAL in research:

@software{ilnumerics_onal,
 title={ILNumerics.ONAL},
 author={ILNumerics GmbH},
 year={2026},
 url={https://github.com/ILNumerics/ILNumerics.ONAL}
}
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.9.4 95 5/15/2026
0.9.3 120 5/6/2026
0.9.1 98 5/4/2026
0.9.0 108 4/29/2026