All Projects → rust-ndarray → Ndarray Linalg

rust-ndarray / Ndarray Linalg

Licence: other
Linear algebra package for rust-ndarray using LAPACK binding

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Ndarray Linalg

Magicl
Matrix Algebra proGrams In Common Lisp.
Stars: ✭ 140 (-22.22%)
Mutual labels:  linear-algebra
Math Php
Powerful modern math library for PHP: Features descriptive statistics and regressions; Continuous and discrete probability distributions; Linear algebra with matrices and vectors, Numerical analysis; special mathematical functions; Algebra
Stars: ✭ 2,009 (+1016.11%)
Mutual labels:  linear-algebra
Phpsci Carray
PHP library for scientific computing powered by C
Stars: ✭ 176 (-2.22%)
Mutual labels:  linear-algebra
Computationalphysics
Introductory course in Computational Physics, including linear algebra, eigenvalue problems, differential equations, Monte Carlo methods and more.
Stars: ✭ 142 (-21.11%)
Mutual labels:  linear-algebra
Labs
Labs for the Foundations of Applied Mathematics curriculum.
Stars: ✭ 150 (-16.67%)
Mutual labels:  linear-algebra
Cpmoptimize
🚀 🐍 Optimizes Python bytecode calculating linear recurrences
Stars: ✭ 159 (-11.67%)
Mutual labels:  linear-algebra
Linear Algebra
Linear algebra for Nim
Stars: ✭ 132 (-26.67%)
Mutual labels:  linear-algebra
Mathematics For Machine Learning Cousera
quizzes/assignments for mathematics for machine learning specialization on coursera
Stars: ✭ 181 (+0.56%)
Mutual labels:  linear-algebra
L1
L1: Tensor Studio — The playground for tensors
Stars: ✭ 154 (-14.44%)
Mutual labels:  linear-algebra
Nalgebra
Linear algebra library for Rust.
Stars: ✭ 2,433 (+1251.67%)
Mutual labels:  linear-algebra
Node Sylvester
🐱 Sylvester is a vector, matrix, and geometry library for JavaScript, that runs in the browser and on the server.
Stars: ✭ 144 (-20%)
Mutual labels:  linear-algebra
Ginkgo
Numerical linear algebra software package
Stars: ✭ 149 (-17.22%)
Mutual labels:  linear-algebra
Cython Blis
💥 Fast matrix-multiplication as a self-contained Python library – no system dependencies!
Stars: ✭ 165 (-8.33%)
Mutual labels:  linear-algebra
Numjs
Like NumPy, in JavaScript
Stars: ✭ 1,912 (+962.22%)
Mutual labels:  linear-algebra
Data Science Masters
Self-study plan to achieve mastery in data science
Stars: ✭ 179 (-0.56%)
Mutual labels:  linear-algebra
Awesome Machine Learning Deep Learning Mathematics
A curated list of mathematics documents ,Concepts, Study Materials , Algorithms and Codes available across the internet for machine learning and deep learning
Stars: ✭ 138 (-23.33%)
Mutual labels:  linear-algebra
Numerix
A collection of useful mathematical functions in Elixir with a slant towards statistics, linear algebra and machine learning
Stars: ✭ 159 (-11.67%)
Mutual labels:  linear-algebra
Neo
A matrix library
Stars: ✭ 181 (+0.56%)
Mutual labels:  linear-algebra
Quant Notes
Quantitative Interview Preparation Guide, updated version here ==>
Stars: ✭ 180 (+0%)
Mutual labels:  linear-algebra
Deeplearning4j
Suite of tools for deploying and training deep learning models using the JVM. Highlights include model import for keras, tensorflow, and onnx/pytorch, a modular and tiny c++ library for running math code and a java based math library on top of the core c++ library. Also includes samediff: a pytorch/tensorflow like library for running deep learni…
Stars: ✭ 12,277 (+6720.56%)
Mutual labels:  linear-algebra

ndarray-linalg

Crate docs.rs

Linear algebra package for Rust with ndarray based on external LAPACK implementations.

Examples

See examples directory.

Note: To run examples, you must specify which backend will be used (as described below). For example, you can execute the solve example with the OpenBLAS backend like this:

cargo run --example solve --features=openblas

and run all tests of ndarray-linalg with OpenBLAS

cargo test --features=openblas

Backend Features

There are three LAPACK source crates:

ndarray_linalg must link just one of them for LAPACK FFI.

[dependencies]
ndarray = "0.14"
ndarray-linalg = { version = "0.13", features = ["openblas-static"] }

Supported features are following:

Feature Link type Requirements Description
openblas-static static gcc, gfortran, make Build OpenBLAS in your project, and link it statically
openblas-system dynamic/static libopenblas-dev Seek OpenBLAS in system, and link it
netlib-static static gfortran, make Same as openblas-static except for using reference LAPACK
netlib-system dynamic/static liblapack-dev Same as openblas-system except for using reference LAPACK
intel-mkl-static static (pkg-config) Seek static library of Intel MKL from system, or download if not found, and link it statically
intel-mkl-system dynamic (pkg-config) Seek shared library of Intel MKL from system, and link it dynamically
  • You must use just one feature of them.
  • dynamic/static means it depends on what is found in the system. When the system has /usr/lib/libopenblas.so, it will be linked dynamically, and /usr/lib/libopenblas.a will be linked statically. Dynamic linking is prior to static linking.
  • Requirements notices:
    • gcc and gfortran can be another compiler, e.g. icc and ifort.
    • libopenblas-dev is package name in Debian, Ubuntu, and other derived distributions. There are several binary packages of OpenBLAS, i.e. libopenblas-{openmp,pthread,serial}-dev. It can be other names in other distributions, e.g. Fedora, ArchLinux, and so on.
    • pkg-config is used for searching Intel MKL packages in system, and it is optional. See intel-mkl-src/README.md for detail.

For library developer

If you creating a library depending on this crate, we encourage you not to link any backend:

[dependencies]
ndarray = "0.13"
ndarray-linalg = "0.12"

The cargo's feature is additive. If your library (saying lib1) set a feature openblas-static, the application using lib1 builds ndarray_linalg with openblas-static feature though they want to use intel-mkl-static backend.

See the cargo reference for detail

Tested Environments

Only x86_64 system is supported currently.

Backend Linux Windows macOS
OpenBLAS ✔️ - -
Netlib ✔️ - -
Intel MKL ✔️ ✔️ ✔️

Generate document with KaTeX

You need to set RUSTDOCFLAGS explicitly:

RUSTDOCFLAGS="--html-in-header katex-header.html" cargo doc --no-deps

This only works for --no-deps build because katex-header.html does not exists for dependent crates. If you wish to set RUSTDOCFLAGS automatically in this crate, you can put .cargo/config:

[build]
rustdocflags = ["--html-in-header", "katex-header.html"]

But, be sure that this works only for --no-deps. cargo doc will fail with this .cargo/config.

License

CAUTION Be sure that if you use intel-mkl-src backend, you have to accept Intel Simplified Software License in addition to the MIT-License or Apache-2.0 License.

Dual-licensed to be compatible with the Rust project. Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 or the MIT license http://opensource.org/licenses/MIT, at your option.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].