Description

Standard algorithms, ranges and ndslices (tensors) for Dlang

Package Information

Version0.4.3 (2017-Mar-30)
Repository https://github.com/libmir/mir-algorithm
LicenseBSL-1.0
CopyrightCopyright © 2016, Ilya Yaroshenko
AuthorsIlya Yaroshenko
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 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.
  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 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 https://github.com/ldc-developers/ldc/issues/2037.

Old ndslice

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

Available versions

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