ILNumerics.ONAL 0.9.0

Prefix Reserved
dotnet add package ILNumerics.ONAL --version 0.9.0
                    
NuGet\Install-Package ILNumerics.ONAL -Version 0.9.0
                    
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.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ILNumerics.ONAL" Version="0.9.0" />
                    
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.0
                    
#r "nuget: ILNumerics.ONAL, 0.9.0"
                    
#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.0
                    
#: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.0
                    
Install as a Cake Addin
#tool nuget:?package=ILNumerics.ONAL&version=0.9.0
                    
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.

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-like 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:

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:

  • Visual Studio tooltips
  • Graphical array watch window
  • Interactive debugging support

visualizer


Performance Philosophy

ONAL prioritizes:

  • Correct semantics
  • Stable APIs
  • Expressive algorithms

while still delivering competitive speed among .NET numerical DSLs.


Installation

dotnet add package ILNumerics.ONAL

NuGet:

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


Quick Start

Matrix Example

using ILNumerics;

var A = rand(3,3);

var B = A.T * A;


Solve Linear System

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

var x = linsolve(A,b);

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);

Contributing

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.0 46 4/29/2026