The GSL special functions are each supposed to have two alternative functional interfaces, a pure one: double function(x, ...) and one allowing for full error returns: int function_e(x, ... gsl_sf_result * result) But the Mathieu function code doesn't follow this convention. It doesn't offer the former interface at all and uses the second convention for all its functions BUT without the '_e' name extension on its function declarations. This is quite error prone since it is easy to assume that *gsl_sf_result is simply a reference to a double when in fact it is a structure that is longer than this (a library user on Windows made exactly this mistake and wondered why his code was causing an illegal access exception). I am doubtful that this is an intentional feature of the Mathieu function code so I have created the attached patch to update the code to use the normal conventions of the GSL special functions. (this needs testing since I have only tried it on WIndows). If this is adopted, the documentation will need updating as well (unfortunately I am unable to do this). with my best regards, Brian Gladman