|
DenseLinAlgPack: Concreate C++ Classes for Dense Blas-Compatible Linear Algebra Version of the Day
|
00001 // @HEADER 00002 // *********************************************************************** 00003 // 00004 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization 00005 // Copyright (2003) Sandia Corporation 00006 // 00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00008 // license for use of this work by or on behalf of the U.S. Government. 00009 // 00010 // This library is free software; you can redistribute it and/or modify 00011 // it under the terms of the GNU Lesser General Public License as 00012 // published by the Free Software Foundation; either version 2.1 of the 00013 // License, or (at your option) any later version. 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 // Lesser General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Lesser General Public 00021 // License along with this library; if not, write to the Free Software 00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00023 // USA 00024 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 00025 // 00026 // *********************************************************************** 00027 // @HEADER 00028 00029 #include "DenseLinAlgPack_LAPACK_C_Decl.hpp" 00030 00031 // DPOTRF 00032 00033 extern "C" { 00034 FORTRAN_FUNC_DECL_UL( void, DPOTRF, dpotrf ) ( FORTRAN_CONST_CHAR_1_ARG(UPLO) 00035 , const LAPACK_C_Decl::f_int& N, LAPACK_C_Decl::f_dbl_prec* A 00036 , const LAPACK_C_Decl::f_int& LDA, LAPACK_C_Decl::f_int* INFO ); 00037 } 00038 00039 void LAPACK_C_Decl::dpotrf( const f_char& UPLO 00040 , const f_int& N, f_dbl_prec* A, const f_int& LDA 00041 , f_int* INFO ) 00042 { 00043 FORTRAN_FUNC_CALL_UL(DPOTRF,dpotrf) (FORTRAN_CHAR_1_ARG_CALL(UPLO),N,A,LDA,INFO); 00044 } 00045 00046 // DGEQRF 00047 00048 extern "C" { 00049 FORTRAN_FUNC_DECL_UL( void, DGEQRF, dgeqrf ) ( 00050 const LAPACK_C_Decl::f_int& M, const LAPACK_C_Decl::f_int& N 00051 , LAPACK_C_Decl::f_dbl_prec* A, const LAPACK_C_Decl::f_int& LDA 00052 , LAPACK_C_Decl::f_dbl_prec* TAU, LAPACK_C_Decl::f_dbl_prec* WORK 00053 , const LAPACK_C_Decl::f_int& LWORK, LAPACK_C_Decl::f_int* INFO ); 00054 } 00055 00056 void LAPACK_C_Decl::dgeqrf( const f_int& M 00057 , const f_int& N, f_dbl_prec* A, const f_int& LDA 00058 , f_dbl_prec* TAU, f_dbl_prec* WORK 00059 , const f_int& LWORK, f_int* INFO ) 00060 { 00061 FORTRAN_FUNC_CALL_UL(DGEQRF,dgeqrf) (M,N,A,LDA,TAU,WORK,LWORK,INFO); 00062 } 00063 00064 // DORMRQ 00065 00066 extern "C" { 00067 FORTRAN_FUNC_DECL_UL( void, DORMQR, dormqr ) ( FORTRAN_CONST_CHAR_1_ARG(SIDE) 00068 , FORTRAN_CONST_CHAR_1_ARG(TRANS) 00069 , const LAPACK_C_Decl::f_int& M, const LAPACK_C_Decl::f_int& N 00070 , const LAPACK_C_Decl::f_int& K, const LAPACK_C_Decl::f_dbl_prec* A 00071 , const LAPACK_C_Decl::f_int& LDA, const LAPACK_C_Decl::f_dbl_prec* TAU 00072 , LAPACK_C_Decl::f_dbl_prec* C, const LAPACK_C_Decl::f_int& LDC 00073 , LAPACK_C_Decl::f_dbl_prec* WORK, const LAPACK_C_Decl::f_int& LWORK 00074 , LAPACK_C_Decl::f_int* INFO ); 00075 } 00076 00077 void LAPACK_C_Decl::dormqr( const f_char& SIDE 00078 , const f_char& TRANS, const f_int& M, const f_int& N 00079 , const f_int& K, const f_dbl_prec* A, const f_int& LDA 00080 , const f_dbl_prec* TAU, f_dbl_prec* C, const f_int& LDC 00081 , f_dbl_prec* WORK, const f_int& LWORK, f_int* INFO ) 00082 { 00083 FORTRAN_FUNC_CALL_UL(DORMQR,dormqr)(FORTRAN_CHAR_1_ARG_CALL(SIDE) 00084 ,FORTRAN_CHAR_1_ARG_CALL(TRANS),M,N,K,A,LDA,TAU,C,LDC,WORK,LWORK,INFO); 00085 } 00086 00087 // DSYTRF 00088 00089 extern "C" { 00090 FORTRAN_FUNC_DECL_UL( void, DSYTRF, dsytrf ) ( FORTRAN_CONST_CHAR_1_ARG(UPLO) 00091 , const LAPACK_C_Decl::f_int& N, LAPACK_C_Decl::f_dbl_prec A[] 00092 , const LAPACK_C_Decl::f_int& LDA 00093 , LAPACK_C_Decl::f_int IPIV[], LAPACK_C_Decl::f_dbl_prec WORK[] 00094 , const LAPACK_C_Decl::f_int& LWORK 00095 , LAPACK_C_Decl::f_int* INFO ); 00096 } 00097 00098 void LAPACK_C_Decl::dsytrf( const f_char& UPLO 00099 , const f_int& N, f_dbl_prec A[], const f_int& LDA 00100 , f_int IPIV[], f_dbl_prec WORK[], const f_int& LWORK 00101 , f_int* INFO ) 00102 { 00103 FORTRAN_FUNC_CALL_UL(DSYTRF,dsytrf)(FORTRAN_CHAR_1_ARG_CALL(UPLO) 00104 ,N,A,LDA,IPIV,WORK,LWORK,INFO); 00105 } 00106 00107 // DSYTRS 00108 00109 extern "C" { 00110 FORTRAN_FUNC_DECL_UL( void, DSYTRS, dsytrs ) ( FORTRAN_CONST_CHAR_1_ARG(UPLO) 00111 , const LAPACK_C_Decl::f_int& N, const LAPACK_C_Decl::f_int& NRHS 00112 , const LAPACK_C_Decl::f_dbl_prec A[] 00113 , const LAPACK_C_Decl::f_int& LDA, const LAPACK_C_Decl::f_int IPIV[] 00114 , LAPACK_C_Decl::f_dbl_prec B[] 00115 , const LAPACK_C_Decl::f_int& LDB, LAPACK_C_Decl::f_int* INFO ); 00116 } 00117 00118 void LAPACK_C_Decl::dsytrs( const f_char& UPLO 00119 , const f_int& N, const f_int& NRHS, const f_dbl_prec A[] 00120 , const f_int& LDA, const f_int IPIV[], f_dbl_prec B[] 00121 , const f_int& LDB, f_int* INFO ) 00122 { 00123 FORTRAN_FUNC_CALL_UL(DSYTRS,dsytrs)(FORTRAN_CHAR_1_ARG_CALL(UPLO) 00124 ,N,NRHS,A,LDA,IPIV,B,LDB,INFO); 00125 } 00126 00127 // DGETRF 00128 00129 extern "C" { 00130 FORTRAN_FUNC_DECL_UL( void, DGETRF, dgetrf ) ( 00131 const LAPACK_C_Decl::f_int& M ,const LAPACK_C_Decl::f_int& N 00132 ,LAPACK_C_Decl::f_dbl_prec A[], const LAPACK_C_Decl::f_int& LDA 00133 ,LAPACK_C_Decl::f_int IPIV[], LAPACK_C_Decl::f_int* INFO 00134 ); 00135 } 00136 00137 void LAPACK_C_Decl::dgetrf( 00138 const f_int& M, const f_int& N, f_dbl_prec A[], const f_int& LDA 00139 ,f_int IPIV[], f_int* INFO 00140 ) 00141 { 00142 FORTRAN_FUNC_CALL_UL(DGETRF,dgetrf)(M,N,A,LDA,IPIV,INFO); 00143 } 00144 00145 // DGETRS 00146 00147 extern "C" { 00148 FORTRAN_FUNC_DECL_UL( void, DGETRS, dgetrs ) ( 00149 FORTRAN_CONST_CHAR_1_ARG(TRANS) 00150 ,const LAPACK_C_Decl::f_int& N, const LAPACK_C_Decl::f_int& NRHS 00151 ,const LAPACK_C_Decl::f_dbl_prec* A, const LAPACK_C_Decl::f_int& LDA 00152 ,const LAPACK_C_Decl::f_int IPIV[] 00153 ,LAPACK_C_Decl::f_dbl_prec* B, const LAPACK_C_Decl::f_int& LDB 00154 ,LAPACK_C_Decl::f_int* INFO 00155 ); 00156 } 00157 00158 void LAPACK_C_Decl::dgetrs( 00159 const f_char& TRANS 00160 ,const f_int& N, const f_int& NRHS, const f_dbl_prec A[] 00161 ,const f_int& LDA, const f_int IPIV[], f_dbl_prec B[] 00162 ,const f_int& LDB, f_int* INFO 00163 ) 00164 { 00165 FORTRAN_FUNC_CALL_UL(DGETRS,dgetrs)( 00166 FORTRAN_CHAR_1_ARG_CALL(TRANS),N,NRHS,A,LDA,IPIV,B,LDB,INFO 00167 ); 00168 }
1.7.4