function binaryLoopOrder( sh, sx, sy, sz ) {
	var tmp = loopOrder( sh, [ sx, sy, sz ] );
	return {
		'sh': tmp[ 0 ],
		'sx': tmp[ 1 ],
		'sy': tmp[ 2 ],
		'sz': tmp[ 3 ]
	};
}
Reorders ndarray dimensions and associated strides for loop interchange.

## Notes

-   The returned object has the following properties:

    -   **sh**: dimensions sorted in loop order.
    -   **sx**: first input ndarray strides sorted in loop order.
    -   **sy**: second input ndarray strides sorted in loop order.
    -   **sz**: output ndarray strides sorted in loop order.

@param {NonNegativeIntegerArray} sh - array dimensions
@param {IntegerArray} sx - first input array stride lengths
@param {IntegerArray} sy - second input array stride lengths
@param {IntegerArray} sz - output array stride lengths
@returns {Object} loop interchange data

@example
var sh = [ 2, 3, 4 ];

var sx = [ 12, 4, 1 ]; // row-major
var sy = [ 24, 8, 1 ]; // row-major
var sz = [ 1, -2, 6 ]; // column-major

var o = binaryLoopOrder( sh, sx, sy, sz );
// returns {...}

var ssh = o.sh;
// returns [ 4, 3, 2 ]

var ssx = o.sx;
// returns [ 1, 4, 12 ]

var ssy = o.sy;
// returns [ 1, 8, 24 ]

var ssz = o.sz;
// returns [ 6, -2, 1 ]