Elements of RealDoubleField (RDF) have some methods that are implemented using GSL.
Would we be able to eliminate this dependency? Some of the functions, like isnan, are available in the standard C library since C99. Do functions like gsl_sf_sin have advantages over using functions from the math library? Others, for example gsl_sf_erf, would be available through scipy.special. $ git grep gsl src/sage/rings/real_double.pyx src/sage/rings/real_double.pyx:from sage.libs.*gsl*.all cimport * src/sage/rings/real_double.pyx:*gsl*_set_error_handler_off() src/sage/rings/real_double.pyx: return self(*gsl*_sf_fact(n)) src/sage/rings/real_double.pyx: if *gsl*_isnan(self._value): src/sage/rings/real_double.pyx: if *gsl*_isinf(self._value): src/sage/rings/real_double.pyx: cdef int isinf = *gsl* _isinf(self._value) src/sage/rings/real_double.pyx: cdef bint isnan = *gsl* _isnan(self._value) src/sage/rings/real_double.pyx: if *gsl*_isnan(self._value): src/sage/rings/real_double.pyx: return *gsl*_isnan(self._value) src/sage/rings/real_double.pyx: return *gsl*_isinf(self._value) > 0 src/sage/rings/real_double.pyx: return *gsl*_isinf(self._value) < 0 src/sage/rings/real_double.pyx: return *gsl*_isinf(self._value) src/sage/rings/real_double.pyx: return self._new_c(sign * *gsl* _sf_exp(*gsl*_sf_log(v) * exponent)) src/sage/rings/real_double.pyx: return self._new_c(*gsl*_pow_int(self._value, <int>n)) src/sage/rings/real_double.pyx: a = self._new_c(*gsl*_sf_log(self._value) / log_of_base) src/sage/rings/real_double.pyx: return self._log_base(*gsl* _sf_log(float(base))) src/sage/rings/real_double.pyx: a = self._new_c(*gsl*_sf_log(self._value) * M_1_LN2) src/sage/rings/real_double.pyx: a = self._new_c(*gsl*_sf_log(self._value) * M_1_LN10) src/sage/rings/real_double.pyx: a = self._new_c(*gsl*_sf_log(self._value) * M_1_LNPI) src/sage/rings/real_double.pyx: a = self._new_c(*gsl* _sf_exp(self._value)) src/sage/rings/real_double.pyx: a = self._new_c(*gsl*_sf_exp(self._value * M_LN2)) src/sage/rings/real_double.pyx: a = self._new_c(*gsl*_sf_exp(self._value * M_LN10)) src/sage/rings/real_double.pyx: return self._new_c(*gsl* _sf_cos(self._value)) src/sage/rings/real_double.pyx: return self._new_c(*gsl* _sf_sin(self._value)) src/sage/rings/real_double.pyx: return self._new_c(*gsl* _sf_dilog(self._value)) src/sage/rings/real_double.pyx: return self._new_c(*gsl* _sf_angle_restrict_symm(self._value)) src/sage/rings/real_double.pyx: cos = *gsl*_sf_cos(self._value) src/sage/rings/real_double.pyx: a = self._new_c(*gsl*_sf_sin(self._value) / cos) src/sage/rings/real_double.pyx: a = self._new_c(*gsl*_sf_hypot(self._value, float(other))) src/sage/rings/real_double.pyx: return self._new_c(*gsl*_ldexp( *gsl*_sf_exp(self._value) + *gsl*_sf_exp(-self._value), -1)) # (e^x + e^-x)/2 src/sage/rings/real_double.pyx: return self._new_c(*gsl*_ldexp( *gsl*_sf_expm1(self._value) - *gsl*_sf_expm1(-self._value), -1)) # (e^x - e^-x)/2 src/sage/rings/real_double.pyx: return self._new_c(*gsl* _acosh(self._value)) src/sage/rings/real_double.pyx: return self._new_c(*gsl* _asinh(self._value)) src/sage/rings/real_double.pyx: return self._new_c(*gsl* _atanh(self._value)) src/sage/rings/real_double.pyx: return self._new_c(*gsl* _sf_erf(self._value)) src/sage/rings/real_double.pyx: a = self._new_c(*gsl* _sf_gamma(self._value)) src/sage/rings/real_double.pyx: return self._new_c(*gsl* _sf_zeta(self._value)) src/sage/rings/real_double.pyx: if *gsl*_finite(x): src/sage/rings/real_double.pyx: cdef int v = *gsl*_isinf(x) -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/398b1668-ac65-4208-81a7-7f96c1edd830n%40googlegroups.com.