Use of C99 extra long double math functions after r236148

Rainer Hurling rhurlin at gwdg.de
Tue Jul 10 16:54:56 UTC 2012


On 10.07.2012 17:11 (UTC+2), David Schultz wrote:
> On Tue, Jul 10, 2012, Rainer Hurling wrote:
>> On 10.07.2012 16:02 (UTC+2), Warner Losh wrote:
>>>
>>> On Jul 10, 2012, at 3:10 AM, Rainer Hurling wrote:
>>>> As far as I understand from discussions on R mailing list
>>>> (r-devel at r-project.org), they plan to reduce the emulation and/or
>>>> workaround of long and complex math functions for FreeBSD and other
>>>> systems with their next releases of R devel. So we could really need some
>>>> progress with our C99 conform math functions ;-)
>>>
>>> Not having R would be a bit pain in my backside.  That's one of the
>>> practical considerations that I was talking about.  It is very real, and
>>> if I have to, I'll commit the #define junk I railed against to get it
>>> back.  Please, let's get some progress.  I have some time to help.
>>
>> Yes, thank you Warner, that is also my problem. As I wrote some weeks
>> ago (05/28/2012) when starting this thread, I am using FreeBSD as a
>> scientific desktop because of its good scaling properties. For some
>> years now, FreeBSD fits all our needs with R, SAGA GIS, PostgreSQL and
>> some more.
>>
>> If I would not be able to run upcoming versions of R on FreeBSD any
>> more, that would be really, really hard :-(
>
> Do you have a list of the essential functions here?  There are 17 long
> double functions and some complex functions missing, but only a
> handful of those are of general interest.  The reason I ask is that if
> R is just looking for a few missing functions that are already mostly
> implemented, then the best solution is probably to finish that work.
> But if it's expecting us to have something arcane like long double
> Bessel functions of the first kind, then we need to pursue a workaround
> in the short term.
>

That is, what I found by grepping the sources of a recent R development 
version:

expl:   src/nmath/pnchisq.c

log10l: src/extra/trio/trio.c

log1pl: src/nmath/pnbeta.c

logl:   src/nmath/dnbeta.c
         src/nmath/pnbeta.c

powl:   src/extra/trio/triostr.c
         src/extra/trio/trio.c
         src/main/format.c


In the R NEWS file I found the following three entries about C99 
(complex) functions:

NEWS:l2044
The C99 functions acosh, asinh, atanh, snprintf and vsnprintf are
now required.

NEWS:l3032
The C99 double complex type is now required.
The C99 complex trigonometric functions (such as csin) are not
currently required (FreeBSD lacks most of them): substitutes are
used if they are missing.

NEWS:l3277
Complex arithmetic (notably z^n for complex z and integer n) gave
incorrect results since R 2.10.0 on platforms without C99 complex
support.  This and some lesser issues in trigonometric functions
have been corrected.
Such platforms were rare (we know of Cygwin and FreeBSD).
However, because of new compiler optimizations in the way complex
arguments are handled, the same code was selected on x86_64 Linux
with gcc 4.5.x at the default -O2 optimization (but not at -O).


 From the discussions on the R-devel mailing list we could expect, that 
there will be more complex (long, longlong) functions introduced in the 
near future. (But it is very likely that b.f. does know much more about 
this.)

Rainer


BTW: There seems to be a discrepancy about missing functions listed in
http://wiki.freebsd.org/MissingMathStuff and in
http://svnweb.freebsd.org/base/head/lib/msun/src/math.h?r1=227472&r2=236148&pathrev=236148. 
So the wiki is a bit outdated now?


More information about the freebsd-current mailing list