Numo::Linalg : Linear Algebra library with BLAS/LAPACK binding to Numo::NArray

Binder Build Status

GitHub | RubyGems

Under development!

Introduction

This is a binding of BLAS/LAPACK for Numo::NArray using dynamic linking loader. This desgin allows you to change backend libraries without re-compiling.

Numo::Linalg API

  • Matrix and vector products
    • dot, matmul
  • Decomposition
    • lu, lu_fact, lu_inv, lu_solve, ldl, cholesky, cho_fact, cho_inv, cho_solve, qr, svd, svdvals
  • Matrix eigenvalues
    • eig, eigh, eigvals, eigvalsh
  • Norms and other numbers
    • norm, cond, det, slogdet, matrix_rank, matrix_power
  • Solving equations and inverting matrices
    • solve, lstsq, inv, pinv

Low-level modules

Installation

  • Install Numo::NArray

  • Install LAPACK or alternative package.

    • Numo::Linalg requires C-interface CBLAS and LAPACKE interface. These are included in LAPACK package.

    • Recommended: use one of following faster libraries:
    • Note that the performance depends on the backend library as shown in benchmark.
  • Install Numo::Linalg

shell $ gem install numo-linalg

or

shell $ git clone https://github.com/ruby-numo/numo-linalg.git $ cd linalg $ rake build $ gem install pkg/numo-linalg-*.gem

Using

  • Load Numo::Linalg module with default backend:

ruby require "numo/linalg"

Authors

  • Masahiro Tanaka
  • Makoto Kishimoto
  • Atsushi Tatsuma

Acknowledgement

  • This work is partly supported by 2016 Ruby Association Grant.

ToDo

  • More functions
  • write test
  • Documentation