code: function bnpSubTo(a,r) {
    var this_array = this.array;
    var r_array = r.array;
    var a_array = a.array;
    var i = 0, c = 0, m = Math.min(a.t,this.t);
    while(i < m) {
      c += this_array[i]-a_array[i];
      r_array[i++] = c&BI_DM;
      c >>= BI_DB;
    }
    if(a.t < this.t) {
      c -= a.s;
      while(i < this.t) {
        c += this_array[i];
        r_array[i++] = c&BI_DM;
        c >>= BI_DB;
      }
      c += this.s;
    }
    else {
      c += this.s;
      while(i < a.t) {
        c -= a_array[i];
        r_array[i++] = c&BI_DM;
        c >>= BI_DB;
      }
      c -= a.s;
    }
    r.s = (c<0)?-1:0;
    if(c < -1) r_array[i++] = BI_DV+c;
    else if(c > 0) r_array[i++] = c;
    r.t = i;
    r.clamp();
  }
docs: (protected) r = this - a