Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
64
Task/Average-loop-length/Seed7/average-loop-length.seed7
Normal file
64
Task/Average-loop-length/Seed7/average-loop-length.seed7
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
$ include "seed7_05.s7i";
|
||||
include "float.s7i";
|
||||
|
||||
const integer: TESTS is 1000000;
|
||||
|
||||
const func float: factorial (in integer: number) is func
|
||||
result
|
||||
var float: factorial is 1.0;
|
||||
local
|
||||
var integer: i is 0;
|
||||
begin
|
||||
for i range 2 to number do
|
||||
factorial *:= flt(i);
|
||||
end for;
|
||||
end func;
|
||||
|
||||
const func float: analytical (in integer: number) is func
|
||||
result
|
||||
var float: sum is 0.0;
|
||||
local
|
||||
var integer: i is 0;
|
||||
begin
|
||||
for i range 1 to number do
|
||||
sum +:= factorial(number) / factorial(number - i) / flt(number)**i;
|
||||
end for;
|
||||
end func;
|
||||
|
||||
const func float: experimental (in integer: number) is func
|
||||
result
|
||||
var float: experimental is 0.0;
|
||||
local
|
||||
var integer: run is 0;
|
||||
var set of integer: seen is EMPTY_SET;
|
||||
var integer: current is 1;
|
||||
var integer: count is 0;
|
||||
begin
|
||||
for run range 1 to TESTS do
|
||||
current := 1;
|
||||
seen := EMPTY_SET;
|
||||
while current not in seen do
|
||||
incr(count);
|
||||
incl(seen, current);
|
||||
current := rand(1, number);
|
||||
end while;
|
||||
end for;
|
||||
experimental := flt(count) / flt(TESTS);
|
||||
end func;
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
var integer: number is 0;
|
||||
var float: analytical is 0.0;
|
||||
var float: experimental is 0.0;
|
||||
var float: err is 0.0;
|
||||
begin
|
||||
writeln(" N avg calc %diff");
|
||||
for number range 1 to 20 do
|
||||
analytical := analytical(number);
|
||||
experimental := experimental(number);
|
||||
err := abs(experimental - analytical) / analytical * 100.0;
|
||||
writeln(number lpad 2 <& experimental digits 4 lpad 7 <&
|
||||
analytical digits 4 lpad 7 <& err digits 3 lpad 7);
|
||||
end for;
|
||||
end func;
|
||||
Loading…
Add table
Add a link
Reference in a new issue