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