module type Univariate_polynomial_sig = sig type 'a polynomial type t include Ring with type t := t external to_ring_elt : _ polynomial -> t = "%identity" val create : (module Ring with type t = 't) -> ('t * int) list -> 't polynomial val degree : _ polynomial -> Signed.Long.t val get_coeff : 'coeff polynomial -> int -> 'coeff val eval : 'coeff polynomial -> 'coeff -> 'coeff val deriv : ?indeterminate:int -> _ polynomial -> _ polynomial val derivn : ?indeterminate:int -> _ polynomial -> int -> _ polynomial val fft : (module Finite_cyclic_group_sig with type t = 'coeff) -> 'coeff polynomial -> 'coeff polynomial Arrays.t end module Poly : Univariate_polynomial_sig