LinearAlgebra Package -- Feature Log ================================================================== Enh 002: Timing tests Statement of suggested enhancement 7/1/02 ---------------------------------- version 2.0.1 M Fischler notes that the speed for LinearAlgebra is in some cases very different from that for CLHEP Matrix or CovMatrices. TIming tests are desirable. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Technical Information --------------------- LinearAlgebra could but does not suppoprt Symmetric Positive Definite models. At any rate, we can compare "apples to apples" vs CLHEP, and make sensible comparisons vs CovMatrices. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Decision -------- 7/1/02 Assign to summer worker. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Plans and Priority ------------------ 7/1/02 Assign to summer worker Nick Macks. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Status of implementation ------------------------- 7/22/02 Nick Macks is testing and comparing speeds and making tables. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Enhancement Done ---------------- version 2.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Location of Documentation ------------------------- ================================================================== Enh 001: Avoid use of exit() Statement of suggested enhancement 5/7/02 ---------------------------------- version 2.0.1 Jim Kowalkowski points out that a D0 user has been adversely afected by the fact that hte error() routine ends by calling exit(0). The situation was that a singular matrix was being inverted. > It is very bad for packages to exit in a framework program. > The framework should control the exit and the packages just > report the type of failure. Are you aware of this call to exit? The request comes down to some way for the package to suggest (rather than call) an abort, so the framework can choose what to do. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Technical Information --------------------- LinearAlgebra pre-dated the Exceptions package. It was decided not to fit LinearAlgebra with ZMthrows (which would have solved this person's problems, as pretty much all severity levels are already being set (assumedly) to not abort). The reason is a matter of work and a matter of interface: We would have to decide on a "sensible" action to do in each case, if error() ever returns; and existing user code will may not be aware of the situation except ex-post-facto after a human reads some log. LinearAlgebra also predates the ErrorLogger package. A possible modigfication would be as follows: The error() routine will issue an errlog message, with id "LinearAlgebra Fault" and level ELsevere. Assumedly the framework will cause this not to abort the program. I favor this modification. An alternative modification would be to replace each call to error() with a ZMthrow. As to what happens when error() returns to the code calling it -- something that code could not have expected: This will lead to meaningless results at best. In a sense, the ZMthrow approach is superior in this matter, since the user CAN either imbed in a try block or at least check ZMerrno to detect any problems. In practice, nobody is going to change their code to do this. Almost always, especially if the errlog approach is used, the return from error() will lead either to the LinearAlgebra method either dividing by zero or taking a sqrt of a negative number. If the framework does not set things up to cope with these, we will merely have postponed the bombing. (But the extra error info in the logs might be useful.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Decision -------- 5/20/02 Nobody chimed in after this was put on the enhancements page. Still, this must be improved. We should bite the bullet and ZMthrow and use the ErrLogEx mechanism to go out through errorlog. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Plans and Priority ------------------ 5/21/02 The following issues for improvement are open in LinearAlgebra: Ameliorate all unused variables warnings by pretendToUse. Started - 30% thru Eliminate any other gcc 3.0 compiler warnings. Test a version that speeds up compilation of 5x5 and 6x6 by unrolling outermost loop in * and determinant. Test both execution time and compilation time. Accept changes if beneficial. MLC66.cc now has this change, which must be accepted because of extreme compilation time benefit. Need to look at MLD66.cc, MLC55.cc, and MLD55.cc. Start a file ZMxla.h and .cc to hold the ZMexception definitions. .h done. For every error() invocation, replace with ZMthrow of appropriate severity. Each distinct ZMexception needs a line in ZMxla.h and in ZMxla.cc. In every case, non-ridiculous behavior must be provided in case the ZMthrow returns. I count 213 error() invocations. 1 of 213 partly done. Establish the use of ErrLogEx so that these ZMthrows will come out the ErrorLogger. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Status of implementation ------------------------- 7/22/02 The following issues for improvement are open in LinearAlgebra: All enhancements have been done, except incorporation of the ErrLogEx mechanism to go out the ErrorLogger when Exceptions are ZMthrown. That is better done in the context of the user framework. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Enhancement Done 7/24/02 ---------------- version 2.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Location of Documentation ------------------------- ==================================================================