2008年10月7日火曜日

FreeBSDでsincos

glibcではsincosを使うことができるが, FreeBSD上ではlibcに入っていないので使うことができない. 以下のようなインクルードファイルを作ってやれば一応使える. 以前どこかのページで見て使っていたのだが, どこのページだったかは失念してしまった.
inline void sincos(double t, double *s, double *c){
asm("fsincos;" : "=t" (*c), "=u" (*s) : "0" (t) : "st(7)");
// *s = sin(t); *c = cos(t)
}