├── doc
├── libdpf.bib
├── assets
│ ├── libdpf.psd
│ ├── libdpf-logo.png
│ ├── libdpf-tagline.png
│ └── libdpf-wordmark.png
├── pages
│ ├── basics.md
│ ├── iterables.md
│ ├── output_types.md
│ └── introduction.md
├── namespaces.dox
├── footer.html
└── directories.dox
├── test
├── .gitignore
├── tests
│ ├── all_test.cpp
│ ├── setbit_index_iterable_test.cpp
│ ├── advice_bit_iterable_test.cpp
│ └── helpers
│ │ ├── custom_output_type_large_xor.hpp
│ │ └── custom_output_type_small.hpp
└── README.md
├── BUGS.md
├── CHANGES.md
├── .deepsource.toml
├── examples
├── input_types
│ ├── custom.cpp
│ ├── xor_wrapper.cpp
│ ├── extended_types.cpp
│ ├── integral_types.cpp
│ ├── modint.cpp
│ ├── keyword.cpp
│ ├── keyword_int_map.cpp
│ └── bitstring.cpp
├── output_types
│ ├── bit.cpp
│ ├── custom.cpp
│ ├── bitstring.cpp
│ ├── xor_wrapper.cpp
│ ├── extended_types.cpp
│ ├── integral_types.cpp
│ └── wildcard.cpp
├── iterables
│ ├── zip_iterable.cpp
│ ├── parallel_bit_iterable.cpp
│ ├── setbit_index_iterable.cpp
│ ├── subinterval_iterable.cpp
│ ├── subsequence_iterable.cpp
│ └── advice_bit_iterable.cpp
└── evaluation
│ ├── output_buffers.cpp
│ ├── eval_point.cpp
│ ├── eval_full.cpp
│ └── eval_interval.cpp
├── TODO.md
├── CPPLINT.cfg
├── include
├── dpf
│ ├── literals.hpp
│ ├── sequence_utils.hpp
│ ├── prg_dummy.hpp
│ └── prg.hpp
├── grotto
│ ├── gadgets
│ │ ├── misc
│ │ │ ├── sinc.hpp
│ │ │ ├── gamma.hpp
│ │ │ ├── expint.hpp
│ │ │ ├── lgamma.hpp
│ │ │ ├── reimann_zeta.hpp
│ │ │ ├── i0.hpp
│ │ │ ├── erf.hpp
│ │ │ ├── erfc.hpp
│ │ │ └── entropy.hpp
│ │ ├── binary
│ │ │ ├── bit.hpp
│ │ │ ├── clrsb.hpp
│ │ │ ├── prefix.hpp
│ │ │ ├── bit_ceil.hpp
│ │ │ ├── bit_floor.hpp
│ │ │ ├── bit_width.hpp
│ │ │ ├── countl_one.hpp
│ │ │ ├── sgn.hpp
│ │ │ └── countl_zero.hpp
│ │ ├── exponential.hpp
│ │ ├── quantile
│ │ │ ├── gamma.hpp
│ │ │ ├── cauchy.hpp
│ │ │ ├── pareto.hpp
│ │ │ ├── laplace.hpp
│ │ │ ├── poisson.hpp
│ │ │ ├── gaussian.hpp
│ │ │ ├── logistic.hpp
│ │ │ ├── powerlaw.hpp
│ │ │ ├── geometric.hpp
│ │ │ ├── lognormal.hpp
│ │ │ ├── chisquared.hpp
│ │ │ ├── standard_t.hpp
│ │ │ └── exponential.hpp
│ │ ├── logarithm
│ │ │ ├── logn.hpp
│ │ │ ├── logstar.hpp
│ │ │ ├── lg.hpp
│ │ │ ├── ln.hpp
│ │ │ ├── log10.hpp
│ │ │ ├── ilog16.hpp
│ │ │ ├── ilog10.hpp
│ │ │ └── ilog256.hpp
│ │ ├── decimal
│ │ │ ├── dec_ceil.hpp
│ │ │ ├── dec_floor.hpp
│ │ │ ├── dec_width.hpp
│ │ │ └── has_single_digit.hpp
│ │ ├── elementary
│ │ │ ├── pmone.hpp
│ │ │ ├── ternary.hpp
│ │ │ ├── identity.hpp
│ │ │ ├── zero.hpp
│ │ │ ├── nonzero.hpp
│ │ │ ├── negative.hpp
│ │ │ ├── positive.hpp
│ │ │ ├── nonnegative.hpp
│ │ │ ├── nonpositive.hpp
│ │ │ ├── rect.hpp
│ │ │ ├── abs.hpp
│ │ │ ├── lt.hpp
│ │ │ ├── geq.hpp
│ │ │ ├── gt.hpp
│ │ │ ├── neq.hpp
│ │ │ ├── eq.hpp
│ │ │ ├── leq.hpp
│ │ │ └── clip.hpp
│ │ ├── decimal.hpp
│ │ ├── powers.hpp
│ │ ├── activations
│ │ │ ├── relu.hpp
│ │ │ ├── silu.hpp
│ │ │ ├── sigmoid.hpp
│ │ │ ├── softsign.hpp
│ │ │ ├── tanhexp.hpp
│ │ │ ├── tanhshrink.hpp
│ │ │ ├── mish.hpp
│ │ │ ├── serf.hpp
│ │ │ ├── logsigmoid.hpp
│ │ │ ├── lecun_tanh.hpp
│ │ │ ├── gelu.hpp
│ │ │ ├── squared_relu.hpp
│ │ │ ├── hardtanh.hpp
│ │ │ ├── one_minus_sigmoid.hpp
│ │ │ ├── hardswish.hpp
│ │ │ ├── elish.hpp
│ │ │ ├── hardsigmoid.hpp
│ │ │ ├── relu6.hpp
│ │ │ ├── hardelish.hpp
│ │ │ ├── elu.hpp
│ │ │ ├── softminus.hpp
│ │ │ ├── celu.hpp
│ │ │ ├── softplus.hpp
│ │ │ └── hardshrink.hpp
│ │ ├── binary.hpp
│ │ ├── misc.hpp
│ │ ├── logarithm.hpp
│ │ ├── hyperbolic.hpp
│ │ ├── quantile.hpp
│ │ ├── trigonometric.hpp
│ │ ├── hyperbolic
│ │ │ ├── tanh.hpp
│ │ │ ├── sech.hpp
│ │ │ ├── asinh.hpp
│ │ │ ├── atanh.hpp
│ │ │ ├── cosh.hpp
│ │ │ ├── asech.hpp
│ │ │ ├── acoth.hpp
│ │ │ ├── acosh.hpp
│ │ │ ├── sinh.hpp
│ │ │ ├── csch.hpp
│ │ │ ├── acsch.hpp
│ │ │ └── coth.hpp
│ │ ├── trigonometric
│ │ │ ├── atan.hpp
│ │ │ ├── cos.hpp
│ │ │ ├── sin.hpp
│ │ │ ├── deg2rad.hpp
│ │ │ ├── acot.hpp
│ │ │ ├── rad2deg.hpp
│ │ │ ├── acos.hpp
│ │ │ ├── asin.hpp
│ │ │ ├── tan.hpp
│ │ │ ├── sec.hpp
│ │ │ ├── csc.hpp
│ │ │ ├── acsc.hpp
│ │ │ ├── asec.hpp
│ │ │ └── cot.hpp
│ │ ├── powers
│ │ │ ├── cbrt.hpp
│ │ │ ├── sqrt.hpp
│ │ │ ├── qtrt.hpp
│ │ │ ├── icbrt.hpp
│ │ │ ├── isqrt.hpp
│ │ │ ├── iqtrt.hpp
│ │ │ └── reciprocal.hpp
│ │ ├── elementary.hpp
│ │ └── exponential
│ │ │ ├── exp.hpp
│ │ │ ├── exp2.hpp
│ │ │ └── exp10.hpp
│ └── gadgets.hpp
└── grotto.hpp
├── AUTHORS.md
├── .gitignore
├── .gitmodules
├── Makefile
└── thirdparty
└── bsd
├── nlist.h
└── sys
└── poll.h
/doc/libdpf.bib:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 |
--------------------------------------------------------------------------------
/BUGS.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/CHANGES.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.deepsource.toml:
--------------------------------------------------------------------------------
1 | version = 1
2 |
3 | [[analyzers]]
4 | name = "cxx"
--------------------------------------------------------------------------------
/doc/assets/libdpf.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DigitalLibertiesLab/libdpf/HEAD/doc/assets/libdpf.psd
--------------------------------------------------------------------------------
/doc/assets/libdpf-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DigitalLibertiesLab/libdpf/HEAD/doc/assets/libdpf-logo.png
--------------------------------------------------------------------------------
/doc/assets/libdpf-tagline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DigitalLibertiesLab/libdpf/HEAD/doc/assets/libdpf-tagline.png
--------------------------------------------------------------------------------
/doc/assets/libdpf-wordmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DigitalLibertiesLab/libdpf/HEAD/doc/assets/libdpf-wordmark.png
--------------------------------------------------------------------------------
/examples/input_types/custom.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/output_types/bit.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/output_types/custom.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/input_types/xor_wrapper.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/iterables/zip_iterable.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/output_types/bitstring.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/output_types/xor_wrapper.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/evaluation/output_buffers.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/input_types/extended_types.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/output_types/extended_types.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/doc/pages/basics.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Point functions {#point_functions}
4 |
5 | # DPF Trees {#dpf_trees}
6 |
--------------------------------------------------------------------------------
/examples/iterables/parallel_bit_iterable.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/iterables/setbit_index_iterable.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/iterables/subinterval_iterable.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/examples/iterables/subsequence_iterable.cpp:
--------------------------------------------------------------------------------
1 | #include "dpf.hpp"
2 |
3 | int main(int argc, char * argv[])
4 | {
5 | return 0;
6 | }
--------------------------------------------------------------------------------
/TODO.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | - foo
4 |
5 | - bar
--------------------------------------------------------------------------------
/doc/pages/iterables.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # dpf::setbit_index_iterable
4 |
5 | # dpf::subsequence_iterable
6 |
7 | # dpf::subinterval_iterable
8 |
9 | # dpf::zip_iterable
10 |
11 | # dpf::parallel_bit_iterable
12 |
13 | # dpf::advice_bit_iterable
--------------------------------------------------------------------------------
/examples/output_types/integral_types.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "dpf.hpp"
4 |
5 | int main(int argc, char * argv[])
6 | {
7 | using value_type = int;
8 | using output = bool;
9 |
10 | auto [dpf0, dpf1] = dpf::make_dpf(12);
11 |
12 | std::cout << (res0 ^ res1) << "\n";
13 | std::cout << values[2] << "\n";
14 | return 0;
15 | }
--------------------------------------------------------------------------------
/CPPLINT.cfg:
--------------------------------------------------------------------------------
1 | # Don't search for additional CPPLINT.cfg in parent directories.
2 | set noparent
3 |
4 | # include project root in path construction (for header guards)
5 | root=..
6 |
7 | # { should almost always be on a new line
8 | filter=-whitespace/braces
9 |
10 | # Scope specifiers are indent +2 spaces
11 | filter=-whitespace/indent
12 |
13 | # An else should appear on the same line as the preceding }
14 | filter=-whitespace/newline
--------------------------------------------------------------------------------
/include/dpf/literals.hpp:
--------------------------------------------------------------------------------
1 | #ifndef LIBDPF_INCLUDE_DPF_LITERALS_HPP__
2 | #define LIBDPF_INCLUDE_DPF_LITERALS_HPP__
3 |
4 | namespace dpf
5 | {
6 |
7 | namespace literals
8 | {
9 |
10 | namespace modints{} using namespace dpf::literals::modints;
11 | namespace xints{} using namespace dpf::literals::xints;
12 | namespace bitstrings{} using namespace dpf::literals::bitstrings;
13 |
14 | } // namespace literals
15 |
16 | } // namespace dpf
17 |
18 | #endif // LIBDPF_INCLUDE_DPF_LITERALS_HPP__
19 |
--------------------------------------------------------------------------------
/AUTHORS.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | - Ryan Henry
4 |
5 |
6 |
7 | - Christopher Jiang
8 |
9 |
10 |
11 | - Kyle Storrier
12 |
13 |
14 |
15 | - Adithya Vadapalli
16 |
17 |
--------------------------------------------------------------------------------
/include/dpf/sequence_utils.hpp:
--------------------------------------------------------------------------------
1 | #ifndef LIBDPF_INCLUDE_DPF_SEQUENCE_UTILS_HPP__
2 | #define LIBDPF_INCLUDE_DPF_SEQUENCE_UTILS_HPP__
3 |
4 | namespace dpf
5 | {
6 |
7 | struct return_type_tag_{};
8 |
9 | struct return_entire_node_tag_ final : public return_type_tag_ {};
10 | // static constexpr auto return_entire_node_tag = return_entire_node_tag_{};
11 |
12 | struct return_output_only_tag_ final : public return_type_tag_ {};
13 | // static constexpr auto return_output_only_tag = return_output_only_tag_{};
14 |
15 | } // namespace dpf
16 |
17 | #endif // LIBDPF_INCLUDE_DPF_SEQUENCE_UTILS_HPP__
18 |
--------------------------------------------------------------------------------
/doc/pages/output_types.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Integer scalar types
4 |
5 | # Extended-precision integer scalar types
6 |
7 | # dpf::bit
8 |
9 | # dpf::bitstring
10 |
11 | # dpf::wildcard
12 | A `dpf::wildcard` is a struct template with a single parameter
13 | `T`, which must be a trivially copyable type (as indicated by
14 | `std::is_trivially_copyable`). It is used as a placeholder
15 | for an instance of type `T`, which can be assigned later. Its
16 | intended to wrap an output types of a DPF.
17 |
18 |
19 | # dpf::xor_wrapper
20 |
21 | # Custom output type requirements {#custom_output_types}
--------------------------------------------------------------------------------
/include/grotto/gadgets/misc/sinc.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/misc/sinc.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_SINC_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_SINC_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_SINC_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/binary/bit.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/binary/bt.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/misc/gamma.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/misc/gamma.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_GAMMA_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_GAMMA_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_GAMMA_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/misc/expint.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/misc/expint.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_EXPINT_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_EXPINT_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_EXPINT_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/misc/lgamma.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/misc/lgamma.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_LGAMMA_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_LGAMMA_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_LGAMMA_HPP__
24 |
--------------------------------------------------------------------------------
/examples/output_types/wildcard.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "dpf.hpp"
4 |
5 | int main(int argc, char * argv[])
6 | {
7 | using input_type = uint8_t;
8 | using output_type = dpf::wildcard_value;
9 | using dpf_type = dpf::utils::dpf_type_t;
10 | input_type x = 12;
11 | output_type y;
12 | auto [dpf0, dpf1] = dpf::make_dpf(x, y);
13 |
14 |
15 | std::array points{12, 34, 56, 78, 90};
16 | auto recipe0 = dpf::make_sequence_recipe(dpf0, std::begin(points), std::end(points));
17 | auto recipe1 = dpf::make_sequence_recipe(dpf1, std::begin(points), std::end(points));
18 | }
--------------------------------------------------------------------------------
/include/grotto/gadgets/exponential.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/exponential.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_EXPONENTIAL_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_EXPONENTIAL_HPP__
10 |
11 | #include "grotto/gadgets/exponential/exp.hpp"
12 | #include "grotto/gadgets/exponential/exp2.hpp"
13 | #include "grotto/gadgets/exponential/exp10.hpp"
14 |
15 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_EXPONENTIAL_HPP__
16 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/gamma.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/gamma.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GAMMA_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GAMMA_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GAMMA_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/logarithm/logn.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/logarithm/logn.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHMS_LOGN_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHMS_LOGN_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHMS_LOGN_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/cauchy.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/cauchy.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_CAUCHY_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_CAUCHY_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_CAUCHY_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/pareto.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/pareto.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_PARETO_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_PARETO_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_PARETO_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/decimal/dec_ceil.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/decimal/dec_ceil.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_CEIL_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_CEIL_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_CEIL_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/elementary/pmone.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/elementary/pmone.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_PMONE_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_PMONE_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_PMONE_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/laplace.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/laplace.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LAPLACE_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LAPLACE_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LAPLACE_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/poisson.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/poisson.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_POISSON_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_POISSON_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_POISSON_HPP__
24 |
--------------------------------------------------------------------------------
/test/tests/all_test.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | int main()
4 | {
5 | system("./bin/dpf_key_test");
6 | system("./bin/wildcard_test");
7 |
8 | system("./bin/eval_point_test");
9 | system("./bin/eval_interval_test");
10 | system("./bin/eval_full_test");
11 | system("./bin/eval_sequence_test");
12 |
13 | system("./bin/eval_point_multi_test");
14 | system("./bin/eval_interval_multi_test");
15 | system("./bin/eval_full_multi_test");
16 | system("./bin/eval_sequence_multi_test");
17 |
18 | system("./bin/advice_bit_iterable_test");
19 | system("./bin/parallel_bit_iterable_test");
20 | system("./bin/setbit_index_iterable_test");
21 |
22 | return 0;
23 | }
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/decimal/dec_floor.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/decimal/dec_floor.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_FLOOR_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_FLOOR_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_FLOOR_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/decimal/dec_width.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/decimal/dec_width.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_WIDTH_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_WIDTH_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_DEC_WIDTH_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/misc/reimann_zeta.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/misc/reimann_zeta.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_REIMANN_ZETA_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_REIMANN_ZETA_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_REIMANN_ZETA_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/gaussian.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/gaussian.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GAUSSIAN_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GAUSSIAN_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GAUSSIAN_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/logistic.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/logistic.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LOGISTIC_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LOGISTIC_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LOGISTIC_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/powerlaw.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/powerlaw.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_POWERLAW_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_POWERLAW_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_POWERLAW_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/elementary/ternary.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/elementary/ternary.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_TERNARY_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_TERNARY_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_TERNARY_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/logarithm/logstar.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/logarithm/logstar.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHMS_LOGSTAR_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHMS_LOGSTAR_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHMS_LOGSTAR_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/geometric.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/geometric.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GEOMETRIC_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GEOMETRIC_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_GEOMETRIC_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/lognormal.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/lognormal.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LOGNORMAL_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LOGNORMAL_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_LOGNORMAL_HPP__
24 |
--------------------------------------------------------------------------------
/doc/namespaces.dox:
--------------------------------------------------------------------------------
1 | /// @namespace dpf
2 | /// @brief the `::dpf` namespace
3 | /// @details all components of `libdpf++` live in this namespace (or one of
4 | /// the namespaces nested within it)
5 |
6 | /// @namespace dpf::utils
7 | /// @brief the `dpf::utils` namespace
8 | /// @details this is where all the utils go
9 |
10 | /// @namespace dpf::details
11 | /// @brief the `dpf::details` namespace`
12 | /// @details this is where details go
13 |
14 | /// @namespace dpf::internal
15 | /// @brief the `dpf::internal` namespace
16 | /// @details this is where internal stuff goes
17 |
18 | /// @namespace dpf::wildcards
19 | /// @brief the `dpf::wildcards` namespace
20 | /// @details this is where pre-define wildcards go
--------------------------------------------------------------------------------
/include/grotto/gadgets/binary/clrsb.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/binary/clrsb.hpp
2 | /// @author Ryan Henry
3 | /// @brief gadgetized form of `__builtin_clzll`
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_CLRSB_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_CLRSB_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_CLRSB_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/elementary/identity.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/elementary/identity.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_IDENTITY_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_IDENTITY_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_IDENTITY_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/misc/i0.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/misc/i0.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | // Modified Bessel function of the first kind, order 0
9 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_I0_HPP__
10 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_I0_HPP__
11 |
12 | namespace grotto
13 | {
14 |
15 | namespace gadgets
16 | {
17 |
18 |
19 |
20 | } // namespace gadgets
21 |
22 | } // namespace grotto
23 |
24 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_MISC_I0_HPP__
25 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/chisquared.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/chisquared.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_CHISQUARED_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_CHISQUARED_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_CHISQUARED_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/standard_t.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/standard_t.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_STANDARD_T_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_STANDARD_T_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_STANDARD_T_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/quantile/exponential.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/quatile/exponential.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_EXPONENTIAL_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_EXPONENTIAL_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_QUANTILE_EXPONENTIAL_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/binary/prefix.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/binary/prefix.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_PREFIX_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_PREFIX_HPP__
10 |
11 | #include "gt.hpp"
12 |
13 | namespace grotto
14 | {
15 |
16 | namespace gadgets
17 | {
18 |
19 |
20 |
21 | } // namespace gadgets
22 |
23 | } // namespace grotto
24 |
25 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_PREFIX_HPP__
26 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/decimal.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/decimal.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_HPP__
10 |
11 | #include "grotto/gadgets/decimal/dec_ceil.hpp"
12 | #include "grotto/gadgets/decimal/dec_floor.hpp"
13 | #include "grotto/gadgets/decimal/dec_width.hpp"
14 | #include "grotto/gadgets/decimal/has_single_digit.hpp"
15 |
16 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_HPP__
17 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/binary/bit_ceil.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/binary/bit_ceil.hpp
2 | /// @author Ryan Henry
3 | /// @brief gadgetized form of `std::bit_ceil`
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_CEIL_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_CEIL_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_CEIL_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/binary/bit_floor.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/binary/bit_floor.hpp
2 | /// @author Ryan Henry
3 | /// @brief gadgetized form of `std::bit_floor`
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_FLOOR_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_FLOOR_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_FLOOR_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/binary/bit_width.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/binary/bit_width.hpp
2 | /// @author Ryan Henry
3 | /// @brief gadgetized form of `std::bit_width`
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_WIDTH_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_WIDTH_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_BIT_WIDTH_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/binary/countl_one.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/binary/countl_one.hpp
2 | /// @author Ryan Henry
3 | /// @brief gadgetized form of `std::countl_one`
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_COUNTL_ONE_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_COUNTL_ONE_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_BINARY_COUNTL_ONE_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/decimal/has_single_digit.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/decimal/has_single_digit.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_HAS_SINGLE_DIGIT_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_HAS_SINGLE_DIGIT_HPP__
10 |
11 | namespace grotto
12 | {
13 |
14 | namespace gadgets
15 | {
16 |
17 |
18 |
19 | } // namespace gadgets
20 |
21 | } // namespace grotto
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_DECIMAL_HAS_SINGLE_DIGIT_HPP__
24 |
--------------------------------------------------------------------------------
/include/grotto.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto.hpp
2 | /// @author Ryan Henry
3 | /// @brief includes all headers needed for basic Grotto functionality
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_HPP__
10 |
11 | #include "grotto/fixedpoint.hpp"
12 |
13 | #include "grotto/gadget_hints.hpp"
14 |
15 | #include "grotto/gadgets.hpp"
16 |
17 | #include "grotto/hexfloat.hpp"
18 |
19 | #include "grotto/piecewise.hpp"
20 |
21 | #include "grotto/prefix_parity.hpp"
22 |
23 | #endif // LIBDPF_INCLUDE_GROTTO_HPP__
24 |
--------------------------------------------------------------------------------
/examples/evaluation/eval_point.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "dpf.hpp"
4 |
5 | int main(int arc, char * argv[])
6 | {
7 | uint16_t x = 42;
8 | auto [dpf0, dpf1] = dpf::make_dpf(x);
9 |
10 | auto res = dpf::eval_point(dpf0, x);
11 |
12 | std::cout << *dpf::eval_point(dpf0, 41) << " ^ " << *dpf::eval_point(dpf1, 41) << " = " << (*dpf::eval_point(dpf0, 41) ^ *dpf::eval_point(dpf1, 41)) << "\n"; // = 0
13 | std::cout << *dpf::eval_point(dpf0, x) << " ^ " << *dpf::eval_point(dpf1, x) << " = " << (*dpf::eval_point(dpf0, x) ^ *dpf::eval_point(dpf1, x)) << "\n"; // = 1
14 | std::cout << *dpf::eval_point(dpf0, 43) << " ^ " << *dpf::eval_point(dpf1, 43) << " = " << (*dpf::eval_point(dpf0, 43) ^ *dpf::eval_point(dpf1, 43)) << "\n"; // = 0
15 |
16 | return 0;
17 | }
--------------------------------------------------------------------------------
/include/grotto/gadgets/elementary/zero.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/elementary/zero.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_ZERO_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_ZERO_HPP__
10 |
11 | #include "eq.hpp"
12 |
13 | namespace grotto
14 | {
15 |
16 | namespace gadgets
17 | {
18 |
19 | static constexpr double eq_target_zero = 0;
20 | using zero = eq;
21 |
22 | } // namespace gadgets
23 |
24 | } // namespace grotto
25 |
26 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_ZERO_HPP__
27 |
--------------------------------------------------------------------------------
/examples/input_types/integral_types.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include "dpf.hpp"
4 |
5 | int main(int argc, char * argv[])
6 | {
7 | using value_type = int;
8 |
9 | std::vector values = {12, 34, 56, 78};
10 |
11 | auto [dpf0, dpf1] = dpf::make_dpf(value_type{56});
12 |
13 | int i=0;
14 | value_type res0{};
15 | auto [buf0, iter0] = dpf::eval_sequence(dpf0, std::begin(values), std::end(values));
16 | for (auto b : iter0) { if (b) res0 ^= values[i]; i++; }
17 |
18 | i=0;
19 | value_type res1{};
20 | auto [buf1, iter1] = dpf::eval_sequence(dpf1, std::begin(values), std::end(values));
21 | for (auto b : iter1) { if (b) res1 ^= values[i]; i++; }
22 |
23 | std::cout << (res0 ^ res1) << "\n";
24 | std::cout << values[2] << "\n";
25 | }
--------------------------------------------------------------------------------
/include/grotto/gadgets/elementary/nonzero.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/elementary/nonzero.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_NONZERO_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_NONZERO_HPP__
10 |
11 | #include "neq.hpp"
12 |
13 | namespace grotto
14 | {
15 |
16 | namespace gadgets
17 | {
18 |
19 | static constexpr double neq_target_zero = 0;
20 | using nonzero = neq;
21 |
22 | } // namespace gadgets
23 |
24 | } // namespace grotto
25 |
26 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_NONZERO_HPP__
27 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/elementary/negative.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/elementary/negative.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_NEGATIVE_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_NEGATIVE_HPP__
10 |
11 | #include "lt.hpp"
12 |
13 | namespace grotto
14 | {
15 |
16 | namespace gadgets
17 | {
18 |
19 | static constexpr double lt_target_zero = 0;
20 | using negative = lt;
21 |
22 | } // namespace gadgets
23 |
24 | } // namespace grotto
25 |
26 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_NEGATIVE_HPP__
27 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/elementary/positive.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/elementary/positive.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_POSITIVE_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_POSITIVE_HPP__
10 |
11 | #include "gt.hpp"
12 |
13 | namespace grotto
14 | {
15 |
16 | namespace gadgets
17 | {
18 |
19 | static constexpr double gt_target_zero = 0;
20 | using positive = gt;
21 |
22 | } // namespace gadgets
23 |
24 | } // namespace grotto
25 |
26 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_ELEMENTARY_POSITIVE_HPP__
27 |
--------------------------------------------------------------------------------
/include/grotto/gadgets/powers.hpp:
--------------------------------------------------------------------------------
1 | /// @file grotto/gadgets/powers.hpp
2 | /// @author Ryan Henry
3 | /// @brief
4 | /// @copyright Copyright (c) 2019-2023 Ryan Henry and others
5 | /// @license Released under a GNU General Public v2.0 (GPLv2) license;
6 | /// see [LICENSE.md](@ref GPLv2) for details.
7 |
8 | #ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_POWERS_HPP__
9 | #define LIBDPF_INCLUDE_GROTTO_GADGETS_POWERS_HPP__
10 |
11 | #include "grotto/gadgets/powers/cbrt.hpp"
12 | #include "grotto/gadgets/powers/icbrt.hpp"
13 | #include "grotto/gadgets/powers/iqtrt.hpp"
14 | #include "grotto/gadgets/powers/isqrt.hpp"
15 | #include "grotto/gadgets/powers/qtrt.hpp"
16 | #include "grotto/gadgets/powers/reciprocal.hpp"
17 | #include "grotto/gadgets/powers/sqrt.hpp"
18 |
19 | #endif // LIBDPF_INCLUDE_GROTTO_GADGETS_POWERS_HPP__
20 |
--------------------------------------------------------------------------------
/doc/footer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
15 |
16 |