Averages/Pythagorean means: Difference between revisions

Rename Perl 6 -> Raku, alphabetize, minor clean-up
(Added a V implementation)
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
Line 465:
return 0;
}</lang>
 
=={{header|C++}}==
<lang cpp>#include <vector>
#include <iostream>
#include <numeric>
#include <cmath>
#include <algorithm>
 
double toInverse ( int i ) {
return 1.0 / i ;
}
 
int main( ) {
std::vector<int> numbers ;
for ( int i = 1 ; i < 11 ; i++ )
numbers.push_back( i ) ;
double arithmetic_mean = std::accumulate( numbers.begin( ) , numbers.end( ) , 0 ) / 10.0 ;
double geometric_mean =
pow( std::accumulate( numbers.begin( ) , numbers.end( ) , 1 , std::multiplies<int>( ) ), 0.1 ) ;
std::vector<double> inverses ;
inverses.resize( numbers.size( ) ) ;
std::transform( numbers.begin( ) , numbers.end( ) , inverses.begin( ) , toInverse ) ;
double harmonic_mean = 10 / std::accumulate( inverses.begin( ) , inverses.end( ) , 0.0 ); //initial value of accumulate must be a double!
std::cout << "The arithmetic mean is " << arithmetic_mean << " , the geometric mean "
<< geometric_mean << " and the harmonic mean " << harmonic_mean << " !\n" ;
return 0 ;
}</lang>
{{out}}
<pre>The arithmetic mean is 5.5 , the geometric mean 4.52873 and the harmonic mean 3.41417 !</pre>
 
=={{header|C sharp|C#}}==
Line 539 ⟶ 510:
Geometric mean 4.52872868811677
Harmonic mean 3.41417152147406</pre>
 
=={{header|C++}}==
<lang cpp>#include <vector>
#include <iostream>
#include <numeric>
#include <cmath>
#include <algorithm>
 
double toInverse ( int i ) {
return 1.0 / i ;
}
 
int main( ) {
std::vector<int> numbers ;
for ( int i = 1 ; i < 11 ; i++ )
numbers.push_back( i ) ;
double arithmetic_mean = std::accumulate( numbers.begin( ) , numbers.end( ) , 0 ) / 10.0 ;
double geometric_mean =
pow( std::accumulate( numbers.begin( ) , numbers.end( ) , 1 , std::multiplies<int>( ) ), 0.1 ) ;
std::vector<double> inverses ;
inverses.resize( numbers.size( ) ) ;
std::transform( numbers.begin( ) , numbers.end( ) , inverses.begin( ) , toInverse ) ;
double harmonic_mean = 10 / std::accumulate( inverses.begin( ) , inverses.end( ) , 0.0 ); //initial value of accumulate must be a double!
std::cout << "The arithmetic mean is " << arithmetic_mean << " , the geometric mean "
<< geometric_mean << " and the harmonic mean " << harmonic_mean << " !\n" ;
return 0 ;
}</lang>
{{out}}
<pre>The arithmetic mean is 5.5 , the geometric mean 4.52873 and the harmonic mean 3.41417 !</pre>
 
=={{header|Clojure}}==
<lang Clojure>(use '[clojure.contrib.math :only (expt)])
(defn a-mean [coll]
(/ (apply + coll) (count coll)))
(defn g-mean [coll]
(expt (apply * coll) (/ (count coll))))
(defn h-mean [coll]
(/ (count coll) (apply + (map / coll))))
(let [numbers (range 1 11)
a (a-mean numbers) g (g-mean numbers) h (h-mean numbers)]
(println a ">=" g ">=" h)
(>= a g h))</lang>
 
=={{header|CoffeeScript}}==
Line 580 ⟶ 597:
(format t "g-mean ~a~%" g-mean)
(format t "h-mean ~a~%" h-mean)))</lang>
 
=={{header|Clojure}}==
<lang Clojure>(use '[clojure.contrib.math :only (expt)])
(defn a-mean [coll]
(/ (apply + coll) (count coll)))
(defn g-mean [coll]
(expt (apply * coll) (/ (count coll))))
(defn h-mean [coll]
(/ (count coll) (apply + (map / coll))))
(let [numbers (range 1 11)
a (a-mean numbers) g (g-mean numbers) h (h-mean numbers)]
(println a ">=" g ">=" h)
(>= a g h))</lang>
 
=={{header|D}}==
Line 926:
3,414171521
</pre>
 
 
=={{header|F_Sharp|F#}}==
Line 1,171 ⟶ 1,170:
geomean(v);
# 4.52873</lang>
 
=={{header|Go}}==
<lang go>package main
Line 1,760:
end if
</lang>
 
=={{header|Logo}}==
<lang logo>to compute_means :count
Line 1,798 ⟶ 1,799:
print(a, g, h)
assert(a >= g and g >= h)</lang>
 
=={{header|M2000 Interpreter}}==
Dimension(m,0) is the base (lower bound) for each dimension in an array, and can be 0 or 1.
Line 2,162 ⟶ 2,164:
H(1 .. 10): 3.41417152147
</pre>
 
=={{header|Objeck}}==
{{trans|Java}}
Line 2,431 ⟶ 2,434:
print "A=$a\nG=$g\nH=$h\n";
die "Error" unless $a >= $g and $g >= $h;</lang>
 
=={{header|Perl 6}}==
{{works with|Rakudo|2015.12}}
 
<lang perl6>sub A { ([+] @_) / @_ }
sub G { ([*] @_) ** (1 / @_) }
sub H { @_ / [+] 1 X/ @_ }
 
say "A(1,...,10) = ", A(1..10);
say "G(1,...,10) = ", G(1..10);
say "H(1,...,10) = ", H(1..10);
</lang>
 
{{out}}
<pre>A(1,...,10) = 5.5
G(1,...,10) = 4.52872868811677
H(1,...,10) = 3.41417152147406</pre>
 
=={{header|Phix}}==
Line 2,784 ⟶ 2,770:
#t
</pre>
 
=={{header|Raku}}==
(formerly Perl 6)
{{works with|Rakudo|2015.12}}
 
<lang perl6>sub A { ([+] @_) / @_ }
sub G { ([*] @_) ** (1 / @_) }
sub H { @_ / [+] 1 X/ @_ }
 
say "A(1,...,10) = ", A(1..10);
say "G(1,...,10) = ", G(1..10);
say "H(1,...,10) = ", H(1..10);
</lang>
 
{{out}}
<pre>A(1,...,10) = 5.5
G(1,...,10) = 4.52872868811677
H(1,...,10) = 3.41417152147406</pre>
 
=={{header|REXX}}==
Line 3,059 ⟶ 3,063:
H(1,...,10) = 3.414171521474055006096734859775098225173</pre>
 
=={{header|SQL}}==
It may not be possible to calculate a geometric mean in a query, but the other two are easy enough.
<lang sql>
--setup
create table averages (val integer);
insert into averages values (1);
insert into averages values (2);
insert into averages values (3);
insert into averages values (4);
insert into averages values (5);
insert into averages values (6);
insert into averages values (7);
insert into averages values (8);
insert into averages values (9);
insert into averages values (10);
-- calculate means
select
1/avg(1/val) as harm,
avg(val) as arith
from
averages;
</lang>
{{out}}
<pre>
HARM ARITH
---------- ----------
3.41417152 5.5
</pre>
=={{header|Smalltalk}}==
{{works with|GNU Smalltalk}}
Line 3,126 ⟶ 3,102:
true
true</pre>
 
=={{header|SQL}}==
It may not be possible to calculate a geometric mean in a query, but the other two are easy enough.
<lang sql>
--setup
create table averages (val integer);
insert into averages values (1);
insert into averages values (2);
insert into averages values (3);
insert into averages values (4);
insert into averages values (5);
insert into averages values (6);
insert into averages values (7);
insert into averages values (8);
insert into averages values (9);
insert into averages values (10);
-- calculate means
select
1/avg(1/val) as harm,
avg(val) as arith
from
averages;
</lang>
{{out}}
<pre>
HARM ARITH
---------- ----------
3.41417152 5.5
</pre>
 
=={{header|Stata}}==
Line 3,140 ⟶ 3,145:
| Harmonic 10 3.414172 2.035664 10.57602
-----------------------------------------------------------------------------</lang>
 
=={{header|Tcl}}==
<lang tcl>proc arithmeticMean list {
10,327

edits