function bnpRShiftTo(n,r) {
  var this_array = this.array;
  var r_array = r.array;
  r.s = this.s;
  var ds = Math.floor(n/BI_DB);
  if(ds >= this.t) { r.t = 0; return; }
  var bs = n%BI_DB;
  var cbs = BI_DB-bs;
  var bm = (1<<bs)-1;
  r_array[0] = this_array[ds]>>bs;
  for(var i = ds+1; i < this.t; ++i) {
    r_array[i-ds-1] |= (this_array[i]&bm)<<cbs;
    r_array[i-ds] = this_array[i]>>bs;
  }
  if(bs > 0) r_array[this.t-ds-1] |= (this.s&bm)<<cbs;
  r.t = this.t-ds;
  r.clamp();
}
function bnpRShiftTo(n,r) {
  var this_array = this.array;
  var r_array = r.array;
  r.s = this.s;
  var ds = Math.floor(n/BI_DB);
  if(ds >= this.t) { r.t = 0; return; }
  var bs = n%BI_DB;
  var cbs = BI_DB-bs;
  var bm = (1<<bs)-1;
  r_array[0] = this_array[ds]>>bs;
  for(var i = ds+1; i < this.t; ++i) {
    r_array[i-ds-1] |= (this_array[i]&bm)<<cbs;
    r_array[i-ds] = this_array[i]>>bs;
  }
  if(bs > 0) r_array[this.t-ds-1] |= (this.s&bm)<<cbs;
  r.t = this.t-ds;
  r.clamp();
}
function bnpRShiftTo ( n , r ) { var this_array = this . array ; var r_array = r . array ; r . s = this . s ; var ds = Math . floor ( n / BI_DB ) ; if ( ds >= this . t ) { r . t = 0 ; return ; } var bs = n % BI_DB ; var cbs = BI_DB - bs ; var bm = ( 1 << bs ) - 1 ; r_array [ 0 ] = this_array [ ds ] >> bs ; for ( var i = ds + 1 ; i < this . t ; ++ i ) { r_array [ i - ds - 1 ] |= ( this_array [ i ] & bm ) << cbs ; r_array [ i - ds ] = this_array [ i ] >> bs ; } if ( bs > 0 ) r_array [ this . t - ds - 1 ] |= ( this . s & bm ) << cbs ; r . t = this . t - ds ; r . clamp ( ) ; }
(protected) r = this >> n
( protected ) r = this >> n