>
 

> dicho:=proc(E,a,b,p)
local aa,bb,m,n,k,f;
f:=unapply(E,x);
n:=length(convert(floor((b+a)*0.5),string));
Digits:=p+n;
aa:=evalf(a);
bb:=evalf(b);
k:=0;
while evalf(bb-aa)>evalf(10^(-p)) do
 m:=(bb+aa)*0.5;
 if sign(evalf(f(m)))=sign(evalf(f(aa))) then aa:=m; else bb:=m; fi;
k:=k+1;
od;
return(evalf((bb+aa)*0.5),k);
end:
 

>
 

> dicho(x^2-2,1,2,300);
 

1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641572735013846230912297024924836055850737212644121497099935831413222665927505592755799950501152782060571470109559971605970274534596862014728517418640889198609552329230484308714321450839762603627995251407990, 997
 

> newt:=proc(E,uo,p,N)
local f,k,fp,n,un;
f:=unapply(E,x);
fp:=D(f);
k:=0;
n:=length(convert(floor(evalf(uo)),string));
Digits:=n+p;
un:=evalf(uo-f(uo)/fp(uo));
while evalf(abs(f(un)/fp(un)))>evalf(10^(-p)) and k<N do
  if fp(un)=0 then return("probleme"); fi;
un:=un-f(un)/fp(un);
k:=k+1;
od;
return(un,k);
end:
     
 

> newt(x^2-2,1,300,50);
 

1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641572735013846230912297024924836055850737212644121497099935831413222665927505592755799950501152782060571470109559971605970274534596862014728517418640889198609552329230484308714321450839762603627995251407990, 8
 

>