code: function halve_(x) {
    var i;
    for (i=0; i<x.length-1; i++) {
      x[i]=mask & ((x[i+1]<<(bpe-1)) | (x[i]>>1));
    }
    x[i]=(x[i]>>1) | (x[i] & (radix>>1));  //most significant bit stays the same
  }
docs: do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement