#include // FIXME: use lanczos approximation float __lgammaf_r(float, int *); float tgammaf(float x) { int sign; float y; y = exp(__lgammaf_r(x, &sign)); if (sign < 0) y = -y; return y; }