// Wild Magic Source Code // David Eberly // http://www.geometrictools.com // Copyright (c) 1998-2008 // // This library is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation; either version 2.1 of the License, or (at // your option) any later version. The license is available for reading at // either of the locations: // http://www.gnu.org/copyleft/lgpl.html // http://www.geometrictools.com/License/WildMagicLicense.pdf // // Version: 4.0.0 (2006/06/28) #ifndef WM4MATHMCR_H #define WM4MATHMCR_H //---------------------------------------------------------------------------- // Fast conversion from a IEEE 32-bit floating point number F in [0,1] to a // a 32-bit integer I in [0,2^L-1]. // // fFloat = F // iLog = L // iInt = I #define WM4_SCALED_FLOAT_TO_INT(fFloat,iLog,iInt)\ { \ int iShift = 150 - iLog - ((*(int*)(&fFloat) >> 23) & 0xFF); \ if ( iShift < 24 ) \ { \ iInt = ((*(int*)(&fFloat) & 0x007FFFFF) | \ 0x00800000) >> iShift; \ if ( iInt == (1 << iLog) ) \ { \ iInt--; \ } \ } \ else \ { \ iInt = 0; \ } \ } //---------------------------------------------------------------------------- #endif