def naive_hensel(fct, F, start = 1, prec=10): '''given field F and polynomial fct over F((t)), find root of this polynomial in F((t)), using Hensel method with first value equal to start.''' Rt. = LaurentSeriesRing(F, default_prec=prec) RtQ = FractionField(Rt) RptW. = PolynomialRing(RtQ) RptWQ = FractionField(RptW) fct = RptWQ(fct) fct = RptW(numerator(fct)) #return(fct) #while fct not in RptW: # print(fct) # fct *= W alpha = (fct.derivative())(W = start) w0 = Rt(start) i = 1 while(i < prec): w0 = w0 - fct(W = w0)/alpha + O(t^(prec)) i += 1 return w0