1 package org.djutils.means;
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class GeometricMean<V extends Number, W extends Number> extends AbstractMean<GeometricMean<V, W>, V, W>
16 {
17
18
19 @Override
20 public final double getMean()
21 {
22 return Math.exp(getSum() / getSumOfWeights());
23 }
24
25
26 @Override
27 public final GeometricMean<V, W> addImpl(final V value, final Number weight)
28 {
29 increment(Math.log(value.doubleValue()) * weight.doubleValue(), weight.doubleValue());
30 return this;
31 }
32
33
34 @Override
35 public final String toString()
36 {
37 return "GeometricMean [current sum of logarithmic values=" + getSum() + ", current sum of weights=" + getSumOfWeights()
38 + ", current geometric mean=" + getMean() + "]";
39 }
40
41 }