anchor.diff:        }
       }
       if (r._used > 0) {
  -      r._digits[r._used - 1] += _am(i, _digits[i], r, 2*i, 0, 1);
  +      r._digits[r._used - 1] += _am(i, _digits[i], r, 2*i, 1);
       }
       r._neg = false;
       r._clamp();
  
positive.code:       var qd = (r._digits[--i] == y0)
            ? DIGIT_MASK
            : (r._digits[i]*d1 + (r._digits[i - 1] + e)*d2).floor();
        if ((r._digits[i] += y._am(0, qd, r, j, 0, y_used)) < qd) {  // Try it out
          y._dlShiftTo(j, t);
          r._subTo(t, r);
          while (r._digits[i] < --qd) {
  
negative.code:       // Use _am to combine the multiply-shift-add into one call.
        j = i + _m._used;
        var digit = x._digits[j];
        digit += _m ._am(0, u0, x, i, _m._used);
        // Propagate carry.
        while (digit >= _Bigint.DIGIT_BASE) {
          digit -= _Bigint.DIGIT_BASE;
          x._digits[j++] = digit;
  