
{{alias}}( shape, stridesX, stridesY, stridesZ )
    Reorders ndarray dimensions and associated strides for loop interchange.

    The function returns an object having the following properties:

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

    For all returned arrays, the first element corresponds to the innermost
    loop, and the last element corresponds to the outermost loop.

    The function assumes that the input and output ndarrays have the same shape.
    Hence, loop interchange order should only be determined after broadcasting.

    Parameters
    ----------
    shape: ArrayLikeObject<integer>
        Array dimensions.

    stridesX: ArrayLikeObject<integer>
        First input array strides.

    stridesY: ArrayLikeObject<integer>
        Second input array strides.

    stridesZ: ArrayLikeObject<integer>
        Output array strides.

    Returns
    -------
    out: Object
        Loop interchange data.

    out.sh: Array<integer>
        Ordered dimensions.

    out.sx: Array<integer>
        First input array strides sorted in loop order.

    out.sy: Array<integer>
        Second input array strides sorted in loop order.

    out.sz: Array<integer>
        Output array strides sorted in loop order.

    Examples
    --------
    > var x = {{alias:@stdlib/ndarray/array}}( [ [ 1, 2 ], [ 3, 4 ] ] );
    > var y = {{alias:@stdlib/ndarray/array}}( [ [ 5, 6 ], [ 7, 8 ] ] );
    > var z = {{alias:@stdlib/ndarray/array}}( [ [ 0, 0 ], [ 0, 0 ] ] );
    > var o = {{alias}}( x.shape, x.strides, y.strides, z.strides )
    {...}

    See Also
    --------

