function rotateY$2(out, a, rad) {
	    var s = SIMD.Float32x4.splat(Math.sin(rad)),
	        c = SIMD.Float32x4.splat(Math.cos(rad));

	    if (a !== out) { // If the source and destination differ, copy the unchanged rows
	        out[4]  = a[4];
	        out[5]  = a[5];
	        out[6]  = a[6];
	        out[7]  = a[7];
	        out[12] = a[12];
	        out[13] = a[13];
	        out[14] = a[14];
	        out[15] = a[15];
	    }

	    // Perform axis-specific matrix multiplication
	    var a_0 = SIMD.Float32x4.load(a, 0);
	    var a_2 = SIMD.Float32x4.load(a, 8);
	    SIMD.Float32x4.store(out, 0,
	                         SIMD.Float32x4.sub(SIMD.Float32x4.mul(a_0, c), SIMD.Float32x4.mul(a_2, s)));
	    SIMD.Float32x4.store(out, 8,
	                         SIMD.Float32x4.add(SIMD.Float32x4.mul(a_0, s), SIMD.Float32x4.mul(a_2, c)));
	    return out;
	}
/**
	 * Rotates a matrix by the given angle around the Y axis using SIMD
	 *
	 * @param {mat4} out the receiving matrix
	 * @param {mat4} a the matrix to rotate
	 * @param {Number} rad the angle to rotate the matrix by
	 * @returns {mat4} out
	 */
Rotates a matrix by the given angle around the Y axis using SIMD
@param {mat4} out the receiving matrix
@param {mat4} a the matrix to rotate
@param {Number} rad the angle to rotate the matrix by
@returns {mat4} out
Rotates a matrix by the given angle around the Y axis using SIMD @param { mat4 } out the receiving matrix @param { mat4 } a the matrix to rotate @param { Number } rad the angle to rotate the matrix by @returns { mat4 } out
function rotateY$2(out, a, rad) {
	    var s = SIMD.Float32x4.splat(Math.sin(rad)),
	        c = SIMD.Float32x4.splat(Math.cos(rad));
	    if (a !== out) { 
	        out[4]  = a[4];
	        out[5]  = a[5];
	        out[6]  = a[6];
	        out[7]  = a[7];
	        out[12] = a[12];
	        out[13] = a[13];
	        out[14] = a[14];
	        out[15] = a[15];
	    }
	    var a_0 = SIMD.Float32x4.load(a, 0);
	    var a_2 = SIMD.Float32x4.load(a, 8);
	    SIMD.Float32x4.store(out, 0,
	                         SIMD.Float32x4.sub(SIMD.Float32x4.mul(a_0, c), SIMD.Float32x4.mul(a_2, s)));
	    SIMD.Float32x4.store(out, 8,
	                         SIMD.Float32x4.add(SIMD.Float32x4.mul(a_0, s), SIMD.Float32x4.mul(a_2, c)));
	    return out;
	}
function rotateY$2 ( out , a , rad ) { var s = SIMD . Float32x4 . splat ( Math . sin ( rad ) ) , c = SIMD . Float32x4 . splat ( Math . cos ( rad ) ) ; if ( a !== out ) { out [ 4 ] = a [ 4 ] ; out [ 5 ] = a [ 5 ] ; out [ 6 ] = a [ 6 ] ; out [ 7 ] = a [ 7 ] ; out [ 12 ] = a [ 12 ] ; out [ 13 ] = a [ 13 ] ; out [ 14 ] = a [ 14 ] ; out [ 15 ] = a [ 15 ] ; } var a_0 = SIMD . Float32x4 . load ( a , 0 ) ; var a_2 = SIMD . Float32x4 . load ( a , 8 ) ; SIMD . Float32x4 . store ( out , 0 , SIMD . Float32x4 . sub ( SIMD . Float32x4 . mul ( a_0 , c ) , SIMD . Float32x4 . mul ( a_2 , s ) ) ) ; SIMD . Float32x4 . store ( out , 8 , SIMD . Float32x4 . add ( SIMD . Float32x4 . mul ( a_0 , s ) , SIMD . Float32x4 . mul ( a_2 , c ) ) ) ; return out ; }
Rotates a matrix by the given angle around the Y axis using SIMD
 @param {mat4} out the receiving matrix
 @param {mat4} a the matrix to rotate
 @param {Number} rad the angle to rotate the matrix by
 @returns {mat4} out
Rotates a matrix by the given angle around the Y axis using SIMD @param { mat4 } out the receiving matrix @param { mat4 } a the matrix to rotate @param { Number } rad the angle to rotate the matrix by @returns { mat4 } out
// If the source and destination differ, copy the unchanged rows // Perform axis-specific matrix multiplication