From 97d7a9260e4f2f335b3632180877c25e0efdc8e3 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Fri, 25 Nov 2011 13:51:55 +0100 Subject: tvdiff_secs(): sub-zero time difference adjustment Skip a floating point addition operation when integral part of time difference is zero. This avoids potential floating point addition rounding problems while preserving decimal part value. --- tests/libtest/testutil.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'tests/libtest') diff --git a/tests/libtest/testutil.c b/tests/libtest/testutil.c index 63393c589..4ee488e71 100644 --- a/tests/libtest/testutil.c +++ b/tests/libtest/testutil.c @@ -123,8 +123,11 @@ long tutil_tvdiff(struct timeval newer, struct timeval older) */ double tutil_tvdiff_secs(struct timeval newer, struct timeval older) { - return (double)(newer.tv_sec-older.tv_sec)+ - (double)(newer.tv_usec-older.tv_usec)/1000000.0; + if(newer.tv_sec != older.tv_sec) + return (double)(newer.tv_sec-older.tv_sec)+ + (double)(newer.tv_usec-older.tv_usec)/1000000.0; + else + return (double)(newer.tv_usec-older.tv_usec)/1000000.0; } /* return the number of seconds in the given input timeval struct */ -- cgit v1.2.3