/* Example programs from the book Scientific and Engineering Programming in C++: An Introduction with Advanced Techniques and Examples, Addison-Wesley, 1994. (c) COPYRIGHT INTERNATIONAL BUSINESS MACHINES CORPORATION 1994. ALL RIGHTS RESERVED. See README file for further details. */ #ifndef NormalizedLapackUnfactoredH #define NormalizedLapackUnfactoredH #include "LapackWrap/Lapack.h" #include "LapackWrap/ColumnNorms.h" template class NormalizedLapackUnfactored : // Normalizes columns before factoring. public LapackUnfactored { public: NormalizedLapackUnfactored(Subscript nrows, Subscript ncols) : LapackUnfactored(nrows, ncols) { } NormalizedLapackFactored factor(); virtual Array2d& operator=(const ConstArray2d& rhs) { return LapackUnfactored::operator=(rhs); } virtual Array2d& operator=(const EltT& rhs) { return LapackUnfactored::operator=(rhs); } virtual Array2d& operator=(const LapackUnfactored& rhs) { return LapackUnfactored::operator=(rhs); } virtual Array2d& operator=(const ConcreteFortranArray2d& rhs) { return LapackUnfactored::operator=(rhs); } }; template class NormalizedLapackFactored : // Normalizes solution after solving. public LapackFactored { public: Rep::Unknowns1d& solve(Rep::Unknowns1d& b); // Overwrites b with x. Rep::Unknowns1d& solve(Rep::Unknowns1d& x,const Rep::Knowns1d& b); Rep::Unknowns2d& solve(Rep::Unknowns2d& b); // Overwrites b with x. Rep::Unknowns2d& solve(Rep::Unknowns2d& x,const Rep::Knowns2d& b); protected: friend NormalizedLapackFactored NormalizedLapackUnfactored::factor(); NormalizedLapackFactored(Rep::Factored* p, const CopiedObjPtr< ColumnNorms >& n) : LapackFactored(p), column_scalars(n) { } private: CopiedObjPtr< ColumnNorms > column_scalars; }; #ifdef XLC_QNOTEMPINC #include "LapackWrap/NormalizedLapackUnfactored.c" #endif #endif