All Projects → linbox-team → fflas-ffpack

linbox-team / fflas-ffpack

Licence: LGPL-2.1, GPL-2.0 licenses found Licenses found LGPL-2.1 COPYING.LESSER GPL-2.0 COPYING
FFLAS-FFPACK - Finite Field Linear Algebra Subroutines / Package

Programming Languages

C++
36643 projects - #6 most used programming language
M4
1887 projects
Makefile
30231 projects

Projects that are alternatives of or similar to fflas-ffpack

kaliningraph
🕸️ Graphs, finite fields and discrete dynamical systems in Kotlin
Stars: ✭ 62 (+40.91%)
Mutual labels:  linear-algebra, finite-fields
vg
Vector-geometry toolbelt for 3D points and vectors
Stars: ✭ 106 (+140.91%)
Mutual labels:  linear-algebra
Linear-Algebra-and-Its-Applications-notes
《线性代数及其应用》笔记
Stars: ✭ 196 (+345.45%)
Mutual labels:  linear-algebra
lubeck
High level linear algebra library for Dlang
Stars: ✭ 57 (+29.55%)
Mutual labels:  linear-algebra
Mathter
A flexible and fast matrix, transform and geometry library.
Stars: ✭ 105 (+138.64%)
Mutual labels:  linear-algebra
GaloisFields.jl
Finite fields for Julia
Stars: ✭ 39 (-11.36%)
Mutual labels:  finite-fields
Mathematics for Machine Learning
Notes and step-by-step exercises resolution to aid students learning the base math for machine learning. Content summed up from the the course from the Imperial London College in Coursera.
Stars: ✭ 44 (+0%)
Mutual labels:  linear-algebra
LAML
A stand-alone pure Java library for linear algebra and machine learning
Stars: ✭ 15 (-65.91%)
Mutual labels:  linear-algebra
Tensor
A library and extension that provides objects for scientific computing in PHP.
Stars: ✭ 146 (+231.82%)
Mutual labels:  linear-algebra
qdldl
A free LDL factorisation routine
Stars: ✭ 54 (+22.73%)
Mutual labels:  linear-algebra
Mathematics for Machine Learning
Learn mathematics behind machine learning and explore different mathematics in machine learning.
Stars: ✭ 28 (-36.36%)
Mutual labels:  linear-algebra
Julia-data-science
Data science and numerical computing with Julia
Stars: ✭ 54 (+22.73%)
Mutual labels:  linear-algebra
mfi
Modern Fortran Interfaces to BLAS and LAPACK
Stars: ✭ 31 (-29.55%)
Mutual labels:  linear-algebra
PDMats.jl
Uniform Interface for positive definite matrices of various structures
Stars: ✭ 97 (+120.45%)
Mutual labels:  linear-algebra
blaze tensor
3D Tensors for Blaze (https://bitbucket.org/blaze-lib/blaze)
Stars: ✭ 29 (-34.09%)
Mutual labels:  linear-algebra
AlgebraSummerExam
Theory for algebra summer exam
Stars: ✭ 17 (-61.36%)
Mutual labels:  linear-algebra
bandicoot-code
Bandicoot: GPU accelerator add-on for the Armadillo C++ linear algebra library
Stars: ✭ 21 (-52.27%)
Mutual labels:  linear-algebra
Introduction-to-Python-Numerical-Analysis-for-Engineers-and-Scientist
Introduction to Python: Numerical Analysis for Engineers and Scientist. In 2017, Python became the world's most popular programming language. This course covers the basic syntax, linear algebra, plotting, and more to prepare students for solving numerical problems with Python.
Stars: ✭ 110 (+150%)
Mutual labels:  linear-algebra
galois
A performant NumPy extension for Galois fields and their applications
Stars: ✭ 106 (+140.91%)
Mutual labels:  finite-fields
sympiler
Sympiler is a Code Generator for Transforming Sparse Matrix Codes
Stars: ✭ 32 (-27.27%)
Mutual labels:  linear-algebra

FFLAS-FFPACK: Finite Field Linear Algebra Subroutines/Package

CI Inria: Build Status

Travis: Build Status

PURPOSE

The FFLAS-FFPACK library provides a set of basic routines for linear algebra over a finite field or the ring of integers with dense and sparse matrices.

It is inspired by the BLAS interface (Basic Linear Algebra Subprograms) and the LAPACK library for numerical linear algebra, and shares part of their design. Yet it differs in many aspects due to the specifities of computing over exact domains such as a finite fields and the field of rationals:

  • it is generic with respect to the finite field, so as to accomodate a large variety of field sizes and implementations;
  • consequently all routines use the C++ template genericity and the library is primarily meant to be used as a source code library, to be included and compiled in the user's software.
  • However, we also provide a compiled version instantiating most common routines over the most common finite fields.

LICENSE

FFLAS-FFPACK is distributed unded the terms of the GNU LGPL v2.1 or later (see COPYING.LESSER).

REQUIREMENTS:

  • a C++ compiler supporting C++11 standard. More precisely g++ v5 or greater, clang++ v3.4 or greater, icpc v16 or greater (earlier versions of clang and icpc might also work but have not been tested)
  • A BLAS library conforming to either the C or Fortran BLAS standard: OpenBLAS (recommended), or ATLAS. Make sure to use a single threaded version of the BLAS library.
  • Givaro version at least 4.1.2, providing the implementations of the coefficient fields/rings.

INSTALLATION

In brief:

  • if you are compiling a released tar.gz archive, use ./configure <options> && make && make install
  • if you are compiling the upstream git master branch, juste replace configure by autogen.sh in the above command: the configure script will be auto-generated and run with the arguments passed to autogen.sh

Most commonly used options

  • --with-blas-libs=<libs> : to specify the arguments for the linker to find the BLAS
  • --enable-precompilation : to precompile the standard templates specializations (and gain some compilation time later on)

Type ./configure --help to list all options available. Note that givaro is automatically detected by pkg-config, so you no longer need to pass a --with-givaro=... option. You may need to set the PKG_CONFIG_PATH environment variable to <givaro-prefix>/lib/pkgconfig if you have installed it in a non standard directory.

For example on a x86_64 architecture:

  • Using OpenBLAS in Fedora:
    • install the package openblas-devel.x86_64,
    • run ./configure --with-blas-libs="-lopenblas"
  • Using OpenBLAS in Debian, Ubuntu, Mint, and all debian based distribution:
    • avoid using the distribution's package, as it is threaded by default. You need to compile openblas yourself on these systems,
    • run ./configure --with-blas-libs="-L/pathtolocalopenblas/lib -lopenblas" --with-blas-cflags="-I/pathtolocalopenblas/include"
  • Using ATLAS in Debian, Ubuntu, Mint:
    • install the package libatlas-dev,
    • run ./configure --with-blas-libs="-latlas -lcblas"
  • Using ATLAS in Fedora:
    • install the package atlas-devel.x86_64,
    • run ./configure --with-blas-libs="-L/usr/lib64/atlas -lsatlas".
  • Using Accelerate Framework on OS-X:
    • run ./configure --with-blas-libs="-framework Accelerate".
  • Using BLIS
    • Configure BLIS with, say, ./configure --enable-cblas auto.
    • run fflas/ffpack's ./configure --with-blas-libs="-lblis -lpthread".

Then, simply run make; make autotune; make install; make check Note that running the autotune target is optional but recommended as it will tune up the thresholds of various algorithms to your specific target host. make check is also optional but recommended as a sanity check.

see INSTALL for further details.

Homebrew install on Mac OSX

Homebrew bottles for fflas-ffpack and givaro are made available by Macaulay2's tap. You can install them with the following steps:

brew tap Macaulay2/tap
brew install givaro
brew install fflas-ffpack

KNOWN BUGS

AVAILABILITY

from linbox-team/fflas-ffpack

AUTHORS

The FFLAS-FFPACK group (see AUTHORS file for a list of contributors).

Citing FFLAS-FFPACK

If your research depends on the FFLAS-FFPACK library, please consider citing the project as

@manual{fflas-ffpack,
title = {{FFLAS-FFPACK}: {F}inite {F}ield {L}inear {A}lgebra {S}ubroutines / {P}ackage},
author = {The FFLAS-FFPACK group},
edition = {v2.4.1},
year = {2019},
note = {\url{http://github.com/linbox-team/fflas-ffpack}}
}

Or you may also consider citing the related research article:

@article{DGP:2008,
author = {Jean-Guillaume Dumas and Pascal Giorgi and Cl{\'e}ment Pernet},
title = {Dense Linear Algebra over Word-Size Prime Fields: the FFLAS and FFPACK Packages},
journal = {ACM Trans. on Mathematical Software (TOMS)},
volume = {35},
number = {3},
year = {2008},
issn = {0098-3500},
pages = {1--42},
doi = {10.1145/1391989.1391992},
publisher = {ACM Press},
address = {New York, NY, USA}
}

Contact and discussion

For any bug report, feature or help request, please file an issue on github's issue tracker.

Please address any other request, suggestion and comment to the discussion group ffpack-devel.

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].