Clone wiki

numerlang / Home


Numerlang: Erlang support for numerical data-types and computation without heavyweight external dependencies -- keeping Erlang responsive.

This will probably never be as fast as C/Fortran but is intended to have some numerical capabilities in Erlang where a mix of real-time responsiveness, symbolic computation and protocol implementation is needed.

It might also a experimental field for concurrent algorithms and distributed mixed numeric and symbolic computation.


  • I've already started with a n-dimensional array/matrix/tensor datatype:
    • packed storage of integer and float n-dim arrays in a bitstring (partial done)
      • I need for example n-dim bit arrays for some uses, but 20x23x15 arrays with integers of 13bit are also easily possible
    • sparse n-dim arrays of anything with array module as storage
    • maybe some for of tiling or other substructures
    • Conversion to/from nested lists (partial done)
    • Conversion to/from other data structures e.g. digraphs
    • General inner and outer product with fun operators
    • Normal inner product with * and + operators as defaults
      • giving you normal vector/matrix matrix/matrix and tensor multiplication
    • Element-wise operations of ndarrays of same dimensionality
      • again with general fun or default +, giving vector, matrix, tensor addition
    • No-copy slicing operations (keeping the same bitstring/array)
  • Once the ndarray above works in pure Erlang some time consuming operations can be implemented as NIF's (e.g. for starters a scalar product of 1/8/16/32bit integer/float/double/complex 1-dim slices on the bitstrings)
  • Then lets see what the performance gain is and what comes next ;-)