m4ri-rust

M4RI-based boolean linear algebra

14 releases

0.2.2 Mar 13, 2019
0.2.1 Nov 19, 2018
0.1.0 Sep 5, 2018
0.0.10 Jul 6, 2018
0.0.2 Mar 23, 2018

#70 in Math

Download history 40/week @ 2018-11-27 31/week @ 2018-12-04 14/week @ 2018-12-11 92/week @ 2018-12-18 25/week @ 2018-12-25 4/week @ 2019-01-01 16/week @ 2019-01-08 7/week @ 2019-01-15 3/week @ 2019-01-22 1/week @ 2019-01-29 5/week @ 2019-02-05 1/week @ 2019-02-19 26/week @ 2019-02-26 2/week @ 2019-03-05

61 downloads per month
Used in 1 crate

GPL-2.0+

479KB
12K SLoC

C 11K SLoC // 0.1% comments Rust 1.5K SLoC // 0.3% comments Shell 40 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

Releases

Releases are available with DOI:

DOI

Dependencies

~2.5MB
~42K SLoC

  • libc 0.2
  • rand 0.6
  • vob 2.0+unsafe_internals+serde
  • optional serde 1.0+derive