Single-file utilities for C++, similar in spirit to github.com/nothings/stb.
convert/angles.hpp Degrees to radians and vice versa.
convert/coordinates.hpp Cartesian coordinates to spherical coordinates and vice versa.
distributions/normal_multivariate_distribution.hpp
N-dimensional multivariate normal distribution, compliant with <random>
.
distributions/uniform_multivariate_distribution.hpp
N-dimensional multivariate uniform distribution, compliant with <random>
.
distributions/uniform_spherical_distribution.hpp
Uniform distribution on the 2-sphere/hemisphere, compliant with <random>
.
distributions/von_mises_fisher_distribution.hpp
Von-Mises Fisher distribution on the 2-sphere/hemisphere, compliant with <random>
.
bitset_enum.hpp
Declare struct is_bitset_enum<your_enum> { static const bool enable = true; }
to enable bitset operations on your_enum
.
constexpr_for.hpp Compile-time for loop as well as its variants for variadic templates and tuples.
enable_dedicated_gpu.hpp Enables AMD and NVIDIA GPUs on laptops or other systems which default to onboard graphics. Include once in main.
indexing.hpp Ravels and unravels N-dimensional indices to 1-dimensional and vice versa, similar to numpy ravel_multi_index and unravel_index.
interpolation.hpp Linear interpolation (LERP) and spherical linear interpolation (SLERP).
partitioner.hpp Partitions an N-dimensional domain to a hyperrectangular grid based on communicator rank and size. Intended for use with MPI.
permute_for.hpp
Permutes the loop for(auto i = start, i < end; i+= step)
over N dimensions.
prime_factorization.hpp Computes the prime factors of the given integer. Useful for partitioning N-dimensional data to a number of threads.
random_number_generator.hpp
Encapsulates <random>
boilerplate. Specify a distribution and go.
singleton.hpp A non-copyable, non-movable singleton.
Additions are very welcome. Just create a merge request to the develop branch.