anchor.diff:    void _absAndTo(_Bigint a, _Bigint r) {
       var r_used = (_used < a._used) ? _used : a._used;
       r._ensureLength(r_used);
  +    var digits = _digits;
  +    var a_digits = a._digits;
  +    var r_digits = r._digits;
       for (var i = 0; i < r_used; i++) {
  -      r._digits[i] = _digits[i] & a._digits[i];
  +      r_digits[i] = digits[i] & a_digits[i];
       }
       r._used = r_used;
       r._clamp();
  
positive.code: 
    // r = this^2, r != this.
    void _sqrTo(_Bigint r) {
      var i = 2 * _used;
      r._ensureLength(i);
      r._used = i;
      while (--i >= 0) {
        r._digits[i] = 0;
      }
      for (i = 0; i < _used - 1; ++i) {
        var c = _am(i, _digits[i], r, 2*i, 1);
        var d = r._digits[i + _used];
        d += _amc(i + 1, _digits[i] << 1, r, 2*i + 1, c, _used - i - 1);
        if (d >= DIGIT_BASE) {
          r._digits[i + _used] = d - DIGIT_BASE;
          r._digits[i + _used + 1] = 1;
        } else {
          r._digits[i + _used] = d;
        }
      }
      if (r._used > 0) {
        r._digits[r._used - 1] += _am(i, _digits[i], r, 2*i, 1);
      }
      r._neg = false;
      r._clamp();
    }
  
negative.code:     var r = _used - a._used;
      if (r == 0) {
        var i = _used;
        var digits = _digits;
        var a_digits = a._digits;
        while (--i >= 0 && (r = digits[i] - a_digits[i]) == 0);
      }
      return r;
    }
  