This is the mail archive of the
gsl-discuss@sources.redhat.com
mailing list for the GSL project.
unexpected result with gsl_sf_lngamma_e
- To: gsl-discuss at sources dot redhat dot com
- Subject: unexpected result with gsl_sf_lngamma_e
- From: Laura Evans <lje5 at cornell dot edu>
- Date: Fri, 12 Oct 2001 09:25:28 -0400
- Cc: Bill Noon <noon at snow dot cit dot cornell dot edu>
I am working with gsl-0.9.3 and was comparing gsl_sf_lngamma_e to our
own version of this routine. Execution of gsl_sf_lngamma_e resulted
in a core dump when I executed it with a value of -1
PROBLEM: error code not returned on error branch.
The error message before the differenceAbort was as follows:
gsl:gamma.c 775: ERROR: error
I looked at /gsl-0.9.3/specfunc/gamma.c line 775, and find
775 GSL_ERROR ("error", GSL_EDOM);
An error code is not returned. The other branches return
GSL_SUCCESS .
My impression from the documentation was that I should check
the integer status field
after execution of this routine to determine whether the
routine executed successfully.
See, for example, line 52 of /gsl-0.9.3/specfunc/laguerre.c
52 int stat_lg = gsl_sf_lngamma_e(b+n, &lg_b).
Thus, the observed behavior seems to be a bug.
SUGGESTED FIX: return an error code
I have changed line 775 in my version of gamma.c, as follows:
775 return GSL_EDOM
I then receive a non-zero return code. My user application
then knows there was an
error and can handle that as required.