Description

Multidimensional arrays (ndslice), ranges, iterators, and algorithms for Dlang

Package Information

Version0.6.5 (2017-May-21)
Repository https://github.com/libmir/mir-algorithm
LicenseBSL-1.0
CopyrightCopyright © 2016 - 2017, Ilya Yaroshenko; Copyright © 2017, Kaleidic Associates Advisory Limited; Copyright 2016 - 2017 © Digital Mars; (see information per file)
AuthorsIlya Yaroshenko, Andrei Alexandrescu, Walter Bright, Phobos developers (see information per file)
Registered byIlya Yaroshenko
Dependencies none

Installation

To use this package, put the following dependency into your project's dependencies section:

dub.json
dub.sdl

Readme

Dub downloads 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 execution and multidimensional algorithms.
  3. Iterators like random access iterators in C++, Fields, and ndFields.
  4. LLVM oriented math functions.

API Documentation

http://docs.algorithm.dlang.io

New ndslice

Scheme

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

Features

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 the Universal ndslice.

Known bugs

  • With LDC <=1.1.1 mir.ndslice.topology.map may not work because LDC has deprecated DMD FE

Old ndslice

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

Available versions

0.6.5 0.6.4 0.6.3 0.6.2 0.6.1 0.6.0 0.5.17 0.5.16 0.5.15 0.5.14 0.5.13 0.5.12 0.5.11 0.5.10 0.5.9 0.5.8 0.5.7 0.5.6 0.5.5 0.5.4 0.5.3 0.5.2 0.5.1 0.5.0 0.4.14 0.4.13 0.4.12 0.4.11 0.4.10 0.4.9 0.4.8 0.4.7 0.4.6 0.4.5 0.4.4 0.4.3 0.4.2 0.4.1 0.4.0 0.3.0 0.2.0 0.1.1 0.1.0 0.0.39 0.0.38 0.0.37 0.0.36 0.0.35 0.0.34 0.0.33 0.0.32 0.0.31 0.0.30 0.0.29 0.0.28 0.0.27 0.0.26 0.0.25 0.0.24 0.0.23 0.0.22 0.0.21 0.0.20 0.0.19 0.0.18 0.0.17 0.0.16 0.0.15 0.0.14 0.0.13 0.0.12 0.0.11 0.0.10 0.0.9 0.0.8 0.0.7 0.0.6 0.0.5 0.0.4 0.0.3 0.0.2 0.0.1 ~master ~bitpack-update