@cindex synchrotron functions

The functions described in this section are declared in the header file
@file{gsl_sf_synchrotron.h}.

@deftypefun double gsl_sf_synchrotron_1 (double @var{x})
@deftypefunx int gsl_sf_synchrotron_1_e (double @var{x}, gsl_sf_result * @var{result})
These routines compute the first synchrotron function 
@c{$x \int_x^\infty dt K_{5/3}(t)$}
@math{x \int_x^\infty dt K_@{5/3@}(t)} for @c{$x \ge 0$}
@math{x >= 0}.
@comment Domain: x >= 0.0
@comment Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW
@end deftypefun
 
@deftypefun double gsl_sf_synchrotron_2 (double @var{x})
@deftypefunx int gsl_sf_synchrotron_2_e (double @var{x}, gsl_sf_result * @var{result})
These routines compute the second synchrotron function 
@c{$x K_{2/3}(x)$}
@math{x K_@{2/3@}(x)} for @c{$x \ge 0$}
@math{x >= 0}.
@comment Domain: x >= 0.0
@comment Exceptional Return Values: GSL_EDOM, GSL_EUNDRFLW
@end deftypefun
