docs: public static boolean invert( DMatrix3x3 a , DMatrix3x3 inv ) {
  
          double scale = 1.0/elementMaxAbs(a);
  
          double a11 = a.a11*scale;
          double a12 = a.a12*scale;
          double a13 = a.a13*scale;
          double a21 = a.a21*scale;
          double a22 = a.a22*scale;
          double a23 = a.a23*scale;
          double a31 = a.a31*scale;
          double a32 = a.a32*scale;
          double a33 = a.a33*scale;
  
          double m11 = a22*a33 - a23*a32;
          double m12 = -( a21*a33 - a23*a31);
          double m13 = a21*a32 - a22*a31;
          double m21 = -( a12*a33 - a13*a32);
          double m22 = a11*a33 - a13*a31;
          double m23 = -( a11*a32 - a12*a31);
          double m31 = a12*a23 - a13*a22;
          double m32 = -( a11*a23 - a13*a21);
          double m33 = a11*a22 - a12*a21;
  
          double det = (a11*m11 + a12*m12 + a13*m13)/scale;
  
          inv.a11 = m11/det;
          inv.a12 = m21/det;
          inv.a13 = m31/det;
          inv.a21 = m12/det;
          inv.a22 = m22/det;
          inv.a23 = m32/det;
          inv.a31 = m13/det;
          inv.a32 = m23/det;
          inv.a33 = m33/det;
  
          return !Double.isNaN(det) && !Double.isInfinite(det);
      }