Commit 87fce2b9 authored by bradnelson@google.com's avatar bradnelson@google.com

This fixes some warnings in the Linux release build.

Review URL: http://codereview.chromium.org/194061

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25802 0039d316-1c4b-4281-b951-d872f2087c98
parent bc2a2dd4
...@@ -161,7 +161,6 @@ uint16 FloatToHalf(float value) { ...@@ -161,7 +161,6 @@ uint16 FloatToHalf(float value) {
} }
float HalfToFloat(uint16 half) { float HalfToFloat(uint16 half) {
unsigned int value;
unsigned int sign = static_cast<unsigned int>(half >> 15); unsigned int sign = static_cast<unsigned int>(half >> 15);
unsigned int mantissa = static_cast<unsigned int>(half & ((1 << 10) - 1)); unsigned int mantissa = static_cast<unsigned int>(half & ((1 << 10) - 1));
unsigned int exponent = static_cast<unsigned int>( unsigned int exponent = static_cast<unsigned int>(
...@@ -198,8 +197,12 @@ float HalfToFloat(uint16 half) { ...@@ -198,8 +197,12 @@ float HalfToFloat(uint16 half) {
exponent = (exponent << 13) + kHalfFloatMinBiasedExpAsSingleFpExponent; exponent = (exponent << 13) + kHalfFloatMinBiasedExpAsSingleFpExponent;
} }
value = (sign << 31) | exponent | mantissa; union {
return *((float *)&value); unsigned int int_value;
float float_value;
} value;
value.int_value = (sign << 31) | exponent | mantissa;
return value.float_value;
} }
} // namespace Vectormath } // namespace Vectormath
...@@ -225,4 +228,6 @@ float FrobeniusNorm(const Matrix4& matrix) { ...@@ -225,4 +228,6 @@ float FrobeniusNorm(const Matrix4& matrix) {
} }
return sqrtf(sumOfElementsSquared); return sqrtf(sumOfElementsSquared);
} }
const float kPi = ::acosf(-1.0f);
} // namespace o3d } // namespace o3d
...@@ -79,11 +79,7 @@ float FrobeniusNorm(const Matrix3& matrix); ...@@ -79,11 +79,7 @@ float FrobeniusNorm(const Matrix3& matrix);
// See http://en.wikipedia.org/wiki/Matrix_norm // See http://en.wikipedia.org/wiki/Matrix_norm
float FrobeniusNorm(const Matrix4& matrix); float FrobeniusNorm(const Matrix4& matrix);
const float kPi = acosf(-1.0f); extern const float kPi;
} // namespace o3d } // namespace o3d
#endif // O3D_CORE_CROSS_MATH_UTILITIES_H_ #endif // O3D_CORE_CROSS_MATH_UTILITIES_H_
...@@ -239,16 +239,19 @@ TEST_F(MemoryStreamTest, EndianSanityFloat32) { ...@@ -239,16 +239,19 @@ TEST_F(MemoryStreamTest, EndianSanityFloat32) {
uint8 *p8 = reinterpret_cast<uint8*>(p); uint8 *p8 = reinterpret_cast<uint8*>(p);
MemoryWriteStream write_stream(p8, sizeof(int32) * 2); MemoryWriteStream write_stream(p8, sizeof(int32) * 2);
float value = 3.14159f; union {
write_stream.WriteLittleEndianFloat32(value); int32 ivalue;
write_stream.WriteBigEndianFloat32(value); float fvalue;
} value;
value.fvalue = 3.14159f;
write_stream.WriteLittleEndianFloat32(value.fvalue);
write_stream.WriteBigEndianFloat32(value.fvalue);
// Verify that the bytes are in the correct order // Verify that the bytes are in the correct order
int32 ivalue = *reinterpret_cast<int32*>(&value); // interpret float as int32 uint8 byte1 = value.ivalue & 0xff;
uint8 byte1 = ivalue & 0xff; uint8 byte2 = (value.ivalue >> 8) & 0xff;
uint8 byte2 = (ivalue >> 8) & 0xff; uint8 byte3 = (value.ivalue >> 16) & 0xff;
uint8 byte3 = (ivalue >> 16) & 0xff; uint8 byte4 = (value.ivalue >> 24) & 0xff;
uint8 byte4 = (ivalue >> 24) & 0xff;
// validate little-endian // validate little-endian
EXPECT_EQ(byte1, p8[0]); EXPECT_EQ(byte1, p8[0]);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment