- Generic Multidimensional arrays of three kinds
std.range
,std.functional
, and partiallystd.algorithm
alternative suitable for fast executaion and multidimensional algorithms.- Iterators like random access iterators in C++, Fields, and ndFields.
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 to theUniversal
ndslice.
- 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.
If you are looking for old ndslice
, please use the main repo with old tag v0.22.1
.