遠藤と申します。

Solaris で lgamma_r を使うためには _REENTRANT マクロを宣言する
必要があるようです。現状では暗黙の宣言によって返り値が int に
なっているようで、結果的に間違った答えが返されています。


$ ./ruby -ve 'p Math.gamma(-1.5)'
ruby 1.9.0 (2008-03-16 revision 15786) [sparc-solaris2.9]
1.0

$ ./configure CFLAGS="-D_REENTRANT" ...
$ make
$ ./ruby -ve 'p Math.gamma(-1.5)'
ruby 1.9.0 (2008-03-16 revision 15786) [sparc-solaris2.9]
2.36327180120735


$ gcc -Wall -g -O2 -I.ext/include/sparc-solaris2.9 -I./include \
  -DRUBY_EXPORT -o tgamma.o -c ./missing/tgamma.c
./missing/tgamma.c: In function `tgamma':
./missing/tgamma.c:27: warning: unused variable `sign'
./missing/tgamma.c:36: warning: implicit declaration of function `lgamma_r'

$ gcc -Wall -g -O2 -I.ext/include/sparc-solaris2.9 -I./include \
  -DRUBY_EXPORT -D_REENTRANT -o tgamma.o -c ./missing/tgamma.c
./missing/tgamma.c: In function `tgamma':
./missing/tgamma.c:27: warning: unused variable `sign'


パッケージングのことはわからないので報告だけ。

-- 
Yusuke ENDOH <mame / tsg.ne.jp>