Выводить обычные и рекуррентные способы решения функций. Перевод кода Delphi - C#
Формулировка задачи:
Помогите пожалуйста перевести этот код в C#. Задача состоит в том что должен выводить обычные и реккурентные способы решения функций - e^x, ln(x) через ln(1+x) и cos(x). Дисциплина называется числовые методы. Не обязательно в form, просто консольное сойдет.
var
Form1: TForm1;
implementation
{$R *.dfm}
function fact(n:cardinal):extended;
var
f:extended;
i:cardinal;
begin
if n=0 then f:=0 else f:=1;
for i:=2 to n do
f:=f*i;
result:=f;
end;
function stepen(a:extended;n:integer):extended;
var
i:integer;
begin
result:=1;
for i:=1 to n do
result:=result*a;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s,s2,a,x,p,an,eps,sor,t:extended;
n,i,k:integer;
ps:boolean;
begin
sor:=0;
s:=0;
ps:=true;
if edit1.text<>'' then begin
x:=strtofloat(edit1.text);
eps:=strtofloat(edit3.text);
case radiogroup1.ItemIndex of
0:begin
sor:=exp(x);
if x<0 then begin x:=x*(-1);ps:=false;end;
case radiogroup2.ItemIndex of
0:begin //0
s:=1+x;
i:=2;
an:=x;
p:=1;
repeat
x:=x*an; //âîçâåäåГ*ГЁГҐ Г± ГІГҐГЇГҐГ*Гј
p:=p*i;
a:=x/p;
s:=s+a;
inc(i);
until abs(a)<=eps;
end;
1:begin
a:=1;
i:=1;
s:=a;
repeat
a:=a*x/i;
s:=s+a;
inc(i);
until abs(a)<=eps;
end;
end;
if ps=false then s:=1/s;
end;
1:begin
x:=abs(x);
while abs(x)>pi do
begin
if x>pi then x:=x-pi else x:=x+pi;
end;
sor:=cos(x);
s:=1;
n:=0;
repeat
n:=n+2;
a:=power(x,n)*power(-1,n div 2)/fact(n);
s:=s+a;
until (abs(a)<=eps);
end; //1
2:begin //2 ln(x+1)
if x>-1 then
begin
sor:=ln(x+1);
an:=x+1;
k:=0;
if an>2 then
repeat
an:=an/2;
inc(k);
until an<2;
x:=an-1;
i:=1;
s:=x;
n:=2;
repeat
i:=-i;
a:=i*power(x,n)/n;
inc(n);
s:=s+a;
until abs(a)<=eps;
s:=k*ln(2)+s;
end;
end;
end; end;
edit4.Text:=floattostr(s);
edit5.Text:=floattostr(sor);
end;
end.Решение задачи: «Выводить обычные и рекуррентные способы решения функций. Перевод кода Delphi»
textual
Листинг программы
function stepen(a:extended;n:integer):extended; var i:integer; begin result:=1; for i:=1 to n do result:=result*a; end;