open Printf;; let rec ler_floats n acc = if n >= 0 then ler_floats (n-1) ((read_float ()) :: acc) else List.rev acc;; let grau = read_int () ;; let x = read_float () ;; let coefs = ler_floats grau [];; let rec horner_list gr x lv acc = match lv with [] -> acc | el::li -> horner_list gr x li (x *. acc +. el) ;; let res = horner_list grau x coefs 0.0 in (printf "%.3f\n" res);; (* versão com calculo a medida da leitura dos coeficientes *) (* let rec horner gr x n pi = if n> gr then pi else let v = read_float () in let p = x*.pi +. v in horner gr x (n+1) p;; let p_x= horner grau x 0 0.0 in (printf "%.3f\n" p_x);; *)