실수를 정수로 빠르게 변환하는 방법
글쓴이: 체스맨 / 작성시간: 목, 2004/12/09 - 6:36오후
다음 스레드에 올린 글인데, 팁이 될 것 같아 여기에 옮깁니다.
http://bbs.kldp.org/viewtopic.php?t=48025
_integer4 는 4바이트 정수에 대한 typedef 입니다.
아키텍쳐에 맞게 정의면 됩니다.
반올림은 자동으로 처리됩니다.
IEEE 754 표준 부동 소수점 형식을 사용하는 경우에만 잘 작동합니다.
#ifdef __BIGENDIAN__ # define FTOI_INDEX 1 #else # define FTOI_INDEX 0 #endif #define USE_FTOI register union{ double r; _integer4 l[2]; } __ftoitmp; #define OP_FTOI(val) \ ( ( (__ftoitmp.r=(val)+((((65536.*65536.*16.)+(65536.*.5))*65536.)) ), \ __ftoitmp.l[FTOI_INDEX]-0x80000000L ) )
Forums:
댓글 달기