001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: /*
018: * Created on May 30, 2005
019: *
020: */
021: package org.apache.poi.hssf.record.formula.functions;
022:
023: /**
024: * @author Amol S. Deshmukh < amolweb at ya hoo dot com >
025: *
026: */
027: public class TestStatsLib extends AbstractNumericTestCase {
028:
029: public void testDevsq() {
030: double[] v = null;
031: double d, x = 0;
032:
033: v = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
034: d = StatsLib.devsq(v);
035: x = 82.5;
036: assertEquals("devsq ", x, d);
037:
038: v = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
039: d = StatsLib.devsq(v);
040: x = 0;
041: assertEquals("devsq ", x, d);
042:
043: v = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
044: d = StatsLib.devsq(v);
045: x = 0;
046: assertEquals("devsq ", x, d);
047:
048: v = new double[] { 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 };
049: d = StatsLib.devsq(v);
050: x = 2.5;
051: assertEquals("devsq ", x, d);
052:
053: v = new double[] { 123.12, 33.3333, 2d / 3d, 5.37828, 0.999 };
054: d = StatsLib.devsq(v);
055: x = 10953.7416965767;
056: assertEquals("devsq ", x, d);
057:
058: v = new double[] { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10 };
059: d = StatsLib.devsq(v);
060: x = 82.5;
061: assertEquals("devsq ", x, d);
062: }
063:
064: public void testKthLargest() {
065: double[] v = null;
066: double d, x = 0;
067:
068: v = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
069: d = StatsLib.kthLargest(v, 3);
070: x = 8;
071: assertEquals("kthLargest ", x, d);
072:
073: v = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
074: d = StatsLib.kthLargest(v, 3);
075: x = 1;
076: assertEquals("kthLargest ", x, d);
077:
078: v = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
079: d = StatsLib.kthLargest(v, 3);
080: x = 0;
081: assertEquals("kthLargest ", x, d);
082:
083: v = new double[] { 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 };
084: d = StatsLib.kthLargest(v, 3);
085: x = 2;
086: assertEquals("kthLargest ", x, d);
087:
088: v = new double[] { 123.12, 33.3333, 2d / 3d, 5.37828, 0.999 };
089: d = StatsLib.kthLargest(v, 3);
090: x = 5.37828;
091: assertEquals("kthLargest ", x, d);
092:
093: v = new double[] { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10 };
094: d = StatsLib.kthLargest(v, 3);
095: x = -3;
096: assertEquals("kthLargest ", x, d);
097: }
098:
099: public void testKthSmallest() {
100: }
101:
102: public void testAvedev() {
103: double[] v = null;
104: double d, x = 0;
105:
106: v = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
107: d = StatsLib.avedev(v);
108: x = 2.5;
109: assertEquals("avedev ", x, d);
110:
111: v = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
112: d = StatsLib.avedev(v);
113: x = 0;
114: assertEquals("avedev ", x, d);
115:
116: v = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
117: d = StatsLib.avedev(v);
118: x = 0;
119: assertEquals("avedev ", x, d);
120:
121: v = new double[] { 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 };
122: d = StatsLib.avedev(v);
123: x = 0.5;
124: assertEquals("avedev ", x, d);
125:
126: v = new double[] { 123.12, 33.3333, 2d / 3d, 5.37828, 0.999 };
127: d = StatsLib.avedev(v);
128: x = 36.42176053333;
129: assertEquals("avedev ", x, d);
130:
131: v = new double[] { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10 };
132: d = StatsLib.avedev(v);
133: x = 2.5;
134: assertEquals("avedev ", x, d);
135: }
136:
137: public void testMedian() {
138: double[] v = null;
139: double d, x = 0;
140:
141: v = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
142: d = StatsLib.median(v);
143: x = 5.5;
144: assertEquals("median ", x, d);
145:
146: v = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
147: d = StatsLib.median(v);
148: x = 1;
149: assertEquals("median ", x, d);
150:
151: v = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
152: d = StatsLib.median(v);
153: x = 0;
154: assertEquals("median ", x, d);
155:
156: v = new double[] { 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 };
157: d = StatsLib.median(v);
158: x = 1.5;
159: assertEquals("median ", x, d);
160:
161: v = new double[] { 123.12, 33.3333, 2d / 3d, 5.37828, 0.999 };
162: d = StatsLib.median(v);
163: x = 5.37828;
164: assertEquals("median ", x, d);
165:
166: v = new double[] { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10 };
167: d = StatsLib.median(v);
168: x = -5.5;
169: assertEquals("median ", x, d);
170:
171: v = new double[] { -2, -3, -4, -5, -6, -7, -8, -9, -10 };
172: d = StatsLib.median(v);
173: x = -6;
174: assertEquals("median ", x, d);
175:
176: v = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
177: d = StatsLib.median(v);
178: x = 5;
179: assertEquals("median ", x, d);
180: }
181:
182: public void testMode() {
183: double[] v = null;
184: double d, x = 0;
185:
186: v = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
187: d = StatsLib.mode(v);
188: x = Double.NaN;
189: assertEquals("mode ", x, d);
190:
191: v = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
192: d = StatsLib.mode(v);
193: x = 1;
194: assertEquals("mode ", x, d);
195:
196: v = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
197: d = StatsLib.mode(v);
198: x = 0;
199: assertEquals("mode ", x, d);
200:
201: v = new double[] { 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 };
202: d = StatsLib.mode(v);
203: x = 1;
204: assertEquals("mode ", x, d);
205:
206: v = new double[] { 123.12, 33.3333, 2d / 3d, 5.37828, 0.999 };
207: d = StatsLib.mode(v);
208: x = Double.NaN;
209: assertEquals("mode ", x, d);
210:
211: v = new double[] { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10 };
212: d = StatsLib.mode(v);
213: x = Double.NaN;
214: assertEquals("mode ", x, d);
215:
216: v = new double[] { 1, 2, 3, 4, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
217: d = StatsLib.mode(v);
218: x = 1;
219: assertEquals("mode ", x, d);
220:
221: v = new double[] { 0, 1, 2, 3, 4, 1, 1, 1, 0, 0, 0, 0, 1 };
222: d = StatsLib.mode(v);
223: x = 0;
224: assertEquals("mode ", x, d);
225: }
226:
227: public void testStddev() {
228: double[] v = null;
229: double d, x = 0;
230:
231: v = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
232: d = StatsLib.stdev(v);
233: x = 3.02765035410;
234: assertEquals("stdev ", x, d);
235:
236: v = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
237: d = StatsLib.stdev(v);
238: x = 0;
239: assertEquals("stdev ", x, d);
240:
241: v = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
242: d = StatsLib.stdev(v);
243: x = 0;
244: assertEquals("stdev ", x, d);
245:
246: v = new double[] { 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 };
247: d = StatsLib.stdev(v);
248: x = 0.52704627669;
249: assertEquals("stdev ", x, d);
250:
251: v = new double[] { 123.12, 33.3333, 2d / 3d, 5.37828, 0.999 };
252: d = StatsLib.stdev(v);
253: x = 52.33006233652;
254: assertEquals("stdev ", x, d);
255:
256: v = new double[] { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10 };
257: d = StatsLib.stdev(v);
258: x = 3.02765035410;
259: assertEquals("stdev ", x, d);
260: }
261: }
|