Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sbin/ping6 Avoid NaN when calculating std-dev, which fixes a...



details:   https://anonhg.NetBSD.org/src/rev/339c37f43ab9
branches:  trunk
changeset: 757743:339c37f43ab9
user:      ahoka <ahoka%NetBSD.org@localhost>
date:      Mon Sep 20 11:49:48 2010 +0000

description:
Avoid NaN when calculating std-dev, which fixes a crash on VAX.

diffstat:

 sbin/ping6/ping6.c |  14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diffs (35 lines):

diff -r edd299f668ce -r 339c37f43ab9 sbin/ping6/ping6.c
--- a/sbin/ping6/ping6.c        Mon Sep 20 10:21:10 2010 +0000
+++ b/sbin/ping6/ping6.c        Mon Sep 20 11:49:48 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ping6.c,v 1.72 2009/04/11 07:45:48 lukem Exp $ */
+/*     $NetBSD: ping6.c,v 1.73 2010/09/20 11:49:48 ahoka Exp $ */
 /*     $KAME: ping6.c,v 1.164 2002/11/16 14:05:37 itojun Exp $ */
 
 /*
@@ -77,7 +77,7 @@
 #else
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: ping6.c,v 1.72 2009/04/11 07:45:48 lukem Exp $");
+__RCSID("$NetBSD: ping6.c,v 1.73 2010/09/20 11:49:48 ahoka Exp $");
 #endif
 #endif
 
@@ -2109,8 +2109,14 @@
        if (nreceived && timing) {
                /* Only display average to microseconds */
                double num = nreceived + nrepeats;
-               double avg = tsum / num;
-               double dev = sqrt((tsumsq - num * avg * avg) / (num - 1));
+               double dev, avg;
+               if (num > 1) {
+                       avg = tsum / num;
+                       dev = sqrt((tsumsq - num * avg * avg) / (num - 1));
+               } else {
+                       avg = tsum;
+                       dev = 0.0;
+               }
                (void)printf(
                    "round-trip min/avg/max/std-dev = %.3f/%.3f/%.3f/%.3f ms\n",
                    tmin, avg, tmax, dev);



Home | Main Index | Thread Index | Old Index