docs: public FDBigInt sub(FDBigInt other)
  	{
  		int r[] = new int[this.nWords];
  		int i;
  		int n = this.nWords;
  		int m = other.nWords;
  		int nzeros = 0;
  		long c = 0L;
  		for (i = 0; i < n; i++)
  		{
  			c += (long) this.data[i] & 0xffffffffL;
  			if (i < m)
  			{
  				c -= (long) other.data[i] & 0xffffffffL;
  			}
  			if ((r[i] = (int) c) == 0)
  				nzeros++;
  			else
  				nzeros = 0;
  			c >>= 32; // signed shift
  		}
  		assert c == 0L : c; // borrow out of subtract
  		assert dataInRangeIsZero(i, m, other); // negative result of subtract
  		return new FDBigInt(r, n - nzeros);
  	}