An open API service indexing awesome lists of open source software.

https://github.com/shibatch/sleef

SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT
https://github.com/shibatch/sleef

aarch64 avx2 avx512 cuda elementary-functions fft fourier-transform fourier-transform-library math-library powerpc quadruple-precision s390x simd sse2 vector-math vectorization vsx

Last synced: 3 months ago
JSON representation

SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT

Awesome Lists containing this project

README

        

== SLEEF - SIMD Library for Evaluating Elementary Functions

image:http://img.shields.io/badge/DOI-10.1109/TPDS.2019.2960333-blue.svg[TPDS, link=https://ieeexplore.ieee.org/document/8936472]

SLEEF is a library that implements vectorized versions of C standard
math functions. This library also includes DFT subroutines.

* *Web Page:* https://sleef.org/
* *Sources:* https://github.com/shibatch/sleef

== Supported environment

=== Test matrix

The following table summarizes currently supported OSes and compilers.

[cols="1,1,1,1,1,1,1,1,1"]
|===
| 2+|Linux 4+|Windows 2+|Mac
| |gcc |llvm |MSVC |Clang |MinGW |Cygwin |Clang |GCC
|x86_64 |✔ |✔ |✔ |✔ |✔ |❓ |✔ |❓
|RISC-V 64 |✔ |❓ |N/A |N/A |N/A |N/A |N/A |N/A
|AArch64 |✔ |✔ |❌ |❌ |❌ |❌ |✔ |❓
|POWER |✔ |❓ |N/A |N/A |N/A |N/A |N/A |N/A
|S390X |✔ |❓ |N/A |N/A |N/A |N/A |N/A |N/A
|===

✔ : Tested on CI, ❓ : Not tested, ❌ : Not supported

== How to build SLEEF

The library itself does not have any additional dependency.

In order to build SLEEF, you need CMake 3.18+, and C and C++ compilers of the same version.
It is also recommended to have the following tools.

* Ninja
* Git

https://github.com/shibatch/tlfloat[TLFloat] is automatically downloaded if no suitable version is found on your system.

Some tests require:

* libssl and libcrypto, that can be provided by installing openssl.
* libm, libgmp and libmpfr
* libfftw.

The build procedure is as follows.

[arabic]
. Check out the source code from our GitHub repository

....
git clone https://github.com/shibatch/sleef
....

[arabic, start=2]
. Make a separate directory to create an out-of-source build

....
cd sleef && mkdir build
....

[arabic, start=3]
. Run cmake to configure the project

....
cmake -S . -B build
....

By default this will generate shared libraries. In order to generate
static libraries, pass option `-DBUILD_SHARED_LIBS=OFF`.

For more verbose output add option `-DSLEEF_SHOW_CONFIG=ON`.

[arabic, start=4]
. Run make to build the project

....
cmake --build build -j --clean-first
....

[arabic, start=5]
. Run tests using ctests

....
ctest --test-dir build -j
....

For more detailed build instructions please refer to
https://sleef.org/compile.xhtml#preliminaries[our web page].

== How to cross-compile SLEEF

For more detailed please refer to
https://sleef.org/compile.xhtml#cross[cross-compile SLEEF]

== Install SLEEF

=== From source

Assuming following instructions were followed.

[arabic, start=6]
. Install to specified directory ``

....
cmake --install build --prefix=
....

=== Uninstall

In order to uninstall SLEEF library and headers run

....
sudo xargs rm -v < build/install_manifest.txt
....

== License

The software is distributed under the Boost Software License, Version
1.0. See accompanying file link:./LICENSE.txt[LICENSE.txt] or copy at
http://www.boost.org/LICENSE_1_0.txt. Contributions to this project are
accepted under the same license.

SLEEF project aims to serve society as a whole, not just specific
companies or organizations. We charge a fee for maintaining patches
that are convenient only for your company.

The fact that our software is released under an open source license
only means that you can use the current and older versions of the
software for free. If you want us to continue maintaining our
software, you need to financially support our project. Please see
https://github.com/shibatch/nofreelunch?tab=coc-ov-file[CODE_OF_CONDUCT.md].

Copyright © 2010-2025 SLEEF Project, Naoki Shibata and contributors.