changeset 1078:5ba0f0c110c8

* tests/clock.c (main): Add a fudge factor in case the absolute values from clock() are small, in which case the percentage variation would be large.
author jlarmour
date Thu, 26 Jun 2003 04:52:38 +0000
parents e4850e482c80
children b4dd94e7d372
files packages/language/c/libc/time/current/ChangeLog packages/language/c/libc/time/current/tests/clock.c
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/packages/language/c/libc/time/current/ChangeLog
+++ b/packages/language/c/libc/time/current/ChangeLog
@@ -1,3 +1,10 @@
+2003-06-26  Brij Bihari Pandey  <fuzzhead012@yahoo.com>
+2003-06-26  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* tests/clock.c (main): Add a fudge factor in case the absolute values
+	from clock() are small, in which case the percentage variation
+	would be large.
+
 2003-06-13  Jonathan Larmour  <jifl@eCosCentric.com>
 
 	* tests/clock.c (main): Avoid div-by-zero if mean==0.
--- a/packages/language/c/libc/time/current/tests/clock.c
+++ b/packages/language/c/libc/time/current/tests/clock.c
@@ -96,6 +96,11 @@ cyg_start(void)
 // Percentage error before we declare fail: range 0 - 100
 #define TOLERANCE 40
 
+// Permissible absolute deviation from mean value to take care of incorrect
+// failure conclusions in case of small mean values (if absolute values of
+// clock() are small, percentage variation can be large)
+#define FUDGE_FACTOR 6
+
 // Number of samples to take
 #define SAMPLES 30
 
@@ -160,6 +165,7 @@ main(int argc, char *argv[])
 {
     unsigned long mean=0, sum=0, maxerr=0;
     int i;
+    unsigned int absdev;
 
     CYG_TEST_INIT();
 
@@ -221,9 +227,10 @@ main(int argc, char *argv[])
     for (i=SKIPPED_SAMPLES;i<SAMPLES;i++) {
         unsigned long err;
 
+        absdev = my_abs(ctrs[i]-mean);
         // use mean+1 as divisor to avoid div-by-zero
-        err = (100 * my_abs(ctrs[i]-mean)) / (mean+1);
-        if (err > TOLERANCE) {
+        err = (100 * absdev) / (mean+1);
+        if (err > TOLERANCE && absdev > FUDGE_FACTOR) {
             diag_printf("mean=%d, ctrs[%d]=%d, err=%d\n", mean, i, ctrs[i],
                         err);
             CYG_TEST_FAIL_FINISH("clock() within tolerance");