Стандартная библиотека C99 содержит гамма-функцию, double tgamma(double)
.Это тесно связано с факториалом, поэтому вы можете определить:
#include <cmath>
double factorial(double x) {return std::tgamma(x+1);}
Это должно быть доступно в любой реализации C ++ 11, но не обязательно в реализации C ++ 03, которая можеттолько включить библиотеку C90.Если ваша реализация не имеет его, то библиотека Boost.Math делает.