Что-то как-то у меня не очень хороший результат получился с Вашей аппроксимацией... Если не наврал, то так:

В области наибольшего расхождения погрешность достигает 8.5%. Многовато.
На всякий случай - вот программа (увы, Паскаль, а не Бэйсик):
Код:
Var
f:Text;
i:Byte;
r:Real;
Const
a1 = 0.4630151;
a2 = 0.1077812;
b1 = 0.2452727;
b2 = 0.0412496;
Function Ell_Int(ba:real):real;
var
n,m:real;
begin
m:=SQRT(1-Sqr(ba));
n:=1-m;
Ell_Int:=((1+a1*n+a2*n*n)+(b1*n + b2*n*n)*ln(1/n))*4;
end;
Function Ell_App(ba:real):real;
begin
Ell_App:=((Pi*2-4)*Exp(1.44*ln(ba))+4);
end;
Begin
Assign(f,'D:\Ell.dat');
Rewrite(f);
for i:=1 to 100 do
begin
r:=0.01*i;
writeln(f,r:4:2,Ell_Int(r):15:5,Ell_App(r):15:5,Abs((Ell_App(r)-Ell_Int(r))/(Ell_App(r)+Ell_Int(r)))*200:15:5);
end;
Close(f);
End.