docs: function () {
      var tmp_0 = this.get(2,2) * this.get(3,3);
      var tmp_1 = this.get(3,2) * this.get(2,3);
      var tmp_2 = this.get(1,2) * this.get(3,3);
      var tmp_3 = this.get(3,2) * this.get(1,3);
      var tmp_4 = this.get(1,2) * this.get(2,3);
      var tmp_5 = this.get(2,2) * this.get(1,3);
      var tmp_6 = this.get(0,2) * this.get(3,3);
      var tmp_7 = this.get(3,2) * this.get(0,3);
      var tmp_8 = this.get(0,2) * this.get(2,3);
      var tmp_9 = this.get(2,2) * this.get(0,3);
      var tmp_10 = this.get(0,2) * this.get(1,3);
      var tmp_11 = this.get(1,2) * this.get(0,3);
      var tmp_12 = this.get(2,0) * this.get(3,1);
      var tmp_13 = this.get(3,0) * this.get(2,1);
      var tmp_14 = this.get(1,0) * this.get(3,1);
      var tmp_15 = this.get(3,0) * this.get(1,1);
      var tmp_16 = this.get(1,0) * this.get(2,1);
      var tmp_17 = this.get(2,0) * this.get(1,1);
      var tmp_18 = this.get(0,0) * this.get(3,1);
      var tmp_19 = this.get(3,0) * this.get(0,1);
      var tmp_20 = this.get(0,0) * this.get(2,1);
      var tmp_21 = this.get(2,0) * this.get(0,1);
      var tmp_22 = this.get(0,0) * this.get(1,1);
      var tmp_23 = this.get(1,0) * this.get(0,1);
  
      var t0 = ((tmp_0 * this.get(1,1) + tmp_3 * this.get(2,1) + tmp_4 * this.get(3,1)) -
                (tmp_1 * this.get(1,1) + tmp_2 * this.get(2,1) + tmp_5 * this.get(3,1)));
      var t1 = ((tmp_1 * this.get(0,1) + tmp_6 * this.get(2,1) + tmp_9 * this.get(3,1)) -
                (tmp_0 * this.get(0,1) + tmp_7 * this.get(2,1) + tmp_8 * this.get(3,1)));
      var t2 = ((tmp_2 * this.get(0,1) + tmp_7 * this.get(1,1) + tmp_10 * this.get(3,1)) -
                (tmp_3 * this.get(0,1) + tmp_6 * this.get(1,1) + tmp_11 * this.get(3,1)));
      var t3 = ((tmp_5 * this.get(0,1) + tmp_8 * this.get(1,1) + tmp_11 * this.get(2,1)) -
                (tmp_4 * this.get(0,1) + tmp_9 * this.get(1,1) + tmp_10 * this.get(2,1)));
  
      var d = 1.0 / (this.get(0,0) * t0 + this.get(1,0) * t1 + this.get(2,0) * t2 + this.get(3,0) * t3);
  
      var out_00 = d * t0;
      var out_01 = d * t1;
      var out_02 = d * t2;
      var out_03 = d * t3;
  
      var out_10 = d * ((tmp_1 * this.get(1,0) + tmp_2 * this.get(2,0) + tmp_5 * this.get(3,0)) -
                        (tmp_0 * this.get(1,0) + tmp_3 * this.get(2,0) + tmp_4 * this.get(3,0)));
      var out_11 = d * ((tmp_0 * this.get(0,0) + tmp_7 * this.get(2,0) + tmp_8 * this.get(3,0)) -
                        (tmp_1 * this.get(0,0) + tmp_6 * this.get(2,0) + tmp_9 * this.get(3,0)));
      var out_12 = d * ((tmp_3 * this.get(0,0) + tmp_6 * this.get(1,0) + tmp_11 * this.get(3,0)) -
                        (tmp_2 * this.get(0,0) + tmp_7 * this.get(1,0) + tmp_10 * this.get(3,0)));
      var out_13 = d * ((tmp_4 * this.get(0,0) + tmp_9 * this.get(1,0) + tmp_10 * this.get(2,0)) -
                        (tmp_5 * this.get(0,0) + tmp_8 * this.get(1,0) + tmp_11 * this.get(2,0)));
  
      var out_20 = d * ((tmp_12 * this.get(1,3) + tmp_15 * this.get(2,3) + tmp_16 * this.get(3,3)) -
                        (tmp_13 * this.get(1,3) + tmp_14 * this.get(2,3) + tmp_17 * this.get(3,3)));
      var out_21 = d * ((tmp_13 * this.get(0,3) + tmp_18 * this.get(2,3) + tmp_21 * this.get(3,3)) -
                        (tmp_12 * this.get(0,3) + tmp_19 * this.get(2,3) + tmp_20 * this.get(3,3)));
      var out_22 = d * ((tmp_14 * this.get(0,3) + tmp_19 * this.get(1,3) + tmp_22 * this.get(3,3)) -
                        (tmp_15 * this.get(0,3) + tmp_18 * this.get(1,3) + tmp_23 * this.get(3,3)));
      var out_23 = d * ((tmp_17 * this.get(0,3) + tmp_20 * this.get(1,3) + tmp_23 * this.get(2,3)) -
                        (tmp_16 * this.get(0,3) + tmp_21 * this.get(1,3) + tmp_22 * this.get(2,3)));
      
      var out_30 = d * ((tmp_14 * this.get(2,2) + tmp_17 * this.get(3,2) + tmp_13 * this.get(1,2)) -
                        (tmp_16 * this.get(3,2) + tmp_12 * this.get(1,2) + tmp_15 * this.get(2,2)));
      var out_31 = d * ((tmp_20 * this.get(3,2) + tmp_12 * this.get(0,2) + tmp_19 * this.get(2,2)) -
                        (tmp_18 * this.get(2,2) + tmp_21 * this.get(3,2) + tmp_13 * this.get(0,2)));
      var out_32 = d * ((tmp_18 * this.get(1,2) + tmp_23 * this.get(3,2) + tmp_15 * this.get(0,2)) -
                        (tmp_22 * this.get(3,2) + tmp_14 * this.get(0,2) + tmp_19 * this.get(1,2)));
      var out_33 = d * ((tmp_22 * this.get(2,2) + tmp_16 * this.get(0,2) + tmp_21 * this.get(1,2)) -
                        (tmp_20 * this.get(1,2) + tmp_23 * this.get(2,2) + tmp_17 * this.get(0,2)));
  
      this.elements[0*4+0] = out_00;
      this.elements[0*4+1] = out_01;
      this.elements[0*4+2] = out_02;
      this.elements[0*4+3] = out_03;
      this.elements[1*4+0] = out_10;
      this.elements[1*4+1] = out_11;
      this.elements[1*4+2] = out_12;
      this.elements[1*4+3] = out_13;
      this.elements[2*4+0] = out_20;
      this.elements[2*4+1] = out_21;
      this.elements[2*4+2] = out_22;
      this.elements[2*4+3] = out_23;
      this.elements[3*4+0] = out_30;
      this.elements[3*4+1] = out_31;
      this.elements[3*4+2] = out_32;
      this.elements[3*4+3] = out_33;
      return this;
    }