Giter Site home page Giter Site logo

nelson-numerical-software / nelson Goto Github PK

View Code? Open in Web Editor NEW
87.0 10.0 15.0 58.04 MB

The Nelson Programming Language

Home Page: https://nelson-lang.github.io/nelson-website/

License: GNU Lesser General Public License v3.0

CMake 1.97% Inno Setup 0.88% C++ 73.26% C 7.75% CSS 0.03% Batchfile 0.02% QML 0.29% JavaScript 0.43% Fortran 0.03% Python 0.23% HTML 0.07% Shell 0.05% Makefile 0.15% Perl 0.18% M4 0.01% TeX 0.01% XSLT 0.28% MATLAB 14.26% M 0.10% PowerShell 0.01%
matrix-functions interpreter programming-language scientific-computing nelson data-science mathematical-functions data-structures octave matlab cpp17 scilab

nelson's Introduction

Nelson logo

Visitor Badge

Codacy Badge CodeQL analysis (C/C++)CII Best Practices

Build Status

GitHub license CLA assistant Open Hub Weblate

Join the chat at https://gitter.im/nelson-lang/Lobby

Nelson is an array programming language providing a powerful open computing environment for engineering and scientific applications using modern C/C++ libraries (Boost, Eigen, …) and others state of art numerical libraries.

It has sophisticated data structures (including cell, struct, dictionary, linear systems, …), an interpreter and a high level programming language.

Nelson has been developed to be an open/modular system where an user can define these own data types and operations on these data types by using overload.

Nelson environment

Website dedicated to users

For more information go to 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.

Download

Get it from the Snap Store

Latest Windows Installer

Get it from the Windows Package Manager

Get it from the Chocolatey Package Manager

Features

  • Types managed by Nelson:

    • double and double complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
    • single and single complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
    • logical: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
    • character array (UNICODE supported).
    • string array (UNICODE supported).
    • integers 8, 16, 32, 64 signed and unsigned: scalar, vector, matrix 2D, N dimensions array.
    • handle objects.
    • anonymous functions,
    • all types can be overloaded.
  • OpenMP and SIMD extensions used.

  • 2D and 3D plotting with high-level plot commands.

  • Desktop environment with history, file and workspace browser.

  • Parallel Computing Module.

  • Fast Fourrier Transformation functions based on FFTW and MKL wrapper.

  • SLICOT (Subroutine Library in Systems and Control Theory) interfaces (optional).

  • Control System module.

  • Message Passing Interface (MPI): functions for parallel computing.

  • JSON decode/encode data support.

  • HDF5 high-level functions I/O,

  • HDF5 used as default data file format (.nh5) load/save workspace,

  • MAT-file compatible load/save workspace,

  • Foreign Function Interface C/Fortran.

  • Interfacing C/C++ or Fortran with Nelson (build and load external code on the fly).

  • MEX C API compatibility.

  • Nelson Engine API for C (compatible with MEX Engine). Call Nelson from your C code as engine.

  • Call Python from Nelson.

  • RESTful API web service.

  • Inter-process communication between Nelson's process.

  • The QML engine enables nelson programs to display and manipulate graphical content using Qt's QML framework.

  • Component Object Model (COM) client interface: binary-interface standard for software components on Windows.

  • Write/Read xlsx files on Windows using COM.

  • Embedded Nelson code editor.

  • Help engine:

    Generate help files using Nelson dedicated functions. View your generated help files as html, markdown, pdf, gitbook or directly in Nelson help viewer.

  • Tests engine:

    Validate your algorithm using Nelson dedicated functions. Export the test results under the xUnit reports format.

  • Profiling and Code coverage tools for Nelson's language:

    Nelson has a built-in profiler that is very useful to profile your code and find out what script or function is taking the most time.

  • Nelson cloud: Instant access to Nelson anywhere from an web browser.

  • Module skeleton to extend Nelson available here:

  • Nelson Modules Manager (nmm) : package manager for Nelson

Licenses

Nelson is delivered under dual-license:

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

    or

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

Resources

Tested and supported platforms

Systems with ✓ downloads are available on downloads page.

Systems with ✓ for CI are tested with continuous integration for every commit.

The systems listed here without CI or binaries are known to build and operate, but the continued support of these platforms is user-dependent.

Operating System Architecture CI Binaries
Windows 7 to 11 x86-64 (64-bit)
i686 (32-bit)
macOS Sonoma arm64 (M1)
macOS Ventura x86-64 (64-bit)
macOS Monterey x86-64 (64-bit)
Ubuntu 24.04 x86-64 (64-bit) ✓ (snap)
Ubuntu 22.04 x86-64 (64-bit) ✓ (snap)
Ubuntu 20.04 x86-64 (64-bit) ✓ (snap)
Ubuntu 18.04 x86-64 (64-bit) ✓ (snap)
ArchLinux x86-64 (64-bit) ✓ (snap)
Fedora 36 x86-64 (64-bit) ✓ (snap)
Raspbian ARM v8 (64-bit)

Allan CORNET ([email protected])

nelson's People

Contributors

aibaars avatar allancornet avatar codacy-badger avatar gitter-badger avatar lokinyx avatar nelson-numerical-software avatar sj avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nelson's Issues

add 'lastwarn' builtin

to return last warning message
warning('toto')

previous_warning_message = lastwarn()
lastwarn('toto') set last warning message
lastwarn('') to clear last warning

COM_xlsread does not support path with dot '.'

--> [numeric_data, text_data, raw_data] = COM_xlsread([nelsonroot(), '/modules/com_engine/tests/format_excel97.xls']);
An absolute path expected.
appelée à partir de :
C:/Program Files/Nelson-0.1.7.0 (64 bits)/modules/com_engine/functions/COM_xlsread.nlf
à la ligne: 71 position:1

datenum does not support some string format

dv = datevec(datenum('10-Mar-2010 16:48:17'));
REF = [2010 3 10 16 48 17];
assert_isequal(dv, REF);

dv = datevec(datenum('Mar.10,2010'));
REF = [2010 3 10 0 0 0];
assert_isequal(dv, REF);

extend warning behavior

Currently 'warning' manages only a message.
Nelson could be extended with

warning('off') : disable all warnings
warning('on'): enable warning
warning('stop'): warning stop execution
current_warning_state = warning('query')

extend fprintf

current fprintf is too simple and do not manage format.

With new mac version of icu4c 59.1 nelson build fails

[ 0%] Building CXX object modules/characters_encoding/CMakeFiles/nlsCharacters_encoding.dir/src/cpp/characters_encoding.cpp.o
/Users/travis/build/Nelson-numerical-software/nelson/modules/characters_encoding/src/cpp/characters_encoding.cpp:56:9: error: use of undeclared identifier 'u_strFromUTF8_59'
u_strFromUTF8(&buffer[0], (int32_t)buffer.size(), &len, &str[0], (int32_t)str.size(), &status);
^
/usr/local/Cellar/icu4c/59.1/include/unicode/urename.h:351:23: note: expanded from macro 'u_strFromUTF8'
#define u_strFromUTF8 U_ICU_ENTRY_POINT_RENAME(u_strFromUTF8)
^
/usr/local/Cellar/icu4c/59.1/include/unicode/uvernum.h:113:40: note: expanded from macro 'U_ICU_ENTRY_POINT_RENAME'
#define U_ICU_ENTRY_POINT_RENAME(x) U_DEF2_ICU_ENTRY_POINT_RENAME(x,U_ICU_VERSION_SUFFIX)
^
/usr/local/Cellar/icu4c/59.1/include/unicode/uvernum.h:112:44: note: expanded from macro 'U_DEF2_ICU_ENTRY_POINT_RENAME'
#define U_DEF2_ICU_ENTRY_POINT_RENAME(x,y) U_DEF_ICU_ENTRY_POINT_RENAME(x,y)
^
/usr/local/Cellar/icu4c/59.1/include/unicode/uvernum.h:111:43: note: expanded from macro 'U_DEF_ICU_ENTRY_POINT_RENAME'
#define U_DEF_ICU_ENTRY_POINT_RENAME(x,y) x ## y
^
:125:1: note: expanded from here
u_strFromUTF8_59

==> Downloading https://homebrew.bintray.com/bottles/icu4c-59.1.sierra.bottle.tar.gz
==> Pouring icu4c-59.1.sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because macOS provides libicucore.dylib (but nothing else).
If you need to have this software first in your PATH run:
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile
For compilers to find this software you may need to set:
LDFLAGS: -L/usr/local/opt/icu4c/lib
CPPFLAGS: -I/usr/local/opt/icu4c/include
For pkg-config to find this software you may need to set:
PKG_CONFIG_PATH: /usr/local/opt/icu4c/lib/pkgconfig
==> Summary
🍺 /usr/local/Cellar/icu4c/59.1: 246 files, 65.4MB
Linking /usr/local/Cellar/icu4c/59.1... 61 symlinks created
If you need to have this software first in your PATH instead consider running:
echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile
Error: pkg-config 0.29.1_2 is already installed

search path for functions is wrong

Creates a function already existing
example d:\test\doc.nlf

addpath('d:\test')
call doc
doc function of nelson is called and not d:\test\doc.nlf

test_nargin & test_nargout fails in Windows binary version

Some files are missing

--> test_run('core')
 1/1 - [core] :
 1/4 - [core] test_nargin                                                   Fail
      run('C:/Program Files/Nelson-0.1.1.30 (64 bits)/modules/core/tests/test_nargin.nls')
 
 2/4 - [core] test_nargout                                                  Fail
      run('C:/Program Files/Nelson-0.1.1.30 (64 bits)/modules/core/tests/test_nargout.nls')
 
 3/4 - [core] test_nfilename                                                Pass
 4/4 - [core] bug_namelengthmax                                             Pass
 
  //==========================================================================
  Summary:
  Tests: 4
  Passed: 2
  Failed: 2
  Skipped: 0
  Benchs: 0
  Temps écoulé: 0 ms
  //===========================================================================

ans =

  <logical>  - size: 1x1
 false  

Invalid extraction & insertion on function_handle

Overload need to be completed:

Error expected (OK):
a = str2func('sin')
a(1).b= 1

Error expected (KO):
a = str2func('sin')
a(1).b

or
c = complexObj(3,4);
c(1).r

Currently, we evaluate a(1) only

Assignment expected(KO):
a = str2func('sin')
a.b=3

Currently, Nelson returns an error and not a value.

Migrates to VS 2017

Appveyor image for VS 2017 is available
Qt 5.7 for VS 2017 (ok)
boost 1.64 (need to build)

mldivide is missing

mldivide, ldivide & '.' b '' operators are missing (overload & implementation).

enable multithreading

fft functions are fast using FFTW but currently we could do faster using multithreading availabke in FFTW and others librairies used in Nelson

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.