| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright 2012 Google Inc. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license that can be | |
| 5 * found in the LICENSE file. | |
| 6 */ | |
| 7 | |
| 8 #if 0 | |
| 9 // snippets that one day may be useful, unused for now... | |
| 10 | |
| 11 // get sign, exponent, mantissa from double | |
| 12 // Translate the double into sign, exponent and mantissa. | |
| 13 long bits = BitConverter.DoubleToInt64Bits(d); | |
| 14 // Note that the shift is sign-extended, hence the test against -1 not 1 | |
| 15 bool negative = (bits < 0); | |
| 16 int exponent = (int) ((bits >> 52) & 0x7ffL); | |
| 17 long mantissa = bits & 0xfffffffffffffL; | |
| 18 | |
| 19 // Subnormal numbers; exponent is effectively one higher, | |
| 20 // but there's no extra normalisation bit in the mantissa | |
| 21 if (exponent==0) | |
| 22 { | |
| 23 exponent++; | |
| 24 } | |
| 25 // Normal numbers; leave exponent as it is but add extra | |
| 26 // bit to the front of the mantissa | |
| 27 else | |
| 28 { | |
| 29 mantissa = mantissa | (1L<<52); | |
| 30 } | |
| 31 | |
| 32 // Bias the exponent. It's actually biased by 1023, but we're | |
| 33 // treating the mantissa as m.0 rather than 0.m, so we need | |
| 34 // to subtract another 52 from it. | |
| 35 exponent -= 1075; | |
| 36 | |
| 37 if (mantissa == 0) | |
| 38 { | |
| 39 return "0"; | |
| 40 } | |
| 41 | |
| 42 /* Normalize */ | |
| 43 while((mantissa & 1) == 0) | |
| 44 { /* i.e., Mantissa is even */ | |
| 45 mantissa >>= 1; | |
| 46 exponent++; | |
| 47 } | |
| 48 #endif | |
| OLD | NEW |