public Mat4f mul(Mat4f rhs) { Mat4f m = new Mat4f(); float r; float t0; float t1; float t2; float t3; r = rhs.get(0, 0); t0 = this.get(0, 0) * r; t1 = this.get(1, 0) * r; t2 = this.get(2, 0) * r; t3 = this.get(3, 0) * r; r = rhs.get(1, 0); t0 += this.get(0, 1) * r; t1 += this.get(1, 1) * r; t2 += this.get(2, 1) * r; t3 += this.get(3, 1) * r; r = rhs.get(2, 0); t0 += this.get(0, 2) * r; t1 += this.get(1, 2) * r; t2 += this.get(2, 2) * r; t3 += this.get(3, 2) * r; r = rhs.get(3, 0); t0 += this.get(0, 3) * r; t1 += this.get(1, 3) * r; t2 += this.get(2, 3) * r; t3 += this.get(3, 3) * r; m.e[index(0, 0)] = t0; m.e[index(1, 0)] = t1; m.e[index(2, 0)] = t2; m.e[index(3, 0)] = t3; r = rhs.get(0, 1); t0 = this.get(0, 0) * r; t1 = this.get(1, 0) * r; t2 = this.get(2, 0) * r; t3 = this.get(3, 0) * r; r = rhs.get(1, 1); t0 += this.get(0, 1) * r; t1 += this.get(1, 1) * r; t2 += this.get(2, 1) * r; t3 += this.get(3, 1) * r; r = rhs.get(2, 1); t0 += this.get(0, 2) * r; t1 += this.get(1, 2) * r; t2 += this.get(2, 2) * r; t3 += this.get(3, 2) * r; r = rhs.get(3, 1); t0 += this.get(0, 3) * r; t1 += this.get(1, 3) * r; t2 += this.get(2, 3) * r; t3 += this.get(3, 3) * r; m.e[index(0, 1)] = t0; m.e[index(1, 1)] = t1; m.e[index(2, 1)] = t2; m.e[index(3, 1)] = t3; r = rhs.get(0, 2); t0 = this.get(0, 0) * r; t1 = this.get(1, 0) * r; t2 = this.get(2, 0) * r; t3 = this.get(3, 0) * r; r = rhs.get(1, 2); t0 += this.get(0, 1) * r; t1 += this.get(1, 1) * r; t2 += this.get(2, 1) * r; t3 += this.get(3, 1) * r; r = rhs.get(2, 2); t0 += this.get(0, 2) * r; t1 += this.get(1, 2) * r; t2 += this.get(2, 2) * r; t3 += this.get(3, 2) * r; r = rhs.get(3, 2); t0 += this.get(0, 3) * r; t1 += this.get(1, 3) * r; t2 += this.get(2, 3) * r; t3 += this.get(3, 3) * r; m.e[index(0, 2)] = t0; m.e[index(1, 2)] = t1; m.e[index(2, 2)] = t2; m.e[index(3, 2)] = t3; r = rhs.get(0, 3); t0 = this.get(0, 0) * r; t1 = this.get(1, 0) * r; t2 = this.get(2, 0) * r; t3 = this.get(3, 0) * r; r = rhs.get(1, 3); t0 += this.get(0, 1) * r; t1 += this.get(1, 1) * r; t2 += this.get(2, 1) * r; t3 += this.get(3, 1) * r; r = rhs.get(2, 3); t0 += this.get(0, 2) * r; t1 += this.get(1, 2) * r; t2 += this.get(2, 2) * r; t3 += this.get(3, 2) * r; r = rhs.get(3, 3); t0 += this.get(0, 3) * r; t1 += this.get(1, 3) * r; t2 += this.get(2, 3) * r; t3 += this.get(3, 3) * r; m.e[index(0, 3)] = t0; m.e[index(1, 3)] = t1; m.e[index(2, 3)] = t2; m.e[index(3, 3)] = t3; return m; }