Thanks to Martin for reporting the problem with the 3x3 case.
Thanks to Eddy for fixing it.
Now in CVS.
Rene Brun
On Wed, 7 May
2003, Eddy Offermann wrote:
> Hi Martin,
>
> Yes a bug, thanks !
>
> Since 3.05 We have hard-coded the inverse for dim <=3 for speed reasons.
> Unfortunately, I forgot that the matrix is stored column-wise which
> results in an our for dim=3.
>
> Rene, I have attached the patch
>
> Eddy
> >
> > hello all,
> > the script :
> >
> > {
> > TMatrix M(3,3);
> > M(0,0) = 1; M(0,1) = 4; M(0,2) = 2;
> > M(1,0) = 2; M(1,1) = 7; M(1,2) = -3;
> > M(2,0) = 3; M(2,1) = 2; M(2,2) = 1;
> >
> > // inverted matrix and test im M*Minv=E
> > TMatrix Minv(TMatrix::kInverted,M);
> > TMatrix E(M,TMatrix::kMult,Minv);
> >
> > cout << "###\n# MATRIX M"<<endl; M.Print();
> > cout << "###\n# MATRIX Minv"<<endl; Minv.Print();
> > cout << "###\n# MATRIX E (?):" <<endl; E.Print();
> > }
> >
> > results in different output using v3.02.07 and v3.05.04.
> > the main problem is, that the old version to me seems to be right.
> > i have noticed, that in v3.05.02 some (major) changes in TMatrix have
> > been made. now i puzzle if i missed something, or this is a bug.
> >
> > (SuSE 7.3, gcc 2.95)
> > greetings,
> > martin
> >
> >
> > ps: following - output of the script for both versions
> > output ## v3.02.07 ##
> > ###
> > # MATRIX M
> >
> > Matrix 3x3 is as follows
> >
> > | 0 | 1 | 2 |
> > ------------------------------------------------------------------
> > 0 | 1 4 2
> > 1 | 2 7 -3
> > 2 | 3 2 1
> >
> > ###
> > # MATRIX Minv
> >
> > Matrix 3x3 is as follows
> >
> > | 0 | 1 | 2 |
> > ------------------------------------------------------------------
> > 0 | -0.2 0 0.4
> > 1 | 0.1692 0.07692 -0.1077
> > 2 | 0.2615 -0.1538 0.01538
> >
> > ###
> > # MATRIX E (?):
> >
> > Matrix 3x3 is as follows
> >
> > | 0 | 1 | 2 |
> > ------------------------------------------------------------------
> > 0 | 1 0 -1.863e-08
> > 1 | 1.788e-07 1 -6.147e-08
> > 2 | 1.49e-08 0 1
> >
> > -------------------------------------------------------------
> > #############################################################
> > output ## v3.05.04 ##
> > ###
> > # MATRIX M
> >
> > Matrix 3x3 is as follows
> >
> > | 0 | 1 | 2 |
> > ------------------------------------------------------------------
> > 0 | 1 4 2
> > 1 | 2 7 -3
> > 2 | 3 2 1
> >
> > ###
> > # MATRIX Minv
> >
> > Matrix 3x3 is as follows
> >
> > | 0 | 1 | 2 |
> > ------------------------------------------------------------------
> > 0 | -0.2 0.1692 0.2615
> > 1 | 0 0.07692 -0.1538
> > 2 | 0.4 -0.1077 0.01538
> >
> > ###
> > # MATRIX E (?):
> >
> > Matrix 3x3 is as follows
> >
> > | 0 | 1 | 2 |
> > ------------------------------------------------------------------
> > 0 | 0.6 0.2615 -0.3231
> > 1 | -1.6 1.2 -0.6
> > 2 | -0.2 0.5538 0.4923
> >
> >
> >
> >
> >
>
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET