Home | History | Annotate | Download | only in Intersection
      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
     49