Lua - Numerical Algorithms
Lua - Numerical Algorithms (lna) is a collection of Lua modules that provides:
- Bi-dimensional real/complex matrices;
- Fast linear algebra operations via lapacke bindings;
- Complex number implementation;
- Optimization algorithms (least squares fitting, function maximization);
- Other numerical algorithms (ODE solver, PCA / LDA, ...);
All modules are pure LuaJIT (requires FFI) modules, so redistribution is easy. One can also use only the desired modules, without polluting the global table.
A note about performance: since all the basic operations are performed in Lua, (and because LuaJIT is awesome), the performance is quite good (almost C level), even for manually iterating over all elements of a matrix while doing some computation.
lna is licensed under the MIT license and can be freely used for academic and commercial purposes. All required dependencies are under a MIT or BSD-like license too.
This project uses Kiss FFT and any implementation of blas/lapack, and lapacke.
For testing, lna requires lunatest and lcomplex.
Numeric extra is a pure LuaJIT + FFI library. To install it, copy the lna folder into your Lua shared path.
With some modifications, a good subset of this library may work with Lua 5.1/5.2 by using luaffi. Keep in mind that the good performance comes from LuaJIT.
The documentation is located at doc/index.html (generated by ldoc).
Source code and Contact
Repository on bitbucket. Contact me at firstname.lastname@example.org
luajit 2.0.3 crashes on exit when OpenBLAS is loaded. This issue shows only when OpenBLAS is compiled with USE_OPENMP=1 and multiple threads are used. This issue occurs independently of lna.