Jules is a statistical computing library that aims to provide R-like experience in modern C++.
Currently, it focus on a versatile, yet easy-to-use multi-dimensional array implementation with some common statistical functionalities.
A implementation of data frames and their common operations inspired by Tidyverse is also intended, but it will probably require many features to come to C++ in the next years.
- C++17 compiler
- Tested on GCC 7.4.0 and Clang 7.0.0
- debug_assert
- range-v3 (soon to be superseded by C++20 Ranges)
- CBLAS (optional)
- Catch (testing)
If you intend to use BLAS optimized functions, make sure CBLAS is installed.
The recommended installation of the library is including it as a submodule of your Git project.
In your project, do
$ git submodule add https://github.com/verri/jules.git external/jules
Download the latest release and unzip it.
For Arch Linux users, install the AUR package jules-git via pacaur, makepkg, or any other method of your preference.
System-wide installation is recommended only if you are sure about what you doing.
Clone the repository.
$ git clone https://github.com/verri/jules.git
$ cd jules
Install via CMake 3.0+.
$ cmake -H. -Bbuild
$ cmake --build build --target install
Jules
is a header-only library, so you just need to instruct the compiler its location.
If you installed the library as a submodule, include the following line in your CMakeLists.txt
add_subdirectory(external/jules)
target_link_libraries(my-target PRIVATE jules)
If you installed system-wide, use
find_package(Cool REQUIRED)
target_link_libraries(my-target PRIVATE ${Cool_LIBRARY})
If using BLAS, make sure to link to your target.
find_package(BLAS REQUIRED)
target_link_libraries(my-target PRIVATE ${BLAS_LIBRARIES})
You can directly specify the compiler flags:
CXXFLAGS="-std=c++17 -isystem/path/to/release/include"
If using BLAS, make sure to link it using -lblas
or -lcblas
, depending on your system.
Generated with standardese
here (not up-to-date, since standardese
is not
progressing very well).
Soon, we should provide a cheatsheet with a summary of functionalities. In the meantime, the examples in the test folder should suffice.
This project is supported by FAPESP as part of the project "High level data classification based on complex network applied to invariant pattern recognition" (2013/25876-6).