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 00029 #ifndef _BLAS2_PP_H_ 00030 #define _BLAS2_PP_H_ 00031 00032 #include "blas2.h" 00033 #include "lafnames.h" 00034 #include "arch.h" // needed for DLLIMPORT 00035 #include LA_GEN_MAT_DOUBLE_H 00036 #include LA_VECTOR_DOUBLE_H 00037 #ifdef LA_COMPLEX_SUPPORT 00038 # include LA_GEN_MAT_COMPLEX_H 00039 # include LA_VECTOR_COMPLEX_H 00040 #endif 00041 00045 DLLIMPORT 00046 void Blas_Mat_Trans_Vec_Mult(const LaGenMatDouble &A, 00047 const LaVectorDouble &dx, 00048 LaVectorDouble &dy, 00049 double alpha = 1.0, double beta = 0.0); 00050 00052 DLLIMPORT 00053 void Blas_Mat_Vec_Mult(const LaGenMatDouble &A, 00054 const LaVectorDouble &dx, 00055 LaVectorDouble &dy, 00056 double alpha = 1.0, double beta = 0.0); 00057 00059 DLLIMPORT 00060 void Blas_R1_Update(LaGenMatDouble &A, const LaVectorDouble &dx, 00061 const LaVectorDouble &dy, double alpha = 1.0); 00063 00064 00065 #ifdef LA_COMPLEX_SUPPORT 00066 00069 DLLIMPORT 00070 void Blas_Mat_Vec_Mult(const LaGenMatComplex &A, 00071 const LaVectorComplex &dx, 00072 LaVectorComplex &dy, 00073 LaComplex alpha = 1.0, LaComplex beta = 0.0); 00074 00076 DLLIMPORT 00077 void Blas_Mat_Trans_Vec_Mult(const LaGenMatComplex &A, 00078 const LaVectorComplex &dx, 00079 LaVectorComplex &dy, 00080 LaComplex alpha = 1.0, LaComplex beta = 0.0); 00081 00083 DLLIMPORT 00084 void Blas_R1_Update(LaGenMatComplex &A, const LaVectorComplex &dx, 00085 const LaVectorComplex &dy, LaComplex alpha = 1.0); 00087 #endif // LA_COMPLEX_SUPPORT 00088 00089 #ifdef _LA_SYMM_MAT_DOUBLE_H_ 00090 DLLIMPORT 00091 void Blas_Mat_Vec_Mult(const LaSymmMatDouble &A, const LaVectorDouble &dx, 00092 LaVectorDouble &dy, 00093 double alpha = 1.0, double beta = 1.0); 00094 DLLIMPORT 00095 void Blas_R1_Update(LaSymmMatDouble &A, const LaVectorDouble &dx, 00096 double alpha = 1.0); 00097 DLLIMPORT 00098 void Blas_R2_Update(LaSymmMatDouble &A, const LaVectorDouble &dx, 00099 const LaVectorDouble &dy, double alpha = 1.0); 00100 #endif 00101 00102 #ifdef _LA_SYMM_BAND_MAT_DOUBLE_H_ 00103 DLLIMPORT 00104 void Blas_Mat_Vec_Mult(const LaSymmBandMatDouble &A, const LaVectorDouble &dx, 00105 LaVectorDouble &dy, 00106 double alpha = 1.0, double beta = 1.0); 00107 #endif 00108 00109 #ifdef _LA_SPD_MAT_DOUBLE_H_ 00110 DLLIMPORT 00111 void Blas_Mat_Vec_Mult(const LaSpdMatDouble &AP, const LaVectorDouble &dx, 00112 LaVectorDouble &dy, 00113 double alpha = 1.0, double beta = 1.0); 00114 DLLIMPORT 00115 void Blas_R1_Update(LaSpdMatDouble &AP, const LaVectorDouble &dx, 00116 double alpha = 1.0); 00117 DLLIMPORT 00118 void Blas_R2_Update(LaSpdMatDouble &AP, const LaVectorDouble &dx, 00119 const LaVectorDouble &dy, double alpha = 1.0); 00120 #endif 00121 00122 #ifdef _LA_BAND_MAT_DOUBLE_H_ 00123 DLLIMPORT 00124 void Blas_Mat_Vec_Mult(const LaBandMatDouble &A, const LaVectorDouble &dx, 00125 LaVectorDouble &dy, 00126 double alpha = 1.0, double beta = 1.0); 00127 #endif 00128 00129 #ifdef _LA_LOWER_TRIANG_MAT_DOUBLE_H_ 00130 DLLIMPORT 00131 void Blas_Mat_Vec_Mult(const LaLowerTriangMatDouble &A, LaVectorDouble &dx); 00132 #endif 00133 00134 00135 00136 #ifdef _LA_UPPER_TRIANG_MAT_DOUBLE_H_ 00137 DLLIMPORT 00138 void Blas_Mat_Vec_Mult(const LaUpperTriangMatDouble &A, LaVectorDouble &dx); 00139 #endif 00140 00141 00142 00143 #ifdef _LA_UNIT_LOWER_TRIANG_MAT_DOUBLE_H_ 00144 DLLIMPORT 00145 void Blas_Mat_Vec_Mult(const LaUnitLowerTriangMatDouble &A, 00146 LaVectorDouble &dx); 00147 #endif 00148 00149 #ifdef _LA_LOWER_TRIANG_MAT_DOUBLE_H_ 00150 DLLIMPORT 00151 void Blas_Mat_Vec_Solve(LaLowerTriangMatDouble &A, LaVectorDouble &dx); 00152 #endif 00153 00154 00155 00156 #ifdef _LA_UNIT_UPPER_TRIANG_MAT_DOUBLE_H_ 00157 DLLIMPORT 00158 void Blas_Mat_Vec_Mult(const LaUnitUpperTriangMatDouble &A, 00159 LaVectorDouble &dx); 00160 #endif 00161 00162 #ifdef _LA_UPPER_TRIANG_MAT_DOUBLE_H_ 00163 DLLIMPORT 00164 void Blas_Mat_Vec_Solve(LaUpperTriangMatDouble &A, LaVectorDouble &dx); 00165 #endif 00166 00167 00168 #ifdef _LA_UNIT_LOWER_TRIANG_MAT_DOUBLE_H_ 00169 DLLIMPORT 00170 void Blas_Mat_Vec_Solve(LaUnitLowerTriangMatDouble &A, 00171 LaVectorDouble &dx); 00172 #endif 00173 00174 #ifdef _LA_UNIT_UPPER_TRIANG_MAT_DOUBLE_H_ 00175 DLLIMPORT 00176 void Blas_Mat_Vec_Solve(LaUnitUpperTriangMatDouble &A, LaVectorDouble &dx); 00177 #endif 00178 00179 00180 #endif 00181 //_BLAS2_PP_H_