function bnpDAddOffset(n,w) {
  var this_array = this.array;
  while(this.t <= w) this_array[this.t++] = 0;
  this_array[w] += n;
  while(this_array[w] >= BI_DV) {
    this_array[w] -= BI_DV;
    if(++w >= this.t) this_array[this.t++] = 0;
    ++this_array[w];
  }
}
function bnpDAddOffset(n,w) {
  var this_array = this.array;
  while(this.t <= w) this_array[this.t++] = 0;
  this_array[w] += n;
  while(this_array[w] >= BI_DV) {
    this_array[w] -= BI_DV;
    if(++w >= this.t) this_array[this.t++] = 0;
    ++this_array[w];
  }
}
function bnpDAddOffset ( n , w ) { var this_array = this . array ; while ( this . t <= w ) this_array [ this . t ++ ] = 0 ; this_array [ w ] += n ; while ( this_array [ w ] >= BI_DV ) { this_array [ w ] -= BI_DV ; if ( ++ w >= this . t ) this_array [ this . t ++ ] = 0 ; ++ this_array [ w ] ; } }
(protected) this += n << w words, this >= 0
( protected ) this + = n << w words this > = 0