function product( workspace, acc, x ) {
	// Split the incoming value into a normalized fraction and exponent:
	frexp( x, workspace, 1, 0 );

	// Update the accumulated fraction:
	acc.frac *= workspace[ 0 ];

	// Update the accumulated exponent:
	acc.exp += workspace[ 1 ];

	// Ensure fraction remains normalized to avoid overflow/underflow...
	if ( acc.frac > -0.5 && acc.frac < 0.5 ) {
		frexp( acc.frac, workspace, 1, 0 );
		acc.frac = workspace[ 0 ];
		acc.exp += workspace[ 1 ];
	}
	return ldexp( acc.frac, acc.exp );
}
Computes an updated product.

@private
@param {Array} workspace - workspace array
@param {Object} acc - accumulated fractional and exponent parts
@param {number} x - multiplicative factor
@returns {number} product