Skip to content

nordlow/mir-algorithm

This branch is 1 commit ahead of, 325 commits behind libmir/mir-algorithm:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

712469a · Dec 5, 2021
Mar 29, 2020
Aug 20, 2021
Mar 27, 2020
May 23, 2017
Sep 9, 2021
Dec 5, 2021
Feb 2, 2019
Nov 13, 2020
Feb 6, 2017
Dec 13, 2020
Dec 13, 2020
Oct 20, 2020
Dec 13, 2020
Jul 3, 2020
Dec 13, 2020
Jul 3, 2021
Sep 17, 2021
Jun 21, 2021
Mar 11, 2017
Mar 11, 2017
Aug 20, 2021

Repository files navigation

codecov.io Build Status Circle CI

Dub downloads Dub downloads License Latest version Bountysource

Mir Algorithm

Blogs

Example (3 sec)

/+dub.sdl:
dependency "mir-algorithm" version="~>2.0.0"
+/

void main()
{
    import mir.ndslice;

    auto matrix = slice!double(3, 4);
    matrix[] = 0;
    matrix.diagonal[] = 1;

    auto row = matrix[2];
    row[3] = 6;
    assert(matrix[2, 3] == 6); // D & C index order
    
    import std.stdio;
    matrix.writeln; // [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 6]]
}

Open on run.dlang.io

Example (30 sec)

/+dub.sdl:
dependency "mir-algorithm" version="~>2.0.0"
+/
void main()
{
    import mir.ndslice;
    import std.stdio : writefln;

    enum fmt = "%(%(%.2f %)\n%)\n";

    // Magic sqaure. 
    // `a` is lazy, each element is computed on-demand.
    auto a = magic(5).as!float;
    writefln(fmt, a);

    // 5x5 grid on sqaure [1, 2] x [0, 1] with values x * x + y. 
    // `b` is lazy, each element is computed on-demand.
    auto b = linspace!float([5, 5], [1f, 2f], [0f, 1f]).map!"a * a + b";
    writefln(fmt, b);

    // allocate a 5 x 5 contiguous matrix
    auto c = slice!float(5, 5);

    c[] = transposed(a + b / 2); // no memory allocations here
    // 1. b / 2 - lazy element-wise operation with scalars
    // 2. a + (...) - lazy element-wise operation with other slices
    // Both slices must be `contiguous` or one-dimensional.
    // 3. transposed(...) - trasposes matrix view. The result is `universal` (numpy-like) matrix.
    // 5. c[] = (...) -- performs element-wise assignment.
    writefln(fmt, c);
}

Open on run.dlang.io

Our sponsors

       

Packages

No packages published

Languages

  • D 96.4%
  • C++ 3.2%
  • Other 0.4%