1 /* 2 This file provides some name space protection from LAPACK and BLAS and 3 allows the appropriate single or double precision version to be used. 4 This file also deals with different Fortran 77 naming conventions on machines. 5 6 Another problem is character strings are represented differently on 7 on some machines in C and Fortran 77. This problem comes up on the 8 Cray T3D/T3E. 9 10 */ 11 #if !defined(_BLASLAPACK_H) 12 #define _BLASLAPACK_H 13 #include "petsc.h" 14 PETSC_EXTERN_CXX_BEGIN 15 16 #if defined(PETSC_BLASLAPACK_MKL64_ONLY) 17 #define PETSC_MISSING_LAPACK_GESVD 18 #define PETSC_MISSING_LAPACK_GEEV 19 #define PETSC_MISSING_LAPACK_GETRF 20 #define PETSC_MISSING_LAPACK_POTRF 21 #define PETSC_MISSING_LAPACK_GETRS 22 #define PETSC_MISSING_LAPACK_POTRS 23 #elif defined(PETSC_BLASLAPACK_MKL_ONLY) 24 #define PETSC_MISSING_LAPACK_GESVD 25 #define PETSC_MISSING_LAPACK_GEEV 26 #elif defined(PETSC_BLASLAPACK_CRAY_ONLY) 27 #define PETSC_MISSING_LAPACK_GESVD 28 #elif defined(PETSC_BLASLAPACK_ESSL_ONLY) 29 #define PETSC_MISSING_LAPACK_GESVD 30 #define PETSC_MISSING_LAPACK_GETRF 31 #define PETSC_MISSING_LAPACK_GETRS 32 #define PETSC_MISSING_LAPACK_POTRF 33 #define PETSC_MISSING_LAPACK_POTRS 34 #endif 35 36 /* 37 This include file on the Cray T3D/T3E defines the interface between 38 Fortran and C representations of character strings. 39 */ 40 #if defined(PETSC_USES_CPTOFCD) 41 #include <fortran.h> 42 #endif 43 44 #if !defined(PETSC_USE_COMPLEX) 45 46 /* 47 These are real case with no character string arguments 48 */ 49 50 #if defined(PETSC_USES_FORTRAN_SINGLE) 51 /* 52 For these machines we must call the single precision Fortran version 53 */ 54 #define DGEQRF SGEQRF 55 #define DGETRF SGETRF 56 #define DDOT SDOT 57 #define DNRM2 SNRM2 58 #define DSCAL SSCAL 59 #define DCOPY SCOPY 60 #define DSWAP SSWAP 61 #define DAXPY SAXPY 62 #define DASUM SASUM 63 #define DSORMQR SORMQR 64 #define DTRTRS STRTRS 65 #define DPOTRF SPOTRF 66 #define DPOTRS SPOTRS 67 #define DGEMV SGEMV 68 #define DGETRS SGETRS 69 #define DGETRS SGETRS 70 #define DGEMM SGEMM 71 #define DGESVD SGESVD 72 #define DGEEV SGEEV 73 #define DTRMV STRMV 74 #define DTRSL STRSL 75 #endif 76 77 #if defined(PETSC_USE_SINGLE) 78 79 #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 80 #define LAgeqrf_ sgeqrf_ 81 #define LAgetrf_ sgetrf_ 82 #define LAgetf2_ sgetf2_ 83 #define BLdot_ sdot_ 84 #define BLnrm2_ snrm2_ 85 #define BLscal_ sscal_ 86 #define BLcopy_ scopy_ 87 #define BLswap_ sswap_ 88 #define BLaxpy_ saxpy_ 89 #define BLasum_ sasum_ 90 #elif defined(PETSC_HAVE_FORTRAN_CAPS) 91 #define LAgeqrf_ SGEQRF 92 #define LAgetrf_ SGETRF 93 #define LAgetf2_ SGETF2 94 #define BLdot_ SDOT 95 #define BLnrm2_ SNRM2 96 #define BLscal_ SSCAL 97 #define BLcopy_ SCOPY 98 #define BLswap_ SSWAP 99 #define BLaxpy_ SAXPY 100 #define BLasum_ SASUM 101 #else 102 #define LAgeqrf_ sgeqrf 103 #define LAgetrf_ sgetrf 104 #define LAgetf2_ sgetf2 105 #define BLdot_ sdot 106 #define BLnrm2_ snrm2 107 #define BLscal_ sscal 108 #define BLcopy_ scopy 109 #define BLswap_ sswap 110 #define BLaxpy_ saxpy 111 #define BLasum_ sasum 112 #endif 113 114 #else 115 116 #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 117 #define LAgeqrf_ dgeqrf_ 118 #define LAgetrf_ dgetrf_ 119 #define LAgetf2_ dgetf2_ 120 #define BLdot_ ddot_ 121 #define BLnrm2_ dnrm2_ 122 #define BLscal_ dscal_ 123 #define BLcopy_ dcopy_ 124 #define BLswap_ dswap_ 125 #define BLaxpy_ daxpy_ 126 #define BLasum_ dasum_ 127 #elif defined(PETSC_HAVE_FORTRAN_CAPS) 128 #define LAgeqrf_ DGEQRF 129 #define LAgetrf_ DGETRF 130 #define LAgetf2_ DGETF2 131 #define BLdot_ DDOT 132 #define BLnrm2_ DNRM2 133 #define BLscal_ DSCAL 134 #define BLcopy_ DCOPY 135 #define BLswap_ DSWAP 136 #define BLaxpy_ DAXPY 137 #define BLasum_ DASUM 138 #else 139 #define LAgeqrf_ dgeqrf 140 #define LAgetrf_ dgetrf 141 #define LAgetf2_ dgetf2 142 #define BLdot_ ddot 143 #define BLnrm2_ dnrm2 144 #define BLscal_ dscal 145 #define BLcopy_ dcopy 146 #define BLswap_ dswap 147 #define BLaxpy_ daxpy 148 #define BLasum_ dasum 149 #endif 150 151 #endif 152 153 /* 154 Real with character string arguments. 155 */ 156 #if defined(PETSC_USES_CPTOFCD) 157 /* 158 Note that this assumes that machines which use cptofcd() use 159 the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E. 160 */ 161 #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),_cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 162 #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),_cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 163 #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 164 #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 165 #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i),(j),(k)) 166 #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 167 #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 168 #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), _cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 169 #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 170 #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 171 #define LAtrmv_ DTRMV 172 #define LAtrsl_ DTRSL 173 #define LAgetrf_ DGETRF 174 175 #elif defined(PETSC_USE_SINGLE) 176 177 #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 178 #define LAormqr_ sormqr_ 179 #define LAtrtrs_ strtrs_ 180 #define LApotrf_ spotrf_ 181 #define LApotrs_ spotrs_ 182 #define LAgemv_ sgemv_ 183 #define LAgetrs_ sgetrs_ 184 #define LAtrmv_ strmv_ 185 #define LAtrsl_ strsl_ 186 #define BLgemm_ sgemm_ 187 #define LAgesvd_ sgesvd_ 188 #define LAgeev_ sgeev_ 189 #elif defined(PETSC_HAVE_FORTRAN_CAPS) 190 #define LAormqr_ SORMQR 191 #define LAtrtrs_ STRTRS 192 #define LApotrf_ SPOTRF 193 #define LApotrs_ SPOTRS 194 #define LAgemv_ SGEMV 195 #define LAgetrs_ SGETRS 196 #define LAtrmv_ STRMV 197 #define LAtrsl_ STRSL 198 #define LAgesvd_ SGESVD 199 #define LAgeev_ SGEEV 200 #define BLgemm_ SGEMM 201 #else 202 #define LAormqr_ sormqr 203 #define LAtrtrs_ strtrs 204 #define LApotrf_ spotrf 205 #define LApotrs_ spotrs 206 #define LAgemv_ sgemv 207 #define LAgetrs_ sgetrs 208 #define LAtrmv_ strmv 209 #define LAtrsl_ strsl 210 #define BLgemm_ sgemm 211 #define LAgesvd_ sgesvd 212 #define LAgeev_ sgeev 213 #endif 214 215 #else /* PETSC_USE_SINGLE */ 216 217 #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 218 #define LAormqr_ dormqr_ 219 #define LAtrtrs_ dtrtrs_ 220 #define LApotrf_ dpotrf_ 221 #define LApotrs_ dpotrs_ 222 #define LAgemv_ dgemv_ 223 #define LAgetrs_ dgetrs_ 224 #define LAtrmv_ dtrmv_ 225 #define LAtrsl_ dtrsl_ 226 #define BLgemm_ dgemm_ 227 #define LAgesvd_ dgesvd_ 228 #define LAgeev_ dgeev_ 229 #elif defined(PETSC_HAVE_FORTRAN_CAPS) 230 #define LAormqr_ DORMQR 231 #define LAtrtrs_ DTRTRS 232 #define LApotrf_ DPOTRF 233 #define LApotrs_ DPOTRS 234 #define LAgemv_ DGEMV 235 #define LAgetrs_ DGETRS 236 #define LAtrmv_ DTRMV 237 #define LAtrsl_ DTRSL 238 #define LAgesvd_ DGESVD 239 #define LAgeev_ DGEEV 240 #define BLgemm_ DGEMM 241 #else 242 #define LAormqr_ dormqr 243 #define LAtrtrs_ dtrtrs 244 #define LApotrf_ dpotrf 245 #define LApotrs_ dpotrs 246 #define LAgemv_ dgemv 247 #define LAgetrs_ dgetrs 248 #define LAtrmv_ dtrmv 249 #define LAtrsl_ dtrsl 250 #define BLgemm_ dgemm 251 #define LAgesvd_ dgesvd 252 #define LAgeev_ dgeev 253 #endif 254 255 #endif /* PETSC_USES_CPTOFCD */ 256 257 #else 258 /* 259 Complex with no character string arguments 260 */ 261 #if defined(PETSC_USES_FORTRAN_SINGLE) 262 #define ZGEQRF CGEQRF 263 #define ZDOTC CDOTC 264 #define DZNRM2 SCNRM2 265 #define ZSCAL CSCAL 266 #define ZCOPY CCOPY 267 #define ZSWAP CSWAP 268 #define ZAXPY CAXPY 269 #define DZASUM SCASUM 270 #define ZGETRF CGETRF 271 #define ZTRTRS CTRTRS 272 #define ZPOTRF CPOTRF 273 #define ZPOTRS CPOTRS 274 #define ZGEMV CGEMV 275 #define ZGETRS CGETRS 276 #define ZGEMM SGEMM 277 #define ZTRMV CTRMV 278 #define ZTRSL CTRSL 279 #define ZGEEV CGEEV 280 #endif 281 282 #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 283 #define LAgeqrf_ zgeqrf_ 284 #define LAgetrf_ zgetrf_ 285 #define LAgetf2_ zgetf2_ 286 #define BLdot_ zdotc_ 287 #define BLnrm2_ dznrm2_ 288 #define BLscal_ zscal_ 289 #define BLcopy_ zcopy_ 290 #define BLswap_ zswap_ 291 #define BLaxpy_ zaxpy_ 292 #define BLasum_ dzasum_ 293 #elif defined(PETSC_HAVE_FORTRAN_CAPS) 294 #define LAgeqrf_ ZGEQRF 295 #define BLdot_ ZDOTC 296 #define BLnrm2_ DZNRM2 297 #define BLscal_ ZSCAL 298 #define BLcopy_ ZCOPY 299 #define BLswap_ ZSWAP 300 #define BLaxpy_ ZAXPY 301 #define BLasum_ DZASUM 302 #define LAgetrf_ ZGETRF 303 #else 304 #define LAgeqrf_ zgeqrf 305 #define LAgetrf_ zgetrf 306 #define LAgetf2_ zgetf2 307 #define BLdot_ zdotc 308 #define BLnrm2_ dznrm2 309 #define BLscal_ zscal 310 #define BLcopy_ zcopy 311 #define BLswap_ zswap 312 #define BLaxpy_ zaxpy 313 #define BLasum_ dzasum 314 #endif 315 316 #if defined(PETSC_USES_CPTOFCD) 317 #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),_cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 318 #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 319 #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 320 #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i),(j),(k)) 321 #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 322 #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 323 #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n),(p)) 324 #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 325 #define LAtrmv_ ZTRMV 326 #define LAtrsl_ ZTRSL 327 #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 328 #define LAtrtrs_ ztrtrs_ 329 #define LApotrf_ zpotrf_ 330 #define LApotrs_ zpotrs_ 331 #define LAgemv_ zgemv_ 332 #define LAgetrs_ zgetrs_ 333 #define LAtrmv_ ztrmv_ 334 #define LAtrsl_ ztrsl_ 335 #define BLgemm_ zgemm_ 336 #define LAgesvd_ zgesvd_ 337 #define LAgeev_ zgeev_ 338 #elif defined(PETSC_HAVE_FORTRAN_CAPS) 339 #define LAtrtrs_ ZTRTRS 340 #define LApotrf_ ZPOTRF 341 #define LApotrs_ ZPOTRS 342 #define LAgemv_ ZGEMV 343 #define LAgetrf_ ZGETRF 344 #define LAgetf2_ ZGETF2 345 #define LAgetrs_ ZGETRS 346 #define LAtrmv_ ZTRMV 347 #define LAtrsl_ ZTRSL 348 #define BLgemm_ ZGEMM 349 #define LAgesvd_ ZGESVD 350 #define LAgeev_ ZGEEV 351 #else 352 #define LAtrtrs_ ztrtrs 353 #define LApotrf_ zpotrf 354 #define LApotrs_ zpotrs 355 #define LAgemv_ zgemv 356 #define LAgetrs_ zgetrs 357 #define LAtrmv_ ztrmv 358 #define LAtrsl_ ztrsl 359 #define BLgemm_ zgemm 360 #define LAgesvd_ zgesvd 361 #define LAgeev_ zgeev 362 #endif 363 364 #endif 365 366 EXTERN_C_BEGIN 367 368 /* 369 BLdot cannot be used with COMPLEX because it cannot 370 handle returing a double complex to C++. 371 */ 372 EXTERN PetscReal BLdot_(PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*); 373 EXTERN PetscReal BLnrm2_(PetscBLASInt*,PetscScalar*,PetscBLASInt*); 374 EXTERN PetscReal BLasum_(PetscBLASInt*,PetscScalar*,PetscBLASInt*); 375 EXTERN void BLscal_(PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*); 376 EXTERN void BLcopy_(PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*); 377 EXTERN void BLswap_(PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*); 378 EXTERN void BLaxpy_(PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*); 379 EXTERN void LAgetrf_(PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*); 380 EXTERN void LAgetf2_(PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*); 381 EXTERN void LAgeqrf_(PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 382 383 #if defined(PETSC_USES_CPTOFCD) 384 385 #if defined(PETSC_USE_COMPLEX) 386 EXTERN void ZORMQR(_fcd,_fcd,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 387 EXTERN void ZTRTRS(_fcd,_fcd,_fcd,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 388 EXTERN void ZPOTRF(_fcd,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 389 EXTERN void ZGEMV(_fcd,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*); 390 EXTERN void ZPOTRS(_fcd,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 391 EXTERN void ZGETRS(_fcd,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 392 EXTERN void ZGEMM(_fcd,_fcd,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*); 393 EXTERN void ZGESVD(_fcd,_fcd,PetscBLASInt *,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*); 394 EXTERN void ZGEEV(_fcd,_fcd,PetscBLASInt *,PetscScalar *,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*); 395 #else 396 EXTERN void DORMQR(_fcd,_fcd,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 397 EXTERN void DTRTRS(_fcd,_fcd,_fcd,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 398 EXTERN void DPOTRF(_fcd,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 399 EXTERN void DGEMV(_fcd,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*); 400 EXTERN void DPOTRS(_fcd,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 401 EXTERN void DGETRS(_fcd,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 402 EXTERN void DGEMM(_fcd,_fcd,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*); 403 EXTERN void DGESVD(_fcd,_fcd,PetscBLASInt *,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 404 EXTERN void DGEEV(_fcd,_fcd,PetscBLASInt *,PetscScalar *,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 405 #endif 406 407 #else 408 EXTERN void LAormqr_(const char*,const char*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 409 EXTERN void LAtrtrs_(const char*,const char*,const char*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 410 EXTERN void LApotrf_(const char*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 411 EXTERN void LAgemv_(const char*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*); 412 EXTERN void LApotrs_(const char*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 413 EXTERN void LAgetrs_(const char*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 414 EXTERN void BLgemm_(const char*,const char*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*); 415 416 /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 417 #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 418 EXTERN void LAgeev_(PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscReal*,PetscBLASInt*); 419 EXTERN void LAgesvd_(const char*,const char*,PetscBLASInt *,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*); 420 #elif defined(PETSC_HAVE_ESSL) 421 EXTERN void LAgeev_(PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscReal*,PetscBLASInt*); 422 EXTERN void LAgesvd_(const char*,const char*,PetscBLASInt *,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 423 #elif !defined(PETSC_USE_COMPLEX) 424 EXTERN void LAgeev_(const char*,const char*,PetscBLASInt *,PetscScalar *,PetscBLASInt*,PetscReal*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 425 EXTERN void LAgesvd_(const char*,const char*,PetscBLASInt *,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*); 426 #else 427 EXTERN void LAgeev_(const char*,const char*,PetscBLASInt *,PetscScalar *,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*); 428 EXTERN void LAgesvd_(const char*,const char*,PetscBLASInt *,PetscBLASInt*,PetscScalar *,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*); 429 #endif 430 #endif 431 432 EXTERN_C_END 433 PETSC_EXTERN_CXX_END 434 #endif 435