a3f05facab
git-svn-id: http://skia.googlecode.com/svn/trunk@4118 2bbb7eff-a529-9590-31e7-b0007b416f81
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
|
|
#if 0
|
|
// snippets that one day may be useful, unused for now...
|
|
|
|
// get sign, exponent, mantissa from double
|
|
// Translate the double into sign, exponent and mantissa.
|
|
long bits = BitConverter.DoubleToInt64Bits(d);
|
|
// Note that the shift is sign-extended, hence the test against -1 not 1
|
|
bool negative = (bits < 0);
|
|
int exponent = (int) ((bits >> 52) & 0x7ffL);
|
|
long mantissa = bits & 0xfffffffffffffL;
|
|
|
|
// Subnormal numbers; exponent is effectively one higher,
|
|
// but there's no extra normalisation bit in the mantissa
|
|
if (exponent==0)
|
|
{
|
|
exponent++;
|
|
}
|
|
// Normal numbers; leave exponent as it is but add extra
|
|
// bit to the front of the mantissa
|
|
else
|
|
{
|
|
mantissa = mantissa | (1L<<52);
|
|
}
|
|
|
|
// Bias the exponent. It's actually biased by 1023, but we're
|
|
// treating the mantissa as m.0 rather than 0.m, so we need
|
|
// to subtract another 52 from it.
|
|
exponent -= 1075;
|
|
|
|
if (mantissa == 0)
|
|
{
|
|
return "0";
|
|
}
|
|
|
|
/* Normalize */
|
|
while((mantissa & 1) == 0)
|
|
{ /* i.e., Mantissa is even */
|
|
mantissa >>= 1;
|
|
exponent++;
|
|
}
|
|
#endif
|