- Generic Multidimensional arrays of three kinds.
std.range
,std.functional
, and partiallystd.algorithm
alternative suitable for fast execution and multidimensional algorithms.- Iterators like random access iterators in C++, Fields, and ndFields.
- LLVM oriented math functions.
http://docs.algorithm.dlang.io
https://rawgit.com/libmir/mir-algorithm/master/ndslice.svg
- mir.ndslice.topology - Multidimensional
std.range
analog. Includesbitwise
,bitpack
,zip
,unzip
,map
,indexed
and many other features. - mir.ndslice.concatenation - Concatenation and padding
- mir.ndslice.algorithm - Slim multidimensional
std.algorithm
analog - mir.ndslice.sorting - Multidimensional sorting utilities
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 theUniversal
ndslice.
- With LDC <=1.1.1
mir.ndslice.topology.map
may not work because LDC has deprecated DMD FE
If you are looking for old ndslice
, please use the main repo with old tag v0.22.1
.