# prog1a.mpl -- Determine Machine Epsilon # Written Sep 20, 2002 by Eric Olson for Mathematics 483 # # For more information see Step 3 in First Steps in Numerical # Analysis, 2nd Edition, by Hosking, Joe, Joyce and Turner kernelopts(printbytes=false): maxdelta:=proc(x::float) local a,b,delta,deold,r1; a:=0.0; b:=x; deold:=a; while true do delta:=(a+b)/2.0; if(deold=delta) then break fi; r1:=x+delta; if(r1=x) then a:=delta else b:=delta fi; deold:=delta; od; a; end: printf("Prog1a.mpl -- Determine Machine Epsilon\n\n"); Digits:=10: printf("Using Digits=%d floating point.\n\n",Digits); for x in [1.0,2.0,3.0,4.0,5.0,10.0,100.0,1000.0] do delta:=maxdelta(x); printf("x=%g d1=%g\n",x,delta); od: