Hi all,

This is early preview before the announce of Mir Algorithm and the new ndslice. Ndslice is a dlang package for multidimensional and numeric worlds.

The new ndslice has three kinds:

1. Universal:
    numpy-like, similar to the old ndslice,

2. Canonical:
    BLAS-like, raw stride is assumed to be 1

3. Contiguous:
    Contiguous in memory, no strides are required.

New ndslice is 90% reworked.

Mir Algorithm has its own map, retro, stride, reduce, naryFun, bitwise, to and others stuff from Phobos. But they are implemented differently, may have different API (like iota), and may boost your program and compilation speed few times.

Ah, ndslice is based on iterators! Dlang iterators! Dlang iterators are only random access, other kinds of iterators can be replaced with D Ranges. There are strong reasons why iterators are the best for random access and multidimensional worlds. They will be described in the future this year. Do not worry, we do not need to write C++-like code, iterators are used internally by ndslices :-)

We have full backward compatibility with Phobos Range API, so we can mix Phobos and Mir code. Iterators are useful if we want to implement custom and fast ndslices. Big collection of predefined ndslices can be found at mir.ndslice.topology .

Mir Algorithm is already used in Tamedia's lincount (for bitwise and accelerated bit count), Mir main repository. A PR with update for the D Computer Vision library is 85% ready.

Docs
http://docs.algorithm.dlang.io
======================

Github
https://github.com/libmir/mir-algorithm
======================

Dub
http://code.dlang.org/packages/mir-algorithm
======================

Feedback is welcome!

For commercial support: ilyayaroshenko at gmail dot com

Best regards,
Ilya

Reply via email to