fact: Definition generate_inputs {T} {_ : has_double_avg T} {_ : has_alloc T} (init : T) (size : has_size T) (allocation : Q) (max_size : Q) (max_points : N) (max_input : option T) : list T := let max_size := Qmin max_size (allocation / cutoff_elem_count) in let use_max_input := option_map (fun max_input => Qle_bool (size max_input) max_size) max_input in let max := match max_input, use_max_input with | Some max_input, Some true => max_input | _, _ => find_max double_T avg_T size max_size init end in piecewise_uniform_alloc adjusted_size_T allocation init max cutoff_elem_count max_points alloc_T.
imports: Coq.Strings.String Coq.Structures.Orders Coq.micromega.Lia Coq.Bool.Bool Coq.Sorting.Mergesort Coq.QArith.QArith Coq.QArith.Qround Coq.QArith.Qabs Coq.QArith.Qminmax Coq.NArith.NArith Coq.ZArith.ZArith Coq.Arith.Arith Coq.Lists.List PerformanceExperiments.LetIn