function constructDoubleDisplay( x, y, interval ) {
	var xLeafWidth;
	var yLeafWidth;
	var stemWidth;
	var lastStem;
	var nSpaces;
	var lines;
	var line;
	var lmax;
	var chrs;
	var data;
	var arr;
	var lfs;
	var len;
	var stm;
	var i;
	var v;
	var n;

	data = [];
	for ( i = 0; i < x.length; i++ ) {
		v = {
			'val': x[ i ],
			'class': 'x'
		};
		data.push( v );
	}
	for ( i = 0; i < y.length; i++ ) {
		v = {
			'val': y[ i ],
			'class': 'y'
		};
		data.push( v );
	}
	len = data.length;

	data.sort( ascending2 );

	stemWidth = 0;
	xLeafWidth = 0;
	yLeafWidth = 0;

	stm = new Array( len );
	lfs = new Array( len );
	for ( i = 0; i < len; i++ ) {
		stm[ i ] = floor( data[ i ].val / interval );
		chrs = stm[ i ].toString().length;
		if ( chrs > stemWidth ) {
			stemWidth = chrs;
		}
		if ( data[i].class === 'x' ) {
			lfs[ i ] = data[ i ].val % interval;
			chrs = lfs[ i ].toString().length;
			if ( chrs > xLeafWidth ) {
				xLeafWidth = chrs;
			}
		} else if ( data[i].class === 'y' ) {
			lfs[ i ] = data[ i ].val % interval;
			chrs = lfs[ i ].toString().length;
			if ( chrs > yLeafWidth ) {
				yLeafWidth = chrs;
			}
		}
	}

	lines = [];
	line = '';
	for ( i = 0; i < len; i++ ) {
		while ( lastStem < stm[ i ] ) {
			lines.push( line );
			lastStem += 1;
			n = lastStem.toString().length - 1;
			line = '& | ' + spaces( stemWidth - n ) + lastStem + ' | ';
		}
		if ( stm[ i ] !== lastStem ) {
			if ( line ) {
				lines.push( line );
			}
			v = stm[ i ].toString();
			n = v.length - 1;
			line = '& | ';
			line += spaces( stemWidth - n ) + v;
			line += ' | ';
		}
		v = lfs[ i ].toString();
		n = v.length;
		if ( data[i].class === 'x' ) {
			line = v + spaces( xLeafWidth - n ) + ' ' + line;
		} else if ( data[i].class === 'y' ) {
			line = line + v + spaces( xLeafWidth - n ) + ' ';
		}
		lastStem = stm[ i ];
	}

	// Align lines...
	lmax = 0;
	for ( i = 0; i < lines.length; i++ ) {
		v = lines[ i ].indexOf( '|' );
		if ( v > lmax ) {
			lmax = v;
		}
	}
	for ( i = 0; i < lines.length; i++ ) {
		arr = lines[ i ].split( '&', 2 );
		nSpaces = lmax - arr[ 0 ].length;
		arr[ 0 ] = spaces( nSpaces ) + arr[ 0 ];
		lines[ i ] = arr[ 0 ] + arr[ 1 ];
	}

	return lines.join( '\n' );
}
Create string representation of stem-and-leaf plot for two data vectors.

@private
@param {(Array|TypedArray)} x - first input data
@param {(Array|TypedArray)} y - second input data
@param {PositiveInteger} interval - 10**leafDigits
@returns {string} chart representation