function bnpBitwiseTo(a,op,r) {
  var this_array = this.array;
  var a_array    = a.array;
  var r_array    = r.array;
  var i, f, m = Math.min(a.t,this.t);
  for(i = 0; i < m; ++i) r_array[i] = op(this_array[i],a_array[i]);
  if(a.t < this.t) {
    f = a.s&BI_DM;
    for(i = m; i < this.t; ++i) r_array[i] = op(this_array[i],f);
    r.t = this.t;
  }
  else {
    f = this.s&BI_DM;
    for(i = m; i < a.t; ++i) r_array[i] = op(f,a_array[i]);
    r.t = a.t;
  }
  r.s = op(this.s,a.s);
  r.clamp();
}
function bnpBitwiseTo(a,op,r) {
  var this_array = this.array;
  var a_array    = a.array;
  var r_array    = r.array;
  var i, f, m = Math.min(a.t,this.t);
  for(i = 0; i < m; ++i) r_array[i] = op(this_array[i],a_array[i]);
  if(a.t < this.t) {
    f = a.s&BI_DM;
    for(i = m; i < this.t; ++i) r_array[i] = op(this_array[i],f);
    r.t = this.t;
  }
  else {
    f = this.s&BI_DM;
    for(i = m; i < a.t; ++i) r_array[i] = op(f,a_array[i]);
    r.t = a.t;
  }
  r.s = op(this.s,a.s);
  r.clamp();
}
function bnpBitwiseTo ( a , op , r ) { var this_array = this . array ; var a_array = a . array ; var r_array = r . array ; var i , f , m = Math . min ( a . t , this . t ) ; for ( i = 0 ; i < m ; ++ i ) r_array [ i ] = op ( this_array [ i ] , a_array [ i ] ) ; if ( a . t < this . t ) { f = a . s & BI_DM ; for ( i = m ; i < this . t ; ++ i ) r_array [ i ] = op ( this_array [ i ] , f ) ; r . t = this . t ; } else { f = this . s & BI_DM ; for ( i = m ; i < a . t ; ++ i ) r_array [ i ] = op ( f , a_array [ i ] ) ; r . t = a . t ; } r . s = op ( this . s , a . s ) ; r . clamp ( ) ; }
(protected) r = this op a (bitwise)
( protected ) r = this op a ( bitwise )