function copyLower( M, N, A, strideA1, strideA2, offsetA, B, strideB1, strideB2, offsetB ) {
	var ia;
	var ib;
	var i0;
	var i1;
	var ja;
	var jb;

	ia = offsetA;
	ib = offsetB;
	if ( isRowMajor( [ strideA1, strideA2 ] ) ) {
		for ( i1 = 0; i1 < M; i1++ ) {
			ja = ia;
			jb = ib;
			for ( i0 = 0; i0 <= min( i1, N-1 ); i0++ ) {
				B[ jb ] = A[ ja ];
				B[ jb+1 ] = A[ ja+1 ];
				ja += strideA2;
				jb += strideB2;
			}
			ia += strideA1;
			ib += strideB1;
		}
		return B;
	}
	for ( i1 = 0; i1 < N; i1++ ) {
		ja = ia + ( i1*strideA1 );
		jb = ib + ( i1*strideB1 );
		for ( i0 = i1; i0 < M; i0++ ) {
			B[ jb ] = A[ ja ];
			B[ jb+1 ] = A[ ja+1 ];
			ja += strideA1;
			jb += strideB1;
		}
		ia += strideA2;
		ib += strideB2;
	}
	return B;
}
Copies the lower triangular/trapezoidal part of a matrix `A` to another matrix `B`.

@private
@param {NonNegativeInteger} M - number of rows in matrix `A`
@param {NonNegativeInteger} N - number of columns in matrix `A`
@param {Float32Array} A - input matrix
@param {integer} strideA1 - stride of the first dimension of `A`
@param {integer} strideA2 - stride of the second dimension of `A`
@param {NonNegativeInteger} offsetA - starting index for `A`
@param {Float32Array} B - output matrix
@param {integer} strideB1 - stride of the first dimension of `B`
@param {integer} strideB2 - stride of the second dimension of `B`
@param {NonNegativeInteger} offsetB - starting index for `B`
@returns {Float32Array} `B`

@example
var Float32Array = require( '@stdlib/array/float32' );

var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );
var B = new Float32Array( 8 );

copyLower( 2, 2, A, 4, 2, 0, B, 4, 2, 0 );
// B => <Float32Array>[ 1.0, 2.0, 0.0, 0.0, 5.0, 6.0, 7.0, 8.0 ]

@example
var Float32Array = require( '@stdlib/array/float32' );

var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );
var B = new Float32Array( 8 );

copyLower( 2, 2, A, 4, -2, 2, B, 4, 2, 0 );
// B => <Float32Array>[ 3.0, 4.0, 0.0, 0.0, 7.0, 8.0, 5.0, 6.0 ]

@example
var Float32Array = require( '@stdlib/array/float32' );

var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );
var B = new Float32Array( 8 );

copyLower( 2, 2, A, -4, 2, 4, B, 4, 2, 0 );
// B => <Float32Array>[ 5.0, 6.0, 0.0, 0.0, 1.0, 2.0, 3.0, 4.0 ]

@example
var Float32Array = require( '@stdlib/array/float32' );

var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );
var B = new Float32Array( 8 );

copyLower( 2, 2, A, -4, -2, 6, B, 4, 2, 0 );
// B => <Float32Array>[ 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 1.0, 2.0 ]

@example
var Float32Array = require( '@stdlib/array/float32' );

var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );
var B = new Float32Array( 8 );

copyLower( 2, 2, A, 2, 4, 0, B, 4, 2, 0 );
// B => <Float32Array>[ 1.0, 2.0, 0.0, 0.0, 3.0, 4.0, 7.0, 8.0 ]

@example
var Float32Array = require( '@stdlib/array/float32' );

var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );
var B = new Float32Array( 8 );

copyLower( 2, 2, A, -2, 4, 2, B, 4, 2, 0 );
// B => <Float32Array>[ 3.0, 4.0, 0.0, 0.0, 1.0, 2.0, 5.0, 6.0 ]

@example
var Float32Array = require( '@stdlib/array/float32' );

var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );
var B = new Float32Array( 8 );

copyLower( 2, 2, A, 2, -4, 4, B, 4, 2, 0 );
// B => <Float32Array>[ 5.0, 6.0, 0.0, 0.0, 7.0, 8.0, 3.0, 4.0 ]

@example
var Float32Array = require( '@stdlib/array/float32' );

var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] );
var B = new Float32Array( 8 );

copyLower( 2, 2, A, -2, -4, 6, B, 4, 2, 0 );
// B => <Float32Array>[ 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 1.0, 2.0 ]