transpose.js
function transpose(out, a) {
  // If we are transposing ourselves we can skip a few steps but have to cache some values
  if (out === a) {
    var a1 = a[1]
    out[1] = a[2]
    out[2] = a1
  } else {
    out[0] = a[0]
    out[1] = a[2]
    out[2] = a[1]
    out[3] = a[3]
  }

  return out
}
function transpose(out, a) {
  // If we are transposing ourselves we can skip a few steps but have to cache some values
  if (out === a) {
    var a1 = a[1]
    out[1] = a[2]
    out[2] = a1
  } else {
    out[0] = a[0]
    out[1] = a[2]
    out[2] = a[1]
    out[3] = a[3]
  }

  return out
}
function transpose ( out , a ) { // If we are transposing ourselves we can skip a few steps but have to cache some values if ( out === a ) { var a1 = a [ 1 ] out [ 1 ] = a [ 2 ] out [ 2 ] = a1 } else { out [ 0 ] = a [ 0 ] out [ 1 ] = a [ 2 ] out [ 2 ] = a [ 1 ] out [ 3 ] = a [ 3 ] } return out }
Transpose the values of a mat2

@alias mat2.transpose
@param {mat2} out the receiving matrix
@param {mat2} a the source matrix
@returns {mat2} out
Transpose the values of a mat2