docs: public static void solveU( double []U , int startU , int strideU , int widthU ,
                                 double []b , int startB , int strideB , int widthB )
      {
          for( int colB = 0; colB < widthB; colB++ ) {
              for( int i =widthU-1; i>=0; i-- ) {
                  double sum = b[startB + i*strideB + colB];
                  for( int j = i+1; j <widthU; j++ ) {
                      sum -= U[startU + i*strideU+j]* b[startB + j*strideB + colB ];
                  }
                  b[startB + i*strideB + colB] = sum/U[ startU + i*strideU + i ];
              }
          }
  
          // todo comment out the above and optimize it
      }