Index: src/nmath/dnbeta.c --- src/nmath/dnbeta.c.orig 2013-03-06 00:02:41.000000000 +0100 +++ src/nmath/dnbeta.c 2015-04-20 20:17:52.329200028 +0200 @@ -118,7 +118,7 @@ sum += term; } while (term > sum * eps); -#ifdef HAVE_LONG_DOUBLE +#if defined(HAVE_LONG_DOUBLE) && !defined(__FreeBSD__) return R_D_exp((double)(p_k + logl(sum))); #else return R_D_exp((double)(p_k + log(sum))); Index: src/nmath/pgamma.c --- src/nmath/pgamma.c.orig 2015-03-19 00:04:00.000000000 +0100 +++ src/nmath/pgamma.c 2015-04-20 20:18:52.740085978 +0200 @@ -252,7 +252,7 @@ * * without causing overflows or throwing much accuracy. */ -#ifdef HAVE_LONG_DOUBLE +#if defined(HAVE_LONG_DOUBLE) && !defined(__FreeBSD__) # define EXP expl # define LOG logl #else Index: src/nmath/pnbeta.c --- src/nmath/pnbeta.c.orig 2014-03-13 00:03:20.000000000 +0100 +++ src/nmath/pnbeta.c 2015-04-20 20:18:24.989193826 +0200 @@ -92,7 +92,7 @@ /* return R_DT_val(ans), but we want to warn about cancellation here */ if (lower_tail) -#ifdef HAVE_LONG_DOUBLE +#if defined(HAVE_LONG_DOUBLE) && !defined(__FreeBSD__) return (double) (log_p ? logl(ans) : ans); #else return log_p ? log(ans) : ans; Index: src/nmath/pnchisq.c --- src/nmath/pnchisq.c.orig 2014-04-23 00:15:04.000000000 +0200 +++ src/nmath/pnchisq.c 2015-04-20 20:19:13.409182190 +0200 @@ -29,7 +29,7 @@ * bad precision & non-convergence in some cases (x ~= f, both LARGE) */ -#ifdef HAVE_LONG_DOUBLE +#if defined(HAVE_LONG_DOUBLE) && !defined(__FreeBSD__) # define EXP expl # define FABS fabsl # define LOG logl