Esempio n. 1
0
float
lgammaf(float x) {
	float	 y;

	if (isnanf(x))
		return (x * x);
	y = (float)__k_lgamma((double)x, &signgamf);
	signgam = signgamf;	/* SUSv3 requires the setting of signgam */
	return (y);
}
Esempio n. 2
0
double
gamma(double x) {
	double	g;

	if (!finite(x))
		return (x * x);

	g = rint(x);
	if (x == g && x <= 0.0) {
		signgam = 1;
		return (_SVID_libm_err(x, x, 41));
	}

	g = __k_lgamma(x, &signgam);
	if (!finite(g))
	    g = _SVID_libm_err(x, x, 40);
	return (g);
}
Esempio n. 3
0
float
lgammaf_r(float x, int *signgamfp) {
	if (isnanf(x))
		return (x * x);
	return ((float)__k_lgamma((double)x, signgamfp));
}