22 #ifndef __FASTROUNDING__
23 #define __FASTROUNDING__
31 #if defined (_MSC_VER )
87 #define CLAM_ACTIVATE_FAST_ROUNDING \
88 unsigned CLAM_FPU_STATE_WORD;\
89 CLAM_FPU_STATE_WORD = _controlfp( 0, 0 );\
91 #define CLAM_DEACTIVATE_FAST_ROUNDING \
92 _controlfp( CLAM_FPU_STATE_WORD, _MCW_RC ); \
95 inline int Chop(
float a )
112 inline int Round(
float a )
116 static const float half = 0.5f;
135 #define CLAM_ACTIVATE_FAST_ROUNDING
136 #define CLAM_DEACTIVATE_FAST_ROUNDING
138 inline int Chop(
float a )
142 unsigned int saved = _controlfp(0, 0);
143 _controlfp(_RC_CHOP, _MCW_RC);
150 _controlfp(saved, _MCW_RC);
154 inline int Round(
float a )
158 static const float half = 0.5f;
160 unsigned int saved = _controlfp(0, 0);
161 _controlfp(_RC_CHOP, _MCW_RC);
169 _controlfp(saved, _MCW_RC);
175 #endif // End of DEBUG check
177 #else // Not Microsoft Visual C
180 #define CLAM_ACTIVATE_FAST_ROUNDING
181 #define CLAM_DEACTIVATE_FAST_ROUNDING
200 #endif // FastRounding.hxx