docs: public static void solveU( double U[] , double []b ,
                                 int m , int n ,
                                 int strideU , int offsetU , int offsetB )
      {
          for( int j = 0; j < n; j++ ) {
              for( int i = m-1; i >= 0; i-- ) {
                  double sum = b[offsetB + i*n+j];
                  for( int k=i+1; k<m; k++ ) {
                      sum -= U[offsetU + i*strideU+k]* b[offsetB + k*n+j];
                  }
                  b[offsetB + i*n+j] = sum / U[offsetU + i*strideU+i];
              }
          }
      }