--
-- Approximation for ellipse perimeters
-- By Kurt Eisemann 

-- P = 4a + b + 1.2832*b^2/a
-- for ALL semi-axes a,b;   |error| < 1.3%.
-- (When bÇa, you may prefer the simpler form
-- P = 4a + b + 1.3*b^2/a)

-- xy is from a table of elliptic integrals
xy = {
{0, 1.0000},
{3, 1.0053},
{7, 1.0223},
{8, 1.0278},
{9, 1.0338},
{15, 1.0764},
{20, 1.1184},
{30, 1.2111},
{40, 1.3055},
{50, 1.3931},
{60, 1.4675},
{70, 1.5238},
{80, 1.5589},
{90, 1.5708} }

n=count(xy)
Xmin=0  -- line
Xmax=1  -- circle
theta[i]=xy[i,1] dim[n]
--  =arccos(eccentricity)
s[i]=sin(theta[i]) dim[n] -- =b/a

-- plots are for P/(4*a) versus b/a
exact[i]={s[i],xy[i,2]} dim[n]
point[i]=1+0.25*s[i]+0.3208*s[i]^2 dim[n]
approx[i]={s[i],point[i]}dim[n]
ApproxTenPi=20*approx[n,2]
Xdiv=0.15; Ydiv:=0.05:
plot approx
plotline approx
plot exact
plotline exact
   label ApproxTenPi:31.416
   newaxis
error[i]={s[i],100*(approx[i,2]-exact[i,2])/exact[i,2]} dim[n]
Ydiv:=0.2:
plot error
plotline error