Anonymous user
Averages/Arithmetic mean: Difference between revisions
Updated 3 D entries
(Updated 3 D entries) |
|||
Line 488:
=={{header|D}}==
===Imperative Version===
<lang d>import std.stdio
real mean(Range)(Range r) {
real sum = 0.0;
int count
foreach (item; r) {
Line 511 ⟶ 512:
writeln("mean: ", data.mean());
}</lang>
{{out}}
mean: 3.83333</pre>
===More Functional Version===
Same output.
<lang d>import std.stdio, std.algorithm, std.range;
auto mean(Range)(Range r) {
auto len = r.walkLength(
return len == 0 ? 0.0 : reduce!q{a + b}(0.0L, r) / len;
}
Line 527 ⟶ 530:
writeln("mean: ", data.mean());
}</lang>
===More Precise Version===
A (naive?) version that tries to minimize precision loss
<lang d>import std.stdio, std.conv, std.algorithm, std.math, std.traits;
Line 534 ⟶ 538:
auto num = n.dup;
schwartzSort!(abs, "a > b")(num);
return reduce!
}
Line 542 ⟶ 546:
writefln("%8.5f", mean([-1e20, 3, 1, 4, 1, 5, 9, 1e20]));
}</lang>
{{out}}
<pre> 0.00000
2.87500
|