On Fri, Jan 1, 2010 at 11:03 PM, Karthik Subramanian <[email protected]> wrote: > On Fri, Jan 1, 2010 at 10:52 PM, Pierre Abbat <[email protected]> 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.
