Lapack++
|
00001 // -*-C++-*- 00002 00003 // Copyright (C) 2004 00004 // Christian Stimming <stimming@tuhh.de> 00005 00006 // This library is free software; you can redistribute it and/or 00007 // modify it under the terms of the GNU Lesser General Public License as 00008 // published by the Free Software Foundation; either version 2, or (at 00009 // your option) any later version. 00010 00011 // This library is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU Lesser General Public License for more details. 00015 00016 // You should have received a copy of the GNU Lesser General Public License along 00017 // with this library; see the file COPYING. If not, write to the Free 00018 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 00019 // USA. 00020 00021 // LAPACK++ (V. 1.1) 00022 // (C) 1992-1996 All Rights Reserved. 00023 00028 #ifndef _LASLV_H 00029 #define _LASLV_H 00030 00031 #include "lafnames.h" 00032 #include LA_GEN_MAT_DOUBLE_H 00033 #include LA_VECTOR_DOUBLE_H 00034 #ifdef LA_COMPLEX_SUPPORT 00035 # include LA_GEN_MAT_COMPLEX_H 00036 # include LA_VECTOR_COMPLEX_H 00037 #endif 00038 #include LA_VECTOR_LONG_INT_H 00039 00040 00052 DLLIMPORT 00053 void LaLinearSolve( const LaGenMatDouble& A, LaGenMatDouble& X, 00054 const LaGenMatDouble& B ); 00055 00070 DLLIMPORT 00071 void LaLinearSolveIP( LaGenMatDouble& A, LaGenMatDouble& X, 00072 const LaGenMatDouble& B ); 00073 00074 00078 DLLIMPORT 00079 void LaLULinearSolve( const LaGenMatDouble& A, LaGenMatDouble& X, 00080 const LaGenMatDouble& B ); 00081 00090 DLLIMPORT 00091 void LaLULinearSolveIP( LaGenMatDouble& A, LaGenMatDouble& X, 00092 const LaGenMatDouble& B ); 00093 00100 DLLIMPORT 00101 void LaQRLinearSolve( const LaGenMatDouble& A, LaGenMatDouble& X, 00102 const LaGenMatDouble& B ); 00103 00115 DLLIMPORT 00116 void LaQRLinearSolveIP( LaGenMatDouble& A, LaGenMatDouble& X, 00117 const LaGenMatDouble& B ); 00118 00134 DLLIMPORT 00135 void LUFactorizeIP(LaGenMatDouble &GM, LaVectorLongInt &PIV); 00137 00138 00139 00140 #ifdef LA_COMPLEX_SUPPORT 00141 00153 DLLIMPORT 00154 void LaLinearSolve( const LaGenMatComplex& A, LaGenMatComplex& X, 00155 const LaGenMatComplex& B ); 00156 00171 DLLIMPORT 00172 void LaLinearSolveIP( LaGenMatComplex& A, LaGenMatComplex& X, 00173 const LaGenMatComplex& B ); 00174 00175 00180 DLLIMPORT 00181 void LaLULinearSolve( const LaGenMatComplex& A, LaGenMatComplex& X, 00182 const LaGenMatComplex& B ); 00183 00192 DLLIMPORT 00193 void LaLULinearSolveIP( LaGenMatComplex& A, LaGenMatComplex& X, 00194 const LaGenMatComplex& B ); 00195 00203 DLLIMPORT 00204 void LaQRLinearSolve( const LaGenMatComplex& A, LaGenMatComplex& X, 00205 const LaGenMatComplex& B ); 00206 00218 DLLIMPORT 00219 void LaQRLinearSolveIP( LaGenMatComplex& A, LaGenMatComplex& X, 00220 const LaGenMatComplex& B ); 00221 00236 DLLIMPORT 00237 void LUFactorizeIP(LaGenMatComplex &GM, LaVectorLongInt &PIV); 00239 00251 DLLIMPORT 00252 void LaLUInverseIP(LaGenMatComplex &A, LaVectorLongInt &PIV); 00253 00268 DLLIMPORT 00269 void LaLUInverseIP(LaGenMatComplex &A, LaVectorLongInt &PIV, LaVectorComplex &work); 00270 00271 #endif // LA_COMPLEX_SUPPORT 00272 00273 00274 #ifdef _LA_SPD_MAT_DOUBLE_H_ 00275 00276 DLLIMPORT 00277 void LaLinearSolve( const LaSpdMatDouble& A, LaGenMatDouble& X, 00278 LaGenMatDouble& B ); 00279 DLLIMPORT 00280 void LaLinearSolveIP( LaSpdMatDouble& A, LaGenMatDouble& X, LaGenMatDouble& B ); 00281 00282 DLLIMPORT 00283 void LaCholLinearSolve( const LaSpdMatDouble& A, LaGenMatDouble& X, 00284 LaGenMatDouble& B ); 00285 DLLIMPORT 00286 void LaCholLinearSolveIP( LaSpdMatDouble& A, LaGenMatDouble& X, 00287 LaGenMatDouble& B ); 00288 #endif // _LA_SPD_MAT_DOUBLE_H_ 00289 00290 #ifdef _LA_SYMM_MAT_DOUBLE_H_ 00291 00293 DLLIMPORT 00294 void LaLinearSolve( const LaSymmMatDouble& A, LaGenMatDouble& X, 00295 const LaGenMatDouble& B ); 00297 DLLIMPORT 00298 void LaLinearSolveIP( LaSymmMatDouble& A, LaGenMatDouble& X, 00299 const LaGenMatDouble& B ); 00300 00302 DLLIMPORT 00303 void LaCholLinearSolve( const LaSymmMatDouble& A, LaGenMatDouble& X, 00304 const LaGenMatDouble& B ); 00306 DLLIMPORT 00307 void LaCholLinearSolveIP( LaSymmMatDouble& A, LaGenMatDouble& X, 00308 const LaGenMatDouble& B ); 00309 00310 // Eigenvalue problems 00311 00312 DLLIMPORT 00313 void LaEigSolve(const LaSymmMatDouble &S, LaVectorDouble &eigvals); 00314 DLLIMPORT 00315 void LaEigSolve(const LaSymmMatDouble &S, LaVectorDouble &eigvals, 00316 LaGenMatDouble &eigvec); 00317 DLLIMPORT 00318 void LaEigSolveIP(LaSymmMatDouble &S, LaVectorDouble &eigvals); 00319 #endif // _LA_SYMM_MAT_DOUBLE_H_ 00320 00321 #ifdef LA_COMPLEX_SUPPORT 00322 00346 DLLIMPORT 00347 void LaEigSolve(const LaGenMatDouble &A, LaVectorComplex &eigvals, LaGenMatDouble &VR); 00348 #endif 00349 00377 DLLIMPORT 00378 void LaEigSolve(const LaGenMatDouble &A, LaVectorDouble &eigvals_real, 00379 LaVectorDouble &eigvals_imag, LaGenMatDouble &VR); 00380 00403 DLLIMPORT 00404 void LaEigSolveSymmetricVecIP(LaGenMatDouble &A_symmetric, 00405 LaVectorDouble &eigvals); 00406 00418 DLLIMPORT 00419 void LaEigSolveVecIP(LaGenMatDouble &A_symmetric, LaVectorDouble &eigvals); 00420 00421 #ifdef LA_COMPLEX_SUPPORT 00422 00442 DLLIMPORT 00443 void LaEigSolve(const LaGenMatComplex &A, LaVectorComplex &W, 00444 LaGenMatComplex &VR); 00445 #endif // LA_COMPLEX_SUPPORT 00446 00458 DLLIMPORT 00459 void LaLUInverseIP(LaGenMatDouble &A, LaVectorLongInt &PIV); 00460 00475 DLLIMPORT 00476 void LaLUInverseIP(LaGenMatDouble &A, LaVectorLongInt &PIV, LaVectorDouble &work); 00477 00478 #endif // _LASLV_H