Skip to content

AlgoSkyNet/nelson

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Visitor Badge



πŸš€ The Nelson language

The main homepage for Nelson can be found at https://nelson-lang.github.io/nelson-website/.

🌟 Starring the repository

If you found this project useful, please consider starring it on GitHub !!! This allows me to see how many people are using my code, and motivates me to keep working to improve it.

πŸŽ“ Introduction

Nelson is a powerful, open-source numerical computational language, developed to provide a comprehensive and intuitive environment for engineers, scientists, and students. With over 1,200 built-in functions, Nelson supports a wide range of tasks, from basic algebra to advanced numerical simulations.

Originally inspired by languages like MATLABΒ© and GNU Octave, Nelson offers users a lightweight yet feature-rich experience. It is designed to be easy to learn and use, with an emphasis on performance and flexibility.

Nelson environment

πŸ› οΈ Features

Data Types Managed by Nelson

  • Double and Complex Double: Supports scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
  • Single and Complex Single: Includes scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
  • Logical: Handles scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
  • Character Arrays: Supports UNICODE characters.
  • String Arrays: Fully supports UNICODE.
  • Integers: 8, 16, 32, and 64-bit signed and unsigned scalars, vectors, 2D matrices, and N-dimensional arrays.
  • Handle Objects: For object-oriented functionality.
  • Anonymous Functions: Allows creation and manipulation of functions without names.
  • Data Structures: Supports dictionaries and tables.
  • Overloading: All types can be overloaded for custom behavior.

Performance Enhancements

  • OpenMP and SIMD: Utilizes parallel processing and vectorization for faster computations.

Visualization & Interface

  • 2D and 3D Plotting: High-level commands for visualizations.
  • User Interface Controls: Built-in controls for creating custom interfaces.
  • Desktop Environment: Comes with history tracking, a file explorer, and workspace browser.

Advanced Modules

  • Parallel Computing: Enables efficient use of multi-core processors.
  • Fast Fourier Transform (FFT): High-performance FFT functions based on FFTW and MKL.
  • SLICOT Interface: Optional support for the Systems and Control Theory subroutine library.
  • Control System Module: Tools for control theory and system design.
  • MPI (Message Passing Interface): Functions for distributed parallel computing.

Data Formats & Interfacing

  • JSON Support: Read and write JSON files.
  • HDF5 Functions: High-level I/O functions, with HDF5 as the default file format for .nh5 workspaces.
  • MAT-File Compatibility: Load and save workspaces in MAT-file format.
  • Foreign Function Interface (FFI): Build and load C/Fortran code on the fly.
  • MEX C API Compatibility: Interfacing with MEX-compatible C APIs.
  • Nelson Engine API: Use Nelson as a backend engine within C code, compatible with the MEX Engine API.
  • Python Interfacing: Call Python scripts and functions from Nelson.
  • RESTful API: Enables Nelson to interact with web services.

Additional Capabilities

  • Inter-Process Communication: Communicate between Nelson processes.
  • QML Engine: Use Qt’s QML framework to display and manipulate graphical content.
  • Component Object Model (COM): Interface with COM components, especially on Windows.
  • Excel File Support: Write and read .xlsx files using COM on Windows.
  • Embedded Code Editor: Integrated editor for Nelson scripts.

Help & Testing Tools

  • Help Engine: Generate and view help files in various formats like HTML, Markdown, PDF, or GitBook.
  • Test Engine: Validate algorithms using built-in functions, with support for xUnit report export.

Profiling & Code Coverage

  • Profiler: Built-in profiler to analyze and optimize code performance.
  • Code Coverage: Measure the coverage of your tests to ensure thorough validation.

Cloud & Extensibility

πŸ“₯ Download

Get it from the Snap Store

Latest Windows Installer

Get it from the Windows Package Manager

Get it from the Chocolatey Package Manager

πŸ“š Resources

πŸ“œ License

Nelson is delivered under dual-license:

  • License (GNU Lesser General Public License (LGPL) v3.0)

    or

  • License (GNU General Public License (GPL) v3.0)

πŸ’» Supported Platforms

Nelson is tested and supported on a wide range of platforms. Downloads options and continuous integration (CI) status are listed below:

Operating System Architecture CI Binaries
Windows 10, 11 x86-64, i686 βœ“ βœ“
macOS Sequoia ARM64 βœ“
macOS Sonoma ARM64 βœ“
macOS Ventura x86-64 (64-bit) βœ“
Ubuntu 24.04 x86-64 βœ“ βœ“ (Snap)
Ubuntu 22.04 x86-64 βœ“ βœ“ (Snap)
Ubuntu 20.04 x86-64 βœ“ βœ“ (Snap)
Fedora 40 x86-64 βœ“ βœ“ (Snap)
ArchLinux x86-64 βœ“ βœ“ (Snap)
Raspbian ARM v8 (64-bit)

Note: The continued support of some platforms may depend on community contributions.

Allan CORNET ([email protected])

Releases

No releases published

Packages

No packages published

Languages

  • C++ 73.4%
  • MATLAB 14.7%
  • C 7.4%
  • CMake 1.9%
  • Inno Setup 0.9%
  • JavaScript 0.4%
  • Other 1.3%