TO DO - 9-22-03

Copy constructors, operator =, destructors are not defined for all classes even if the the compiler supplied versions (shallow copy) won't do. A case in point is the class LiborMarketModel (LMM). I don't envision a use of this class where these are needed. However I cannot know what you want to do. Will be fixed in the future.

Resource ownership: document for each matrix function returning a reference if the user has to deallocate the resource (if you are reading this: the answer is most likely YES, meanwhile check the source code if the resource is allocated in the function on the heap).


Control variates: seem to have an adverse effect despite extremely high correlation. Investigate this by computing the mean and variance of the caplet price over say 20 runs for caplets in a PC LMM (where we have exact analytics) with and without control variates.

LiborMarketModel and derived classes: the use of the cache XLvec is the only reason that the member function XLvec(t,p) is not constant and that propagates through basically all the Libor quantity member functions. Reflect upon wether it's worth it or wether we should return from the stack.


Matrix: UTRMatrix<Real> is not the same as UTRRealMatrix. This is due to the fact that there are no templated typdefs. Affects: RandomObject. The covariation matrix has type UTRMatrix<S>. Thus the functionality of UTRRealMatrix is not available for RandomObjects with Real scalars (factor analysis, matrix functions). Possible solutions: Move the functionality of UTRRealMatrix to the more general type UTRMatrix<S> or limit RandomObjects to Real scalars.

Headers: clear up the problem with the typedef in forward declarations and remove "#include Matrix.h" from headers if it is not really needed.

Last: 9-21-03

Bug in Random::MersenneTwister::u01()
kk+MT_D should be kk-MT_D. This writes off the end of the array mt. Fixed: 9-22-03.