function am1(i,x,w,j,c,n) {
  var this_array = this.array;
  var w_array    = w.array;
  while(--n >= 0) {
    var v = x*this_array[i++]+w_array[j]+c;
    c = Math.floor(v/0x4000000);
    w_array[j++] = v&0x3ffffff;
  }
  return c;
}
function am1(i,x,w,j,c,n) {
  var this_array = this.array;
  var w_array    = w.array;
  while(--n >= 0) {
    var v = x*this_array[i++]+w_array[j]+c;
    c = Math.floor(v/0x4000000);
    w_array[j++] = v&0x3ffffff;
  }
  return c;
}
function am1 ( i , x , w , j , c , n ) { var this_array = this . array ; var w_array = w . array ; while ( -- n >= 0 ) { var v = x * this_array [ i ++ ] + w_array [ j ] + c ; c = Math . floor ( v / 0x4000000 ) ; w_array [ j ++ ] = v & 0x3ffffff ; } return c ; }
am1: use a single mult and divide to get the high bits, max digit bits should be 26 because max internal value = 2*dvalue^2-2*dvalue (< 2^53)
am1 : use a single mult and divide to get the high bits max digit bits should be 26 because max internal value = 2 * dvalue^2 - 2 * dvalue ( < 2^53 )