1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package de.fu_berlin.ties.util;
23
24 /***
25 * A static class that provides some mathematical utility methods.
26 * No instances of this class can be created, only the static members
27 * should be used.
28 *
29 * @author Christian Siefkes
30 * @version $Revision: 1.3 $, $Date: 2004/12/06 17:59:41 $, $Author: siefkes $
31 */
32 public final class MathUtils {
33
34 /***
35 * Returns the
36 * <a href="http://www.xycoon.com/arithmetic_mean.htm">arithmetic mean</a>
37 * of an array of values.
38 *
39 * @param values the values to use
40 * @return the arithmetic mean of the values; or NaN (Not-a-Number) if the
41 * array is empty or at least one value is NaN
42 */
43 public static double mean(final double[] values) {
44 if (values.length > 1) {
45
46 double sum = 0.0;
47
48 for (int i = 0; i < values.length; i++) {
49 if (Double.isNaN(values[i])) {
50
51 return Double.NaN;
52 } else {
53 sum += values[i];
54 }
55 }
56
57 return sum / values.length;
58 } else if (values.length == 1) {
59
60 return values[0];
61 } else {
62
63 return Double.NaN;
64 }
65 }
66
67 /***
68 * Private constructor prevents creation of instances.
69 */
70 private MathUtils() {
71 super();
72 }
73
74 }