ILNumerics.Net
   HOME

TheInfoList



OR:

ILNumerics is a mathematical
class library In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subro ...
for Common Language Infrastructure (CLI) developers and a domain specific language (DSL) for the
implementation Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy. Industry-specific definitions Computer science In computer science, an implementation is a real ...
of numerical
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
s on the .NET platform. While algebra systems with
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inst ...
s focus on
prototyping A prototype is an early sample, model, or release of a product built to test a concept or process. It is a term used in a variety of contexts, including semantics, design, electronics, and software programming. A prototype is generally used to ...
of algorithms, implementation of such algorithms into distribution-ready
applications Application may refer to: Mathematics and computing * Application software, computer software designed to help the user to perform specific tasks ** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
is done using development environments and general purpose programming languages (GPL). ILNumerics is an extension to
Visual Studio Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such ...
and aims at supporting the creation of technical applications based on .NET.


History

ILNumerics started in 2006 as an open source project, originating from the Technical University of Berlin. In 2007 ILNumerics won the BASTA! Innovation Awards 2007 as most innovative .NET project in
Germany Germany,, officially the Federal Republic of Germany, is a country in Central Europe. It is the second most populous country in Europe after Russia, and the most populous member state of the European Union. Germany is situated betwe ...
, Switzerland and
Austria Austria, , bar, Östareich officially the Republic of Austria, is a country in the southern part of Central Europe, lying in the Eastern Alps. It is a federation of nine states, one of which is the capital, Vienna, the most populous ...
. 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, download counts from website not available). The
.NET framework The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
was selected as a managed foundation, since earlier attempts on the
Java platform Java is a set of computer software and specifications developed by James Gosling at Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a system for developing application software and deploying it in a cro ...
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 LAPACK ("Linear Algebra Package") is a standard software library for numerical linear algebra. It provides routines for solving systems of linear equations and linear least squares, eigenvalue problems, and singular value decomposition. It als ...
,
FFTW The Fastest Fourier Transform in the West (FFTW) is a software library for computing discrete Fourier transforms (DFTs) developed by Matteo Frigo and Steven G. Johnson at the Massachusetts Institute of Technology. FFTW is one of the fastest fre ...
),
complex number In mathematics, a complex number is an element of a number system that extends the real numbers with a specific element denoted , called the imaginary unit and satisfying the equation i^= -1; every complex number can be expressed in the fo ...
s and
generic Generic or generics may refer to: In business * Generic term, a common name used for a range or class of similar things not protected by trademark * Generic brand, a brand for a product that does not have an associated brand or trademark, other ...
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. The technological goal is to establish the .NET framework as a feasible alternative to unmanaged languages for numeric computing.


Syntax

ILNumerics implements base functionality frequently needed for application development in technical areas: N-dimensional
arrays An array is a systematic arrangement of similar objects, usually in rows and columns. Things called an array include: {{TOC right Music * In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
,
complex number In mathematics, a complex number is an element of a number system that extends the real numbers with a specific element denoted , called the imaginary unit and satisfying the equation i^= -1; every complex number can be expressed in the fo ...
s,
linear algebra Linear algebra is the branch of mathematics concerning linear equations such as: :a_1x_1+\cdots +a_nx_n=b, linear maps such as: :(x_1, \ldots, x_n) \mapsto a_1x_1+\cdots +a_nx_n, and their representations in vector spaces and through matrices ...
,
FFT A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). Fourier analysis converts a signal from its original domain (often time or space) to a representation in the ...
and plotting controls (2D and 3D). The array classes are fully compatible with the array features of
Matlab MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementa ...
(R) and numpy, including internal storage order, subarray creation, expansion, and advanced indexing. Higher level functionality is provided by toolboxes for interpolation,
optimization Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criterion, from some set of available alternatives. It is generally divided into two subfi ...
, statistics,
HDF5 Hierarchical Data Format (HDF) is a set of file formats (HDF4, HDF5) designed to store and organize large amounts of data. Originally developed at the U.S. National Center for Supercomputing Applications, it is supported by The HDF Group, a non- ...
and
machine learning Machine learning (ML) is a field of inquiry devoted to understanding and building methods that 'learn', that is, methods that leverage data to improve performance on some set of tasks. It is seen as a part of artificial intelligence. Machine ...
. The ILNumerics DSL is embedded into .NET. Computational algorithms are formulated using any CLI language. However, only C# and
Visual Basic Visual Basic is a name for a family of programming languages from Microsoft. It may refer to: * Visual Basic .NET (now simply referred to as "Visual Basic"), the current version of Visual Basic launched in 2002 which runs on .NET * Visual Basic ( ...
are officially supported. Due to the strong type system of the .NET framework algorithms created with ILNumerics are strongly typed. This deviates from the syntax of
alternatives Founded in 1994, Alternatives, Action and Communication Network for International Development, is a non-governmental, international solidarity organization based in Montreal, Quebec, Canada. Alternatives works to promote justice and equality a ...
, which are often weakly typed and therefore easier to adopt.


Graphics

A
scene graph Scene (from Greek σκηνή ''skēnḗ'') may refer to: Arts, entertainment, and media Music * Scene (subculture), a youth subculture from the early 2000s characterized by a distinct music and style. Groups and performers * The Scene who rec ...
is used in ILNumerics to realize graphical output. Interactive 2D and 3D plots are used in Windows Forms applications. Hardware accelerated drawing is available via OpenGL. A software renderer is provided for legacy hardware, based on GDI+ and SVG.


IDE integration

ILNumerics is distributed as an extension to
Visual Studio Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such ...
. It adds a tool window to the IDE for the graphical inspection of mathematical objects while stepping through user code.


Performance

Since ILNumerics comes as a CLI assembly, it targets Common Language Infrastructure (CLI) applications. Just like
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
- those frameworks are often criticized for not being suitable for numerical computations. Reasons are the
memory Memory is the faculty of the mind by which data or information is encoded, stored, and retrieved when needed. It is the retention of information over time for the purpose of influencing future action. If past events could not be remembered ...
management by a
garbage collector A waste collector, also known as a garbageman, garbage collector, trashman (in the US), binman or (rarely) dustman (in the UK), is a person employed by a public or private enterprise to collect and dispose of municipal solid waste (refuse) and r ...
, the
intermediate language An intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive to further processing, such as optimization and translation. A " ...
execution and deficient optimizations by the
compilers In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
involved. ILNumerics approaches these limitations by performing
loop unrolling Loop unrolling, also known as loop unwinding, is a loop transformation technique that attempts to optimize a program's execution speed at the expense of its binary size, which is an approach known as space–time tradeoff. The transformation ...
, 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. Numerical operations are parallelized on
multicore A multi-core processor is a microprocessor on a single integrated circuit with two or more separate processing units, called cores, each of which reads and executes program instructions. The instructions are ordinary CPU instructions (such ...
systems. Linear algebra routines rely on processor specific optimized versions of
LAPACK LAPACK ("Linear Algebra Package") is a standard software library for numerical linear algebra. It provides routines for solving systems of linear equations and linear least squares, eigenvalue problems, and singular value decomposition. It als ...
and
BLAS Basic Linear Algebra Subprograms (BLAS) is a specification that prescribes a set of low-level routines for performing common linear algebra operations such as vector addition, scalar multiplication, dot products, linear combinations, and matrix ...
. ILNumerics arrays utilize the unmanaged heap for storing data. This way, the
size Size in general is the magnitude or dimensions of a thing. More specifically, ''geometrical size'' (or ''spatial size'') can refer to linear dimensions ( length, width, height, diameter, perimeter), area, or volume. Size can also be m ...
of ILNumerics arrays is no
limited by the CLR
and
interoperability Interoperability is a characteristic of a product or system to work with other products or systems. While the term was initially defined for information technology or systems engineering services to allow for information exchange, a broader defi ...
with 3rd party libraries is improved.


See also

*
Comparison of numerical-analysis software The following tables provide a comparison of numerical-analysis software. Applications General Operating system support The operating systems the software can run on natively (without emulation). Language features Colors indicate ...
*
List of numerical-analysis software Listed here are notable end-user computer applications intended for use with numerical or data analysis: Numerical-software packages General-purpose computer algebra systems Interface-oriented Language-oriented Historically signific ...
*
List of numerical libraries This is a list of numerical libraries, which are libraries used in software development for performing numerical calculations. It is not a complete listing but is instead a list of numerical libraries with articles on Wikipedia, with few except ...


References


External links

*
Article about Math Libraries for .NET at MSDN
{{DEFAULTSORT:Ilnumerics.Net 3D graphics software 3D scenegraph APIs Array programming languages C Sharp libraries Computer vision software Data analysis software Data visualization software Mathematical software Numerical analysis software for Linux Numerical analysis software for macOS Numerical analysis software for Windows Numerical linear algebra Numerical programming languages Object-oriented programming languages OpenGL Parallel computing Science software Unix programming tools