실수를 정수로 빠르게 변환하는 방법
글쓴이: 체스맨 / 작성시간: 목, 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:


댓글 달기