From: Yusuke ENDOH Date: 2008-03-17T01:59:25+09:00 Subject: [ruby-dev:34068] lgamma_r requires _REENTRANT on Solaris 遠藤と申します。 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