Skip to content

Instantly share code, notes, and snippets.

Created April 19, 2017 04:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/1fdc609d56264fb389f6f4deeef521ae to your computer and use it in GitHub Desktop.
Save anonymous/1fdc609d56264fb389f6f4deeef521ae to your computer and use it in GitHub Desktop.
matrix multiplication
Mat.mul = function (a, b) {
var r = Mat.identity(),
rm = Mat.identity();
rm[0] = a[0] * b[0];
rm[1] = a[1] * b[4];
rm[2] = a[2] * b[8];
rm[3] = a[3] * b[12];
r[0] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[1] * b[0];
rm[1] = a[5] * b[1];
rm[2] = a[9] * b[2];
rm[3] = a[13] * b[3];
r[1] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[0] * b[2];
rm[1] = a[1] * b[6];
rm[2] = a[2] * b[10];
rm[3] = a[3] * b[14];
r[2] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[0] * b[3];
rm[1] = a[1] * b[7];
rm[2] = a[2] * b[11];
rm[3] = a[3] * b[15];
r[3] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[4] * b[0];
rm[1] = a[5] * b[4];
rm[2] = a[6] * b[8];
rm[3] = a[7] * b[12];
r[4] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[4] * b[1];
rm[1] = a[5] * b[5];
rm[2] = a[6] * b[9];
rm[3] = a[7] * b[13];
r[5] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[4] * b[2];
rm[1] = a[5] * b[6];
rm[2] = a[6] * b[10];
rm[3] = a[7] * b[14];
r[6] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[4] * b[3];
rm[1] = a[5] * b[7];
rm[2] = a[6] * b[11];
rm[3] = a[7] * b[15];
r[7] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[8] * b[0];
rm[1] = a[9] * b[4];
rm[2] = a[10] * b[8];
rm[3] = a[11] * b[12];
r[8] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[8] * b[1];
rm[1] = a[9] * b[5];
rm[2] = a[10] * b[9];
rm[3] = a[11] * b[13];
r[9] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[8] * b[2];
rm[1] = a[9] * b[6];
rm[2] = a[10] * b[10];
rm[3] = a[11] * b[14];
r[10] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[8] * b[3];
rm[1] = a[9] * b[7];
rm[2] = a[10] * b[11];
rm[3] = a[11] * b[15];
r[11] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[12] * b[0];
rm[1] = a[13] * b[4];
rm[2] = a[14] * b[8];
rm[3] = a[15] * b[12];
r[12] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[12] * b[1];
rm[1] = a[13] * b[5];
rm[2] = a[14] * b[9];
rm[3] = a[15] * b[13];
r[13] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[12] * b[2];
rm[1] = a[13] * b[6];
rm[2] = a[14] * b[10];
rm[3] = a[15] * b[14];
r[14] = rm[0] + rm[1] + rm[2] + rm[3];
rm[0] = a[12] * b[3];
rm[1] = a[13] * b[7];
rm[2] = a[14] * b[11];
rm[3] = a[15] * b[15];
r[15] = rm[0] + rm[1] + rm[2] + rm[3];
return r;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment