This is the mail archive of the
mailing list for the GCC project.
Re: [gfortran] I/O of large integer and real kinds
On Wed, Jun 08, 2005 at 10:55:11AM +0200, FX Coudert wrote:
> >The above looks correct because log10l is not currently in libm.
> >FreeBSD does not use glibc. I'm guessing that __log10l is
> >suppose to be a builtin function, but I haven't gone looking.
> log10l is garanteed in C99, so I took it for granted. What is the
> FreeBSD way to compute log10 of long doubles?
FreeBSD's math.h shows that only a handful of the C99 long double
functions are currently implemented. Unfortunately, log10l is
not one of those. These are the implemented functions: ceill,
copysignl, fabsl, fdiml, floorl, fmal, fmaxl, fminl, frexpl, ilogbl,
ldexpl, llroundl, lroundl, nextafterl, nexttowardl, roundl, scalblnl,
scalbnl, and truncl.
For your use in the IO routines, we can probably hack together an approximate
log10l by using frexpl, but this would only solve the FreeBSD issue.
log10l (long double x)
long double f;
f = frexpl(x, &n); /* For x > 0., we have 0.5 <= f < 1. */
f = n * 0.301029999566398119521L + (long double) log10 ((double) f);