This is the mail archive of the
gsl-discuss@sourceware.org
mailing list for the GSL project.
Re: cvs version: make check FAIL
- From: Lowell Johnson <ldj00 at sio dot midco dot net>
- To: gsl-discuss at sourceware dot org
- Cc: Giulio Bottazzi <giulio dot bottazzi at libero dot it>,gsl-discuss <gsl-discuss at sources dot redhat dot com>
- Date: Tue, 23 May 2006 21:09:19 -0500
- Subject: Re: cvs version: make check FAIL
- References: <20060524000329.8cb0b5c2.giulio.bottazzi@libero.it>
On Tuesday 23 May 2006 05:03 pm, Giulio Bottazzi wrote:
> Hi,
> the following is obtained with make check on AMD64
>
> make[2]: Entering directory `/usr/local/gsl/specfunc'
> FAIL: gsl_sf_mathieu_c(0, 10.0, 0.0, &r) [2146]
> expected: 0.007626517570935782
> obtained: 0.007626517570935777 1.693427080992244e-18 2.22045e-16
> fracdiff: 3.411891718287791e-16
> value/expected not consistent within reported error
> 0.00762651757093577715 1.69342708099224407e-18
[snip additional Mathieu function test failures]
Hi Giulio,
It looks like I set the computed error tolerances too tight for cases
where the absolute value of the result is less than 1. I've attached a
patch to the specfunc directory that works for me.
The Mathieu functions are new to the trunk, and I've only tested on AMD
Athlon. Hopefully a thorough testing on multiple architectures will
identify any additional issues.
Thanks.
Lowell
--
Lowell D. Johnson
Linux: Bringing stability, security, and freedom to home and business
computing since 1991. www.linux.org
Free and Open Source Software: Of the people, by the people, for the
people.
Index: mathieu_angfunc.c
===================================================================
RCS file: /cvs/gsl/gsl/specfunc/mathieu_angfunc.c,v
retrieving revision 1.1
diff -u -r1.1 mathieu_angfunc.c
--- mathieu_angfunc.c 18 Apr 2006 17:59:46 -0000 1.1
+++ mathieu_angfunc.c 24 May 2006 01:52:53 -0000
@@ -54,7 +54,9 @@
fn = cos(order*zz)/norm;
result->val = fn;
- result->err = GSL_DBL_EPSILON*fabs(fn);
+ result->err = 2.0*GSL_DBL_EPSILON;
+ if (fabs(fn) > 1.0)
+ result->err *= fabs(fn);
return GSL_SUCCESS;
}
@@ -97,7 +99,9 @@
fn /= norm;
result->val = fn;
- result->err = GSL_DBL_EPSILON*fabs(fn);
+ result->err = 2.0*GSL_DBL_EPSILON;
+ if (fabs(fn) > 1.0)
+ result->err *= fabs(fn);
return GSL_SUCCESS;
}
@@ -126,7 +130,9 @@
fn = sin(order*zz);
result->val = fn;
- result->err = GSL_DBL_EPSILON*fabs(fn);
+ result->err = 2.0*GSL_DBL_EPSILON;
+ if (fabs(fn) > 1.0)
+ result->err *= fabs(fn);
return GSL_SUCCESS;
}
@@ -167,7 +173,9 @@
fn /= norm;
result->val = fn;
- result->err = GSL_DBL_EPSILON*fabs(fn);
+ result->err = 2.0*GSL_DBL_EPSILON;
+ if (fabs(fn) > 1.0)
+ result->err *= fabs(fn);
return GSL_SUCCESS;
}
Index: mathieu_radfunc.c
===================================================================
RCS file: /cvs/gsl/gsl/specfunc/mathieu_radfunc.c,v
retrieving revision 1.1
diff -u -r1.1 mathieu_radfunc.c
--- mathieu_radfunc.c 18 Apr 2006 17:59:46 -0000 1.1
+++ mathieu_radfunc.c 24 May 2006 01:52:54 -0000
@@ -141,7 +141,9 @@
}
result->val = fn;
- result->err = GSL_DBL_EPSILON*fabs(fn);
+ result->err = 2.0*GSL_DBL_EPSILON;
+ if (fabs(fn) > 1.0)
+ result->err *= fabs(fn);
return GSL_SUCCESS;
}
@@ -268,7 +270,9 @@
}
result->val = fn;
- result->err = GSL_DBL_EPSILON*fabs(fn);
+ result->err = 2.0*GSL_DBL_EPSILON;
+ if (fabs(fn) > 1.0)
+ result->err *= fabs(fn);
return GSL_SUCCESS;
}