# Wiki

# numerlang / Home

## Numerlang

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.

### Plan

- 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)

- packed storage of integer and float n-dim arrays in a bitstring (partial done)

- 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 ;-)

Updated