This is the mail archive of the gsl-discuss@sources.redhat.com mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

unexpected result with gsl_sf_lngamma_e


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]