]> git.mxchange.org Git - simgear.git/blobdiff - simgear/structure/SGSmplstat.cxx
Fix use count for deleted, reference counted objects.
[simgear.git] / simgear / structure / SGSmplstat.cxx
index 6d071be92b189d452bc756c49c477b32b6db76ec..c9a345a9a05d8a45654f42c7d5ec350fd94884db 100644 (file)
@@ -13,7 +13,7 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.  See the GNU Library General Public License for more details.
 You should have received a copy of the GNU Library General Public
 License along with this library; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
 */
 
 #include <math.h>
@@ -36,7 +36,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 void SampleStatistic::error (const char *msg)
 {
-  SG_LOG(SG_GENERAL, SG_ALERT,  msg);
+    SG_LOG(SG_GENERAL, SG_ALERT,  msg);
 }
 
 // t-distribution: given p-value and degrees of freedom, return t-value
@@ -44,57 +44,62 @@ void SampleStatistic::error (const char *msg)
 
 double tval (double p, int df)
 {
-  double t;
-  int positive = p >= 0.5;
-  p = (positive) ? 1.0 - p : p;
-  if (p <= 0.0 || df <= 0)
-    t = HUGE_VAL;
-  else if (p == 0.5)
-    t = 0.0;
-  else if (df == 1)
-    t = 1.0 / tan ((p + p) * 1.57079633);
-  else if (df == 2)
-    t = sqrt (1.0 / ((p + p) * (1.0 - p)) - 2.0);
-  else
+    double t;
+    int positive = p >= 0.5;
+    p = (positive) ? 1.0 - p : p;
+    if (p <= 0.0 || df <= 0)
+        t = HUGE_VAL;
+    else if (p == 0.5)
+        t = 0.0;
+    else if (df == 1)
+        t = 1.0 / tan ((p + p) * 1.57079633);
+    else if (df == 2)
+        t = sqrt (1.0 / ((p + p) * (1.0 - p)) - 2.0);
+    else
     {
-      double ddf = df;
-      double a = sqrt (log (1.0 / (p * p)));
-      double aa = a * a;
-      a = a - ((2.515517 + (0.802853 * a) + (0.010328 * aa)) /
-              (1.0 + (1.432788 * a) + (0.189269 * aa) +
-               (0.001308 * aa * a)));
-      t = ddf - 0.666666667 + 1.0 / (10.0 * ddf);
-      t = sqrt (ddf * (exp (a * a * (ddf - 0.833333333) / (t * t)) - 1.0));
+        double ddf = df;
+        double a = sqrt (log (1.0 / (p * p)));
+        double aa = a * a;
+        a = a - ((2.515517 + (0.802853 * a) + (0.010328 * aa)) /
+                (1.0 + (1.432788 * a) + (0.189269 * aa) +
+                        (0.001308 * aa * a)));
+        t = ddf - 0.666666667 + 1.0 / (10.0 * ddf);
+        t = sqrt (ddf * (exp (a * a * (ddf - 0.833333333) / (t * t)) - 1.0));
     }
-  return (positive) ? t : -t;
+    return (positive) ? t : -t;
 }
 
 void SampleStatistic::reset ()
 {
-  n = 0;
-  x = x2 = 0.0;
-  maxValue = -HUGE_VAL;
-  minValue = HUGE_VAL;
+    n = 0;
+    x = x2 = 0.0;
+    totalTime = 0.0;
+    maxValue = -HUGE_VAL;
+    minValue = HUGE_VAL;
 }
 
 void SampleStatistic::operator += (double value)
 {
-  n += 1;
-  x += value;
-  x2 += (value * value);
-  if (minValue > value)
-    minValue = value;
-  if (maxValue < value)
-    maxValue = value;
+    n += 1;
+    x += value;
+    totalTime += value;
+    cumulativeTime += value;
+    x2 += (value * value);
+
+    if (minValue > value)
+        minValue = value;
+
+    if (maxValue < value)
+        maxValue = value;
 }
 
 double SampleStatistic::mean () const
 {
-  if (n > 0)
+    if (n > 0)
     {
       return (x / n);
     }
-  else
+    else
     {
       return (0.0);
     }
@@ -102,23 +107,23 @@ double SampleStatistic::mean () const
 
 double SampleStatistic::var () const
 {
-  if (n > 1)
+    if (n > 1)
     {
-      return ((x2 - ((x * x) / n)) / (n - 1));
+        return ((x2 - ((x * x) / n)) / (n - 1));
     }
-  else
+    else
     {
-      return (0.0);
+        return (0.0);
     }
 }
 
 double SampleStatistic::stdDev () const
 {
-  if (n <= 0 || this->var () <= 0)
+    if (n <= 0 || this->var () <= 0)
     {
       return (0);
     }
-  else
+    else
     {
       return ((double) sqrt (var ()));
     }
@@ -126,24 +131,24 @@ double SampleStatistic::stdDev () const
 
 double SampleStatistic::confidence (int interval) const
 {
-  int df = n - 1;
-  if (df <= 0)
-    return HUGE_VAL;
-  double t = tval (double (100 + interval) * 0.005, df);
-  if (t == HUGE_VAL)
-    return t;
-  else
-    return (t * stdDev ()) / sqrt (double (n));
+    int df = n - 1;
+    if (df <= 0)
+        return HUGE_VAL;
+    double t = tval (double (100 + interval) * 0.005, df);
+    if (t == HUGE_VAL)
+        return t;
+    else
+        return (t * stdDev ()) / sqrt (double (n));
 }
 
 double SampleStatistic::confidence (double p_value) const
 {
-  int df = n - 1;
-  if (df <= 0)
-    return HUGE_VAL;
-  double t = tval ((1.0 + p_value) * 0.5, df);
-  if (t == HUGE_VAL)
-    return t;
-  else
-    return (t * stdDev ()) / sqrt (double (n));
+    int df = n - 1;
+    if (df <= 0)
+        return HUGE_VAL;
+    double t = tval ((1.0 + p_value) * 0.5, df);
+    if (t == HUGE_VAL)
+        return t;
+    else
+        return (t * stdDev ()) / sqrt (double (n));
 }