----- Original Message ----- From: GENTIT Francois-Xavier DAPNIA <GENTIT@DAPNIA.CEA.FR> To: <roottalk@hpsalo.cern.ch> Sent: 23 марта 2000 г. 7:21 Subject: TMatrix::Invert > Dear ROOT Authors, > In the documentation about TMatrix::Invert(...), it is said : > > "Use this method only if none of specialized algorithms (for symmetric, > tridiagonal, etc) matrices isn't applicable/available." > > But where are these specialized algorithms? In particular, what is the > name of the method to invert a symmetric matrix ? In STAR we did a small class a'la TMath with some static methods borrowed from the CERNLIB to play with matrix: http://www.star.bnl.gov/STAR/html/comp_l/root/html/StCL.html One can find this class as part of ROOT.CMZ under STAR/TCL patch. I believe such "primitive" methods must be employed as the lowest level of many OO models. OO model can be changed but the mathematical definition of those operations will not. Lack of such "abstract, plain mathematical" definition of the vector / matrix operations is a reason of the huge amount of the non-compatible OO models. Everyday some new Matrix / Vector class is born and everyday the authors of that class have to write / code / debug the matrix multiplication again and again from the scratch. Having this well-defined well-known and hard-tested (for 30 years) definitions of the matrix operation we can go ahead with OO model of some particular vector / matrix etc. Very often for scientific applications there is a need to regard some "row numbers" as a vector / matrix different kind for a moment. It is VERY expansive each time when one needs this to create a TVector / TMatrix, populate it properly with the row numbers, make that class operation, copy all parameters back and delete object. Another advantages of such primitive classes, they have no base class, they have no data-member and they have no virtual functions. (yes , it is well-known subroutine that has been serving as us very well for 50 years). This means this class is compatible with ANY framework. (In fact I would be happy see them not as a part of ROOT framework rather as part of CLHEP or smth like this). Of course there is another approach - call CERNLIB directly from the C++ code and sometimes it can be used too. Valery
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:21 MET