/usr/lib/petscdir/3.7.7/x86_64-linux-gnu-complex/include/petscblaslapack_mangle.h is in libpetsc-complex-3.7.7-dev 3.7.7+dfsg1-2build5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | /*
This file deals with the BLAS/LAPACK naming convention on
non-Microsoft systems, which may append an underscore, use
upper or lower case, and/or use a configurable symbol suffix.
*/
#if !defined(_BLASLAPACK_MANGLE_H)
#define _BLASLAPACK_MANGLE_H
/****************************************************************************/
/* macros to mangle BLAS/LAPACK names as needed for linking */
/* token pasting, with an extra level of indirection so that we
can paste the contents of other preprocessor #definitions */
#define PETSC_PASTE2_(a,b) a ## b
#define PETSC_PASTE2(a,b) PETSC_PASTE2_(a,b)
#define PETSC_PASTE3_(a,b,c) a ## b ## c
#define PETSC_PASTE3(a,b,c) PETSC_PASTE3_(a,b,c)
#if !defined(PETSC_BLASLAPACK_SUFFIX)
# if defined(PETSC_BLASLAPACK_UNDERSCORE)
# define PETSC_BLASLAPACK_SUFFIX_ _
# else
# define PETSC_BLASLAPACK_SUFFIX_
# endif
#else
# if defined(PETSC_BLASLAPACK_UNDERSCORE)
# define PETSC_BLASLAPACK_SUFFIX_ PETSC_PASTE2(PETSC_BLASLAPACK_SUFFIX,_)
# else
# define PETSC_BLASLAPACK_SUFFIX_ PETSC_BLASLAPACK_SUFFIX
# endif
#endif
/* complex/real and single/double/quad precision prefixes: */
#if !defined(PETSC_USE_COMPLEX)
# if defined(PETSC_BLASLAPACK_CAPS)
# if defined(PETSC_USE_REAL_SINGLE)
# define PETSC_BLASLAPACK_PREFIX_ S
# elif defined(PETSC_USE_REAL_DOUBLE)
# define PETSC_BLASLAPACK_PREFIX_ D
# else
# define PETSC_BLASLAPACK_PREFIX_ Q
# endif
# else
# if defined(PETSC_USE_REAL_SINGLE)
# define PETSC_BLASLAPACK_PREFIX_ s
# elif defined(PETSC_USE_REAL_DOUBLE)
# define PETSC_BLASLAPACK_PREFIX_ d
# else
# define PETSC_BLASLAPACK_PREFIX_ q
# endif
# endif
# define PETSC_BLASLAPACK_RPREFIX_ PETSC_BLASLAPACK_PREFIX_
#else
# if defined(PETSC_BLASLAPACK_CAPS)
# if defined(PETSC_USE_REAL_SINGLE)
# define PETSC_BLASLAPACK_PREFIX_ C
# define PETSC_BLASLAPACK_RPREFIX_ SC
# elif defined(PETSC_USE_REAL_DOUBLE)
# define PETSC_BLASLAPACK_PREFIX_ Z
# define PETSC_BLASLAPACK_RPREFIX_ DZ
# else
# define PETSC_BLASLAPACK_PREFIX_ W
# define PETSC_BLASLAPACK_RPREFIX_ QW
# endif
# else
# if defined(PETSC_USE_REAL_SINGLE)
# define PETSC_BLASLAPACK_PREFIX_ c
# define PETSC_BLASLAPACK_RPREFIX_ sc
# elif defined(PETSC_USE_REAL_DOUBLE)
# define PETSC_BLASLAPACK_PREFIX_ z
# define PETSC_BLASLAPACK_RPREFIX_ dz
# else
# define PETSC_BLASLAPACK_PREFIX_ w
# define PETSC_BLASLAPACK_RPREFIX_ qw
# endif
# endif
#endif
/* define macros PETSCBLAS to mangle BLAS/LAPACK subroutine names, and
PETSCBLASR for functions returning real values */
#if defined(PETSC_BLASLAPACK_CAPS)
# define PETSCBLAS(x,X) PETSC_PASTE3(PETSC_BLASLAPACK_PREFIX_, X, PETSC_BLASLAPACK_SUFFIX_)
# define PETSCBLASR(x,X) PETSC_PASTE3(PETSC_BLASLAPACK_RPREFIX_, X, PETSC_BLASLAPACK_SUFFIX_)
#else
# define PETSCBLAS(x,X) PETSC_PASTE3(PETSC_BLASLAPACK_PREFIX_, x, PETSC_BLASLAPACK_SUFFIX_)
# define PETSCBLASR(x,X) PETSC_PASTE3(PETSC_BLASLAPACK_RPREFIX_, x, PETSC_BLASLAPACK_SUFFIX_)
#endif
/****************************************************************************/
/* definitions of BLAS and LAPACK symbols */
/* Subroutine names that are the same for real/complex data: */
/* no character-string arguments: */
#define LAPACKgeqrf_ PETSCBLAS(geqrf,GEQRF)
#define LAPACKgetrf_ PETSCBLAS(getrf,GETRF)
#define LAPACKgetri_ PETSCBLAS(getri,GETRI)
#define BLASnrm2_ PETSCBLASR(nrm2,NRM2)
#define BLASscal_ PETSCBLAS(scal,SCAL)
#define BLAScopy_ PETSCBLAS(copy,COPY)
#define BLASswap_ PETSCBLAS(swap,SWAP)
#define BLASaxpy_ PETSCBLAS(axpy,AXPY)
#define BLASasum_ PETSCBLASR(asum,ASUM)
#define LAPACKpttrf_ PETSCBLAS(pttrf,PTTRF) /* factorization of a spd tridiagonal matrix */
#define LAPACKpttrs_ PETSCBLAS(pttrs,PTTRS) /* solve a spd tridiagonal matrix system */
#define LAPACKstein_ PETSCBLAS(stein,STEIN) /* eigenvectors of real symm tridiagonal matrix */
#define LAPACKgesv_ PETSCBLAS(gesv,GESV)
#define LAPACKgelss_ PETSCBLAS(gelss,GELSS)
#define LAPACKgerfs_ PETSCBLAS(gerfs,GERFS)
#define LAPACKtgsen_ PETSCBLAS(tgsen,TGSEN)
/* character-string arguments: */
#define LAPACKpotrf_ PETSCBLAS(potrf,POTRF)
#define LAPACKpotri_ PETSCBLAS(potri,POTRI)
#define LAPACKpotrs_ PETSCBLAS(potrs,POTRS)
#define LAPACKsytrf_ PETSCBLAS(sytrf,SYTRF)
#define LAPACKsytrs_ PETSCBLAS(sytrs,SYTRS)
#define LAPACKsytri_ PETSCBLAS(sytri,SYTRI)
#define BLASgemv_ PETSCBLAS(gemv,GEMV)
#define LAPACKgetrs_ PETSCBLAS(getrs,GETRS)
#define BLAStrmv_ PETSCBLAS(trmv,TRMV)
#define BLASgemm_ PETSCBLAS(gemm,GEMM)
#define BLASsymm_ PETSCBLAS(symm,SYMM)
#define BLAStrsm_ PETSCBLAS(trsm,TRSM)
#define LAPACKgesvd_ PETSCBLAS(gesvd,GESVD)
#define LAPACKgeev_ PETSCBLAS(geev,GEEV)
#define LAPACKsteqr_ PETSCBLAS(steqr,STEQR) /* eigenvalues and eigenvectors of symm tridiagonal */
#define LAPACKhseqr_ PETSCBLAS(hseqr,HSEQR)
#define LAPACKgges_ PETSCBLAS(gges,GGES)
#define LAPACKtrsen_ PETSCBLAS(trsen,TRSEN)
#define LAPACKormqr_ PETSCBLAS(ormqr,ORMQR)
#define LAPACKhgeqz_ PETSCBLAS(hgeqz,HGEQZ)
#define LAPACKtrtrs_ PETSCBLAS(trtrs,TRTRS)
/* Subroutine names that differ for real/complex data: */
#if !defined(PETSC_USE_COMPLEX)
# define LAPACKungqr_ PETSCBLAS(orgqr,ORGQR)
# define BLASdot_ PETSCBLAS(dot,DOT)
# define BLASdotu_ PETSCBLAS(dot,DOT)
# define LAPACKsyev_ PETSCBLAS(syev,SYEV) /* eigenvalues and eigenvectors of a symm matrix */
# define LAPACKsyevx_ PETSCBLAS(syevx,SYEVX) /* selected eigenvalues and eigenvectors of a symm matrix */
# define LAPACKsygv_ PETSCBLAS(sygv,SYGV)
# define LAPACKsygvx_ PETSCBLAS(sygvx,SYGVX)
/* stebz does not exist for complex data */
# define LAPACKstebz_ PETSCBLAS(stebz,STEBZ) /* eigenvalues of symm tridiagonal matrix */
#else
# define LAPACKungqr_ PETSCBLAS(ungqr,UNGQR)
/* note: dot and dotu are handled separately for complex data */
# define LAPACKsyev_ PETSCBLAS(heev,HEEV) /* eigenvalues and eigenvectors of a symm matrix */
# define LAPACKsyevx_ PETSCBLAS(heevx,HEEVX) /* selected eigenvalues and eigenvectors of a symm matrix */
# define LAPACKsygv_ PETSCBLAS(hegv,HEGV)
# define LAPACKsygvx_ PETSCBLAS(hegvx,HEGVX)
#endif
#endif
|