fact: Definition total_time_of_Zpoly {size : has_size Z} {p : reified size} : has_total_time Z := fun min max => let '(p_int, ln_coef) := integrate_poly p in let f_int := if Qeq_bool ln_coef 0 then fun x => eval_poly_cfrac p_int x else fun x => Qround_cfrac (eval_poly_cfrac p_int x + ln_coef * Qln_cfrac x) in if (max - min <=? 25)%Z then ∑_{i=min}^{max} (size i) else f_int max - f_int min.
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