docs: public static boolean lower( double[]T , int indexT , int n ) {
          double el_ii;
          double div_el_ii=0;
  
          for( int i = 0; i < n; i++ ) {
              for( int j = i; j < n; j++ ) {
                  double sum = T[ indexT + j*n+i];
  
                  // todo optimize
                  for( int k = 0; k < i; k++ ) {
                      sum -= T[ indexT + i*n+k] * T[ indexT + j*n+k];
                  }
  
                  if( i == j ) {
                      // is it positive-definite?
                      if( sum <= 0.0 )
                          return false;
  
                      el_ii = Math.sqrt(sum);
                      T[ indexT + i*n+i] = el_ii;
                      div_el_ii = 1.0/el_ii;
                  } else {
                      T[ indexT + j*n+i] = sum*div_el_ii;
                  }
              }
          }
  
          return true;
      }