newton_full(funcao, var, x0, iter, eps) := block( [xn, s, numer], numer: true, s: diff(funcao, var), xn: x0, for i: 1 thru iter do xn: xn - substitute(xn, var, funcao) / substitute(xn, var, s), if abs(xn) < eps then return(xn), xn)