1dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond/*
2dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Licensed to the Apache Software Foundation (ASF) under one or more
3dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * contributor license agreements.  See the NOTICE file distributed with
4dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * this work for additional information regarding copyright ownership.
5dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * The ASF licenses this file to You under the Apache License, Version 2.0
6dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * (the "License"); you may not use this file except in compliance with
7dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * the License.  You may obtain a copy of the License at
8dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond *
9dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond *      http://www.apache.org/licenses/LICENSE-2.0
10dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond *
11dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Unless required by applicable law or agreed to in writing, software
12dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * distributed under the License is distributed on an "AS IS" BASIS,
13dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * See the License for the specific language governing permissions and
15dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * limitations under the License.
16dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */
17dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondpackage org.apache.commons.math.stat.descriptive;
18dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
19dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond/**
20dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Implementation of
21dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * {@link org.apache.commons.math.stat.descriptive.SummaryStatistics} that
22dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * is safe to use in a multithreaded environment.  Multiple threads can safely
23dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * operate on a single instance without causing runtime exceptions due to race
24dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * conditions.  In effect, this implementation makes modification and access
25dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * methods atomic operations for a single instance.  That is to say, as one
26dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * thread is computing a statistic from the instance, no other thread can modify
27dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * the instance nor compute another statistic.
28dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond *
29dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @since 1.2
30dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @version $Revision: 811685 $ $Date: 2009-09-05 19:36:48 +0200 (sam. 05 sept. 2009) $
31dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */
32dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondpublic class SynchronizedSummaryStatistics extends SummaryStatistics {
33dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
34dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /** Serialization UID */
35dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    private static final long serialVersionUID = 1909861009042253704L;
36dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
37dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
38dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * Construct a SynchronizedSummaryStatistics instance
39dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
40dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public SynchronizedSummaryStatistics() {
41dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super();
42dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
43dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
44dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
45dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * A copy constructor. Creates a deep-copy of the {@code original}.
46dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     *
47dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * @param original the {@code SynchronizedSummaryStatistics} instance to copy
48dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
49dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public SynchronizedSummaryStatistics(SynchronizedSummaryStatistics original) {
50dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        copy(original, this);
51dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
52dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
53dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
54dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
55dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
56dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
57dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StatisticalSummary getSummary() {
58dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getSummary();
59dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
60dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
61dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
62dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
63dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
64dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
65dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void addValue(double value) {
66dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.addValue(value);
67dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
68dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
69dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
70dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
71dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
72dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
73dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized long getN() {
74dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getN();
75dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
76dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
77dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
78dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
79dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
80dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
81dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized double getSum() {
82dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getSum();
83dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
84dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
85dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
86dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
87dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
88dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
89dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized double getSumsq() {
90dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getSumsq();
91dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
92dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
93dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
94dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
95dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
96dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
97dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized double getMean() {
98dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getMean();
99dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
100dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
101dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
102dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
103dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
104dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
105dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized double getStandardDeviation() {
106dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getStandardDeviation();
107dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
108dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
109dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
110dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
111dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
112dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
113dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized double getVariance() {
114dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getVariance();
115dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
116dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
117dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
118dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
119dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
120dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
121dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized double getMax() {
122dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getMax();
123dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
124dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
125dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
126dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
127dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
128dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
129dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized double getMin() {
130dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getMin();
131dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
132dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
133dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
134dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
135dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
136dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
137dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized double getGeometricMean() {
138dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getGeometricMean();
139dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
140dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
141dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
142dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
143dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
144dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
145dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized String toString() {
146dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.toString();
147dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
148dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
149dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
150dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
151dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
152dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
153dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void clear() {
154dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.clear();
155dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
156dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
157dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
158dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
159dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
160dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
161dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized boolean equals(Object object) {
162dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.equals(object);
163dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
164dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
165dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
166dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
167dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
168dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
169dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized int hashCode() {
170dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.hashCode();
171dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
172dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
173dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
174dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
175dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
176dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
177dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StorelessUnivariateStatistic getSumImpl() {
178dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getSumImpl();
179dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
180dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
181dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
182dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
183dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
184dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
185dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void setSumImpl(StorelessUnivariateStatistic sumImpl) {
186dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.setSumImpl(sumImpl);
187dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
188dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
189dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
190dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
191dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
192dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
193dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StorelessUnivariateStatistic getSumsqImpl() {
194dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getSumsqImpl();
195dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
196dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
197dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
198dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
199dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
200dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
201dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void setSumsqImpl(StorelessUnivariateStatistic sumsqImpl) {
202dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.setSumsqImpl(sumsqImpl);
203dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
204dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
205dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
206dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
207dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
208dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
209dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StorelessUnivariateStatistic getMinImpl() {
210dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getMinImpl();
211dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
212dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
213dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
214dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
215dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
216dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
217dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void setMinImpl(StorelessUnivariateStatistic minImpl) {
218dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.setMinImpl(minImpl);
219dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
220dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
221dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
222dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
223dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
224dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
225dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StorelessUnivariateStatistic getMaxImpl() {
226dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getMaxImpl();
227dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
228dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
229dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
230dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
231dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
232dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
233dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void setMaxImpl(StorelessUnivariateStatistic maxImpl) {
234dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.setMaxImpl(maxImpl);
235dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
236dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
237dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
238dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
239dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
240dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
241dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StorelessUnivariateStatistic getSumLogImpl() {
242dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getSumLogImpl();
243dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
244dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
245dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
246dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
247dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
248dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
249dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void setSumLogImpl(StorelessUnivariateStatistic sumLogImpl) {
250dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.setSumLogImpl(sumLogImpl);
251dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
252dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
253dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
254dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
255dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
256dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
257dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StorelessUnivariateStatistic getGeoMeanImpl() {
258dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getGeoMeanImpl();
259dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
260dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
261dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
262dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
263dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
264dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
265dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void setGeoMeanImpl(StorelessUnivariateStatistic geoMeanImpl) {
266dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.setGeoMeanImpl(geoMeanImpl);
267dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
268dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
269dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
270dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
271dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
272dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
273dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StorelessUnivariateStatistic getMeanImpl() {
274dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getMeanImpl();
275dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
276dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
277dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
278dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
279dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
280dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
281dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void setMeanImpl(StorelessUnivariateStatistic meanImpl) {
282dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.setMeanImpl(meanImpl);
283dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
284dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
285dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
286dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
287dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
288dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
289dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized StorelessUnivariateStatistic getVarianceImpl() {
290dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return super.getVarianceImpl();
291dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
292dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
293dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
294dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * {@inheritDoc}
295dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
296dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
297dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized void setVarianceImpl(StorelessUnivariateStatistic varianceImpl) {
298dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        super.setVarianceImpl(varianceImpl);
299dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
300dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
301dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
302dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * Returns a copy of this SynchronizedSummaryStatistics instance with the
303dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * same internal state.
304dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     *
305dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * @return a copy of this
306dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
307dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
308dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public synchronized SynchronizedSummaryStatistics copy() {
309dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        SynchronizedSummaryStatistics result =
310dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond            new SynchronizedSummaryStatistics();
311dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        copy(this, result);
312dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return result;
313dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
314dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
315dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
316dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * Copies source to dest.
317dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * <p>Neither source nor dest can be null.</p>
318dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * <p>Acquires synchronization lock on source, then dest before copying.</p>
319dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     *
320dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * @param source SynchronizedSummaryStatistics to copy
321dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * @param dest SynchronizedSummaryStatistics to copy to
322dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * @throws NullPointerException if either source or dest is null
323dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
324dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public static void copy(SynchronizedSummaryStatistics source,
325dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond            SynchronizedSummaryStatistics dest) {
326dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        synchronized (source) {
327dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond            synchronized (dest) {
328dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond                SummaryStatistics.copy(source, dest);
329dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond            }
330dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        }
331dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
332dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
333dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond}
334