00001 /*===========================================================================*\ 00002 * * 00003 * IsoEx * 00004 * Copyright (C) 2002 by Computer Graphics Group, RWTH Aachen * 00005 * www.rwth-graphics.de * 00006 * * 00007 *---------------------------------------------------------------------------* 00008 * * 00009 * License * 00010 * * 00011 * This library is free software; you can redistribute it and/or modify it * 00012 * under the terms of the GNU Library General Public License as published * 00013 * by the Free Software Foundation, version 2. * 00014 * * 00015 * This library is distributed in the hope that it will be useful, but * 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of * 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00018 * Library General Public License for more details. * 00019 * * 00020 * You should have received a copy of the GNU Library General Public * 00021 * License along with this library; if not, write to the Free Software * 00022 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * 00023 * * 00024 \*===========================================================================*/ 00025 00026 //============================================================================= 00027 // 00028 // SVD decomposition and back-substitution 00029 // 00030 //============================================================================= 00031 00032 #ifndef SVD_HH 00033 #define SVD_HH 00034 00035 00040 //== NAMESPACES =============================================================== 00041 namespace IsoEx { 00042 namespace Math { 00043 //============================================================================= 00044 00050 template <typename MAT_MxN, 00051 typename VEC_M, 00052 typename MAT_NxN> 00053 bool 00054 svd_decomp( MAT_MxN& A, VEC_M& S, MAT_NxN& V ); 00055 00056 00057 00062 template <typename MAT_MxN, 00063 typename VEC_N, 00064 typename MAT_NxN, 00065 typename VEC_M> 00066 void 00067 svd_backsub( const MAT_MxN& A, const VEC_M& S, const MAT_NxN& V, 00068 const VEC_M& b, VEC_N& x ); 00069 00070 00071 00072 //============================================================================= 00073 } // namespace Math 00074 } // namespace IsoEx 00075 //============================================================================= 00076 #if defined(INCLUDE_TEMPLATES) && !defined(SVD_C) 00077 #define SVD_TEMPLATES 00078 #include "svd.cc" 00079 #endif 00080 //============================================================================= 00081 #endif // SVD_HH defined 00082 //=============================================================================