17 releases

Uses old Rust 2015

0.4.0 Feb 11, 2021
0.3.2 Aug 26, 2019
0.3.0 Apr 2, 2019
0.2.2 Mar 13, 2019
0.0.2 Mar 23, 2018

#1116 in Algorithms

Download history 17/week @ 2023-01-20 18/week @ 2023-01-27 28/week @ 2023-02-03 35/week @ 2023-02-10 52/week @ 2023-02-17 2/week @ 2023-02-24 8/week @ 2023-03-03 4/week @ 2023-03-10 7/week @ 2023-03-17 35/week @ 2023-03-24 5/week @ 2023-03-31 29/week @ 2023-04-07 20/week @ 2023-04-14 1/week @ 2023-04-21 11/week @ 2023-04-28 37/week @ 2023-05-05

69 downloads per month
Used in lpn

GPL-2.0+

505KB
13K SLoC

C 11K SLoC // 0.1% comments Rust 1.5K SLoC // 0.0% comments Automake 129 SLoC // 0.1% comments Visual Studio Project 123 SLoC

Rust bindings for M4RI

M4RI is a C library that provides efficient implementations of binary matrix operations. This crate aims to expose those functions to Rust and provides a nice wrapper around matrices, vectors and operations on both.

References

Martin Albrecht and Gregory Bard. The M4RI Library. https://malb.bitbucket.io/m4ri

See also the references section of the M4RI docs here.

This was written in the context of:

Thom Wiggers. Solving LPN using Large Covering Codes. Master's Thesis Radboud University, 2018.

See also https://thomwiggers.nl/research/msc-thesis/

Optional features

  • serde: Enable serialization
  • M4RI options:
    • m4rm_mul: Use m4rm as multiplication algorithm
    • naive_mul: Use the naive strategy
    • strassen_mul: Use the Strassen algorithm

Windows support

You may currently experience issues trying to build this on Windows. Help would be welcome (See issue #6).

Releases

Releases are available with DOI:

DOI

Dependencies

~1–1.9MB
~40K SLoC