docs: function ldexp( frac, exp ) {
  	var high;
  	var tmp;
  	var w;
  	var m;
  	if (
  		frac === 0 || // handles +-0
  		frac !== frac || // handles NaN
  		frac === PINF ||
  		frac === NINF
  	) {
  		return frac;
  	}
  	// Normalize the input fraction:
  	tmp = normalize( frac );
  	frac = tmp[ 0 ];
  	exp += tmp[ 1 ];
  
  	// Extract the exponent from `frac` and add it to `exp`:
  	exp += floatExp( frac );
  
  	// Check for underflow/overflow...
  	if ( exp < MIN_SUBNORMAL_EXPONENT ) {
  		return copysign( 0, frac );
  	}
  	if ( exp > MAX_EXPONENT ) {
  		if ( frac < 0 ) {
  			return NINF;
  		}
  		return PINF;
  	}
  	// Check for a subnormal and scale accordingly to retain precision...
  	if ( exp <= MAX_SUBNORMAL_EXPONENT ) {
  		exp += 52;
  		m = TWO52_INV;
  	} else {
  		m = 1.0;
  	}
  	// Split the fraction into higher and lower order words:
  	w = toWords( frac );
  	high = w[ 0 ];
  
  	// Clear the exponent bits within the higher order word:
  	high &= CLEAR_EXP_MASK;
  
  	// Set the exponent bits to the new exponent:
  	high |= ((exp+BIAS) << 20);
  
  	// Create a new floating-point number:
  	return m * fromWords( high, w[ 1 ] );
  }