- •Министерство Образования и Науки рф
- •Введение
- •Выполнение работы Тестовые программы test_cyc.C
- •Test_sub.C
- •Выполнение программ из л.Р. 1 Программа на Си Измерение полного времени выполнения программы
- •Результат профилирования:
- •Измерение времен выполнения функциональных участков
- •Результат профилирования:
- •Программа на Паскаль Измерение полного времени выполнения программы
- •Результаты профилирования:
- •Измерение времен выполнения функциональных участков
- •Результаты профилирования:
Программа на Паскаль Измерение полного времени выполнения программы
Текст программы:
program erfd3;
uses sampler;
const PName:String[8] = 'GAUSS.PAS';
const count =3;
var x,er,ec : real;
done : boolean;
function erf(x: real): real;
const sqrtpi = 1.7724538;
tol = 1.0E-4;
var x2,sum,sum1,term: real;
k,i : integer;
begin
x2:=x*x;
sum:=x;
term:=x;
i:=0;
repeat
i:=i+1;
sum1:=sum;
term:=2.0*term*x2/(1.0+2.0*i);
sum:=term+sum1
until term<tol*sum;
erf:=2.0*sum*exp(-x2)/sqrtpi
end; { erf }
function erfc(x: real): real;
const sqrtpi = 1.7724538;
terms = 12;
var x2,u,v,sum : real;
i : integer;
begin
x2:=x*x;
v:=1.0/(2.0*x2);
u:=1.0+v*(terms+1.0);
for i:=terms downto 1 do
begin
sum:=1.0+i*v/u;
u:=sum
end;
erfc:=exp(-x2)/(x*sum*sqrtpi)
end; { ercf }
var k : integer;
begin { main }
SAMPLE(PName,46);
randomize;
done:=false;
for k:=1 to count do
begin
x:=random(100)/100;
if x<0.0 then done:=true
else
begin
if x=0.0 then
begin
er:=0.0;
ec:=1.0
end
else
begin
if x<1.5 then
begin
er:=erf(x);
ec:=1.0-er
end
else
begin
ec:=erfc(x);
er:=1.0-ec
end { if }
end;
end { if }
end;
SAMPLE(PName,75);
end.
Результаты профилирования:
----------------------------------------------------------------------
NN Имя обработанного файла
----------------------------------------------------------------------
1. MMM20.PA
----------------------------------------------------------------------
Таблица с результатами измерений ( используется 2 из 416 записей )
----------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)
----------------------------------------------------------------------
1 : 56 1 : 91 36.88 1 36.88
----------------------------------------------------------------------
Измерение времен выполнения функциональных участков
Программа:
program erfd3;
uses sampler;
const PName:String[8] = 'GAUSS.PAS';
const count =3;
var x,er,ec : real;
done : boolean;
function erf(x: real): real;
const sqrtpi = 1.7724538;
tol = 1.0E-4;
var x2,sum,sum1,term: real;
k,i : integer;
begin
x2:=x*x;
SAMPLE(PName,14);
sum:=x;
term:=x;
i:=0;
SAMPLE(PName,18);
repeat
SAMPLE(PName,20);
i:=i+1;
sum1:=sum;
term:=2.0*term*x2/(1.0+2.0*i);
sum:=term+sum1
SAMPLE(PName,25);
until term<tol*sum;
SAMPLE(PName,27);
erf:=2.0*sum*exp(-x2)/sqrtpi;
SAMPLE(PName,29);
end; { erf }
function erfc(x: real): real;
const sqrtpi = 1.7724538;
terms = 12;
var x2,u,v,sum : real;
i : integer;
begin
SAMPLE(PName,39);
x2:=x*x;
v:=1.0/(2.0*x2);
u:=1.0+v*(terms+1.0);
SAMPLE(PName,43);
for i:=terms downto 1 do
begin
sum:=1.0+i*v/u;
u:=sum
end;
SAMPLE(PName,49);
erfc:=exp(-x2)/(x*sum*sqrtpi)
SAMPLE(PName,51);
end; { ercf }
var k : integer;
begin { main }
SAMPLE(PName,56);
randomize;
done:=false;
SAMPLE(PName,59);
for k:=1 to count do
begin
SAMPLE(PName,62);
x:=random(100)/100;
if x<0.0 then done:=true
else
begin
if x=0.0 then
begin
er:=0.0;
ec:=1.0
end
else
begin
if x<1.5 then
begin
SAMPLE(PName,76);
er:=erf(x);
ec:=1.0-er
SAMPLE(PName,79);
end
else
begin
SAMPLE(PName,83);
ec:=erfc(x);
er:=1.0-ec
SAMPLE(PName,86);
end { if }
end;
end { if }
end;
SAMPLE(PName,91);
end.