tgamma function in math library

Karthik Subramanian karthik301176 at gmail.com
Fri Jan 1 09:40:14 PST 2010


On Fri, Jan 1, 2010 at 11:03 PM, Karthik Subramanian
<karthik301176 at gmail.com> wrote:
> On Fri, Jan 1, 2010 at 10:52 PM, Pierre Abbat <phma at phma.optus.nu> wrote:
>> I just copied one of my programming projects to the laptop and attempted to
>> compile it. The compiler bombed out on the line:
>>  denom=tgamma(sh);
>> According to the man page for gamma on Linux:
>>
>>   *BSD version
>>       4.4BSD and FreeBSD libm have a gamma() function that computes the Gamma
>>       function, as one would expect.
>>
>>   glibc version
>>       Glibc has a gamma() function that is equivalent to  lgamma()  and  com‐
>>       putes  the  natural logarithm of the Gamma function.  (This is for com‐
>>       patibility reasons only.  Don’t use this function.)
>>
>> How should I write the program so that it uses tgamma() on Linux and gamma()
>> on DragonFly?
>>
>> Pierre
>> --
>> La sal en el mar es más que en la sangre.
>> Le sel dans la mer est plus que dans le sang.
>>
>
> Perhaps you could write a wrapper called gamma() that does something like this:
>
> =====
> struct    utsname *ub;
>
> /* malloc, etc. */
>
> if(uname(ub)) {
>    die();
> }
>
> if (strcmp(ub->sysname, "Linux") {
>   tgamma();
> } else {
>   gamma();
> }
> =====
>
> You could also go the #ifdef LINUX route - in which case you need to
> make sure to define LINUX
> when compiling your code on linux.
>
> There are probably better ways of doing this, I'll leave it to more
> knowledgeable people on the list
> to answer :)
>
> K.
>

Sorry, forgot to mention - you might want to look at man 3 uname (on
DragonFly - on linux it's man 2 uname.).

K.





More information about the Users mailing list