17   double a[] = {12, -51, 4, 6, 167, -68, -4, 24, -41};
 
   21   std::cout << 
"initial matrox A " << std::endl;
 
   29   std::cout << 
"Orthogonal Q matrix " << std::endl;
 
   32   auto Q = 
decomp.GetOrthogonalMatrix();
 
   35   std::cout << 
"Upper Triangular R matrix " << std::endl;
 
   44   std::cout << 
"Computed A matrix from Q * R " << std::endl;
 
   47   for (
int i = 0; i < A.GetNrows(); ++i) {
 
   48      for (
int j = 0; 
j < A.GetNcols(); ++
j) {
 
   50            Error(
"decomposeQR",
"Reconstrate matrix is not equal to the original : %f different than %f",
compA(i,
j),A(i,
j));
 
   59   for (
int i = 0; i < Q.GetNrows(); ++i) {
 
   60      for (
int j = 0; 
j < Q.GetNcols(); ++
j) {
 
   63            Error(
"decomposeQR", 
"Q matrix is not orthogonal ");
 
 
#define R(a, b, c, d, e, f, g, h, i)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
Bool_t AreEqualAbs(Double_t af, Double_t bf, Double_t epsilon)
Comparing floating points.