anchor.diff:  
     // Bits per half digit.
     static const int DIGIT2_BITS = DIGIT_BITS >> 1;
  -  static const int DIGIT2_BASE = 1 << DIGIT2_BITS;
     static const int DIGIT2_MASK = (1 << DIGIT2_BITS) - 1;
   
     // Allocate extra digits so the bigint can be reused.
     static const int EXTRA_DIGITS = 4;
  -
  -  // Floating-point unit integer precision.
  -  static const int FP_BITS = 52;
  -  static const int FP_BASE = 1 << FP_BITS;
  -  static const int FP_D1 = FP_BITS - DIGIT_BITS;
  -  static const int FP_D2 = 2 * DIGIT_BITS - FP_BITS;
   
     // Min and max of non bigint values.
     static const int MIN_INT64 = (-1) << 63;
  
positive.code:     if (r == null) {
        r = new _Bigint();
      }
      var y = new _Bigint();
      var nsh = DIGIT_BITS - _nbits(a._digits[a._used - 1]);  // normalize modulus
      if (nsh > 0) {
        a._lShiftTo(nsh, y);
        _lShiftTo(nsh, r);
  
negative.code:     r._used = y_used;
      r._clamp();
      if (nsh > 0) {
        r._rShiftTo(nsh, r);  // Denormalize remainder.
      }
      if (_neg) {
        ZERO._subTo(r, r);
  