2026-09-24 14:08:32 -06:00
|
|
|
|
// input_types
|
|
|
|
|
|
/// @{
|
|
|
|
|
|
|
|
|
|
|
|
/// @example input_types/integral_types.cpp integral_types.cpp
|
|
|
|
|
|
/// @brief an example of `int` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example input_types/extended_types.cpp extended_types.cpp
|
|
|
|
|
|
/// @brief an example of `int128_t` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example input_types/modint.cpp modint.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::modint` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example input_types/bitstring.cpp bitstring.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::bitstring` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example input_types/keyword.cpp keyword.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::keyword` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example input_types/xor_wrapper.cpp xor_wrapper.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of `dpf::xor_wrapper` as an input
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @example input_types/custom.cpp custom.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of a custom input type
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// output_types
|
|
|
|
|
|
/// @{
|
|
|
|
|
|
|
|
|
|
|
|
/// @example output_types/integral_types.cpp integral_types.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of an integer output
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @example output_types/extended_types.cpp extended_types.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of a 128-bit integer output
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @example output_types/bit.cpp bit.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of `dpf::bit` as an output
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @example output_types/bitstring.cpp bitstring.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of `dpf::bitstring` as an output
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @example output_types/wildcard.cpp wildcard.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of `dpf::wildcard` as an output
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @example output_types/xor_wrapper.cpp xor_wrapper.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of `dpf::xor_wrapper` as an output
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @example output_types/custom.cpp custom.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of a custom output type
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
|
|
|
|
|
/// @}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// evaluations
|
|
|
|
|
|
/// @{
|
|
|
|
|
|
|
|
|
|
|
|
/// @example evaluation/eval_point.cpp eval_point.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::eval_point` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example evaluation/eval_interval.cpp eval_interval.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::eval_interval` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example evaluation/eval_full.cpp eval_full.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::eval_full` in use
|
|
|
|
|
|
|
2026-09-26 23:51:06 -06:00
|
|
|
|
/// @example evaluation/defer_eval.cpp defer_eval.cpp
|
|
|
|
|
|
/// @brief pre-assign `defer_eval_interval` then rotate after input assign
|
|
|
|
|
|
|
2026-09-24 14:08:32 -06:00
|
|
|
|
/// @example evaluation/eval_sequence.cpp eval_sequence.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::eval_sequence` in use
|
|
|
|
|
|
|
2026-09-26 23:51:06 -06:00
|
|
|
|
/// @example evaluation/eval_inner_product.cpp eval_inner_product.cpp
|
|
|
|
|
|
/// @brief fused inner product: scalar range, full domain, paired leaf outputs, ancestor slot, recipe
|
|
|
|
|
|
|
2026-09-24 14:08:32 -06:00
|
|
|
|
/// @example evaluation/memoizers.cpp memoizers.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::memoizers` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example evaluation/output_buffers.cpp output_buffers.cpp
|
2026-09-24 20:44:07 -06:00
|
|
|
|
/// @brief an example of `dpf::output_buffer` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example evaluation/buffered_prg.cpp buffered_prg.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::randomness::buffered_prg` and `lane_table`
|
2026-09-24 14:08:32 -06:00
|
|
|
|
|
2026-09-26 23:51:06 -06:00
|
|
|
|
/// @example evaluation/eval_dpf3_point.cpp eval_dpf3_point.cpp
|
|
|
|
|
|
/// @brief three-evaluator point DPF (`make_dpf3` / Shamir open)
|
|
|
|
|
|
|
|
|
|
|
|
/// @example evaluation/eval_dpf3_doerner_shelat.cpp eval_dpf3_doerner_shelat.cpp
|
|
|
|
|
|
/// @brief dual-spine Doerner–Shelat (2,3) keygen vs dealer `make_dpf3`
|
|
|
|
|
|
|
|
|
|
|
|
/// @example evaluation/eval_dpf3_cmp_ic.cpp eval_dpf3_cmp_ic.cpp
|
|
|
|
|
|
/// @brief three-party comparison and interval-containment keys
|
|
|
|
|
|
|
|
|
|
|
|
/// @}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// @{
|
|
|
|
|
|
|
|
|
|
|
|
/// @example grotto/jet_and_ring.cpp jet_and_ring.cpp
|
|
|
|
|
|
/// @brief binomial jet readouts and an exact Z/2^n to Z/M ring switch
|
|
|
|
|
|
|
|
|
|
|
|
/// @example grotto/repr_and_twist.cpp repr_and_twist.cpp
|
|
|
|
|
|
/// @brief Fibonacci / geometric representation shift and twisted monomials
|
|
|
|
|
|
|
2026-09-28 05:59:19 -06:00
|
|
|
|
/// @example grotto/dwt_lut.cpp dwt_lut.cpp
|
|
|
|
|
|
/// @brief Haar and bior(5,3) compressed lookup tables
|
|
|
|
|
|
|
2026-09-24 14:08:32 -06:00
|
|
|
|
/// @}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// @{
|
|
|
|
|
|
|
|
|
|
|
|
/// @example iterables/setbit_index_iterable.cpp setbit_index_iterable.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::setbit_index_iterable` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example iterables/advice_bit_iterable.cpp advice_bit_iterable.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::advice_bit_iterable` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example iterables/parallel_bit_iterable.cpp parallel_bit_iterable.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::parallel_bit_iterable` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example iterables/subinterval_iterable.cpp subinterval_iterable.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::subinterval_iterable` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example iterables/subsequence_iterable.cpp subsequence_iterable.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::subsequence_iterable` in use
|
|
|
|
|
|
|
|
|
|
|
|
/// @example iterables/zip_iterable.cpp zip_iterable.cpp
|
|
|
|
|
|
/// @brief an example of `dpf::zip_iterable` in use
|
|
|
|
|
|
|
2026-09-26 18:34:05 -06:00
|
|
|
|
/// @}
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-09-26 23:51:06 -06:00
|
|
|
|
|
|
|
|
|
|
// applications
|
2026-09-26 18:34:05 -06:00
|
|
|
|
/// @{
|
|
|
|
|
|
|
2026-09-26 23:51:06 -06:00
|
|
|
|
/// @example applications/duoram3.cpp duoram3.cpp
|
|
|
|
|
|
/// @brief 3-party Duoram read and update, the DPF step
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/subleq.cpp subleq.cpp
|
|
|
|
|
|
/// @brief MPC SUBLEQ: prepaid unit reads, scaled write, path branch
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/bitmore.cpp bitmore.cpp
|
|
|
|
|
|
/// @brief BitMore query for 2^L servers
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/keyword_pir.cpp keyword_pir.cpp
|
|
|
|
|
|
/// @brief two-server keyword PIR
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/prio.cpp prio.cpp
|
|
|
|
|
|
/// @brief Prio histogram and a Poplar prefix walk
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/idpf_agg.cpp idpf_agg.cpp
|
|
|
|
|
|
/// @brief I-DPF max and k-th order statistic via eval_until
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/llama.cpp llama.cpp
|
|
|
|
|
|
/// @brief LLAMA comparison and degree-0 spline gates
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/pika.cpp pika.cpp
|
|
|
|
|
|
/// @brief Pika function lookup
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/prac.cpp prac.cpp
|
|
|
|
|
|
/// @brief PRAC binary search (one IDPF) and a wide heap leaf
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/express.cpp express.cpp
|
|
|
|
|
|
/// @brief Express mailbox write and one-hot audit
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/splinter.cpp splinter.cpp
|
|
|
|
|
|
/// @brief Splinter private query on public data
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/mastic.cpp mastic.cpp
|
|
|
|
|
|
/// @brief Mastic weighted heavy-hitter prefixes
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/waldo.cpp waldo.cpp
|
|
|
|
|
|
/// @brief Waldo append-only time series and a private-threshold aggregate
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/sabre.cpp sabre.cpp
|
|
|
|
|
|
/// @brief Sabre mailbox write with a verifiable-DPF audit
|
|
|
|
|
|
|
2026-09-28 05:59:19 -06:00
|
|
|
|
/// @example protocol/compose_schedule.cpp compose_schedule.cpp
|
|
|
|
|
|
/// @brief Composer schedules: fused audit, early-stop, prefixes, RSS, ABY scale
|
|
|
|
|
|
|
2026-09-26 23:51:06 -06:00
|
|
|
|
/// @example applications/ledger23.cpp ledger23.cpp
|
|
|
|
|
|
/// @brief (2,3) ledger append with a verified point key
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/psi.cpp psi.cpp
|
|
|
|
|
|
/// @brief private set intersection via a DPF oblivious PRF
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/range_count.cpp range_count.cpp
|
|
|
|
|
|
/// @brief range count of secret values on a public interval
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/floram.cpp floram.cpp
|
|
|
|
|
|
/// @brief Floram read and write from address shares
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/pir3.cpp pir3.cpp
|
|
|
|
|
|
/// @brief three-server index PIR on a (2,3) point key
|
|
|
|
|
|
|
|
|
|
|
|
/// @example applications/it_pir3.cpp it_pir3.cpp
|
|
|
|
|
|
/// @brief three-server index PIR on the information-theoretic DPF
|
2026-09-26 18:34:05 -06:00
|
|
|
|
|
|
|
|
|
|
/// @}
|
|
|
|
|
|
|
2026-09-26 23:51:06 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// @{
|
|
|
|
|
|
|
|
|
|
|
|
/// @example mwe/ppvc.cpp ppvc.cpp
|
|
|
|
|
|
/// @brief a point-programmable vector commitment
|
|
|
|
|
|
|
2026-09-28 05:59:19 -06:00
|
|
|
|
/// @example mwe/shamir.cpp shamir.cpp
|
|
|
|
|
|
/// @brief (K,N) Shamir, with (2,3) as the slope specialization
|
|
|
|
|
|
|
2026-09-26 23:51:06 -06:00
|
|
|
|
/// @}
|