Skip to content

Multidimensional arrays, algorithms, iterators. Has backward compatibility with Phobos std.algorithm and std.range.

License

Notifications You must be signed in to change notification settings

yazd/mir-algorithm

 
 

Repository files navigation

Dub downloads License Bountysource Gitter

Latest version

codecov.io Circle CI

mir-algorithm

  1. Generic Multidimensional arrays of three kinds
  2. std.range, std.functional, and partially std.algorithm alternative suitable for fast executaion and multidimensional algorithms.
  3. Iterators like random access iterators in C++, Fields, and ndFields.

API Documentation

http://docs.algorithm.dlang.io

Scheme of basic elements

https://rawgit.com/libmir/mir-algorithm/master/ndslice.svg

New ndslice

ndslice design was changed. New ndslices can be created on top of random access iterators including pointers. There are three kinds of ndslice:

  • Contiguous - Contiguous in memory representation. It does not store strides and can be always flattened to 1 dimensional ndslice on top of the same iterator type.
  • Canonical - BLAS like. Stride for row dimension assumed to be equal to 1.
  • Universal - Numpy like. Each dimension has strides. All dimensions can be exchanged without reallocation. The old ndslice ABI corresponds to to the Universal ndslice.

Known bugs

  • With LDC <=1.1.0 mir.ndslice.topology.map may not work because LDC has deprecated DMD FE.
  • With LDC ==1.2.0-beta1 compiled with LLVM 4.0 some code from mir.algorithm may not work because ldc-developers/ldc#2037.

Old ndslice

If you are looking for old ndslice, please use the main repo with old tag v0.22.1.

About

Multidimensional arrays, algorithms, iterators. Has backward compatibility with Phobos std.algorithm and std.range.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • D 99.4%
  • Makefile 0.6%