Actual source code: slepcblaslapack_mangle.h

slepc-3.21.1 2024-04-26
Report Typos and Errors
  1: /*
  2:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  3:    SLEPc - Scalable Library for Eigenvalue Problem Computations
  4:    Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain

  6:    This file is part of SLEPc.
  7:    SLEPc is distributed under a 2-clause BSD license (see LICENSE).
  8:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  9: */

 11: #pragma once

 13: /* LAPACK functions without string parameters */
 14: #define BLASrot_     PETSCBLAS(rot,ROT)
 15: #define BLASMIXEDrot_ PETSCBLASMIXED(rot,ROT)
 16: #if !defined(SLEPC_MISSING_LAPACK_LAEV2)
 17: #define LAPACKlaev2_ PETSCBLAS(laev2,LAEV2)
 18: #endif
 19: #if !defined(SLEPC_MISSING_LAPACK_GEHRD)
 20: #define LAPACKgehrd_ PETSCBLAS(gehrd,GEHRD)
 21: #endif
 22: #if !defined(SLEPC_MISSING_LAPACK_LARFG)
 23: #define LAPACKlarfg_ PETSCBLAS(larfg,LARFG)
 24: #endif
 25: #if !defined(SLEPC_MISSING_LAPACK_LAG2)
 26: #define LAPACKlag2_  PETSCBLASREAL(lag2,LAG2)
 27: #endif
 28: #if !defined(SLEPC_MISSING_LAPACK_LASV2)
 29: #define LAPACKlasv2_ PETSCBLASREAL(lasv2,LASV2)
 30: #endif
 31: #if !defined(SLEPC_MISSING_LAPACK_LARTG)
 32: #define LAPACKlartg_ PETSCBLAS(lartg,LARTG)
 33: #define LAPACKREALlartg_ PETSCBLASREAL(lartg,LARTG)
 34: #endif
 35: #if !defined(SLEPC_MISSING_LAPACK_LAED4)
 36: #define LAPACKlaed4_ PETSCBLASREAL(laed4,LAED4)
 37: #endif
 38: #if !defined(SLEPC_MISSING_LAPACK_LAMRG)
 39: #define LAPACKlamrg_ PETSCBLASREAL(lamrg,LAMRG)
 40: #endif
 41: #if !defined(SLEPC_MISSING_LAPACK_ORGHR)
 42: #if !defined(PETSC_USE_COMPLEX)
 43: #define LAPACKorghr_ PETSCBLAS(orghr,ORGHR)
 44: #else
 45: #define LAPACKorghr_ PETSCBLAS(unghr,UNGHR)
 46: #endif
 47: #endif
 48: #if !defined(SLEPC_MISSING_LAPACK_TGEXC)
 49: #define LAPACKtgexc_ PETSCBLAS(tgexc,TGEXC)
 50: #endif
 51: #define LAPACKgeqp3_ PETSCBLAS(geqp3,GEQP3)

 53: /* LAPACK functions with string parameters */

 55: /* same name for real and complex */
 56: #define BLAStrmm_    PETSCBLAS(trmm,TRMM)
 57: #if !defined(SLEPC_MISSING_LAPACK_LANHS)
 58: #define LAPACKlanhs_ PETSCBLAS(lanhs,LANHS)
 59: #endif
 60: #define LAPACKlange_ PETSCBLAS(lange,LANGE)
 61: #if !defined(SLEPC_MISSING_LAPACK_LARF)
 62: #define LAPACKlarf_  PETSCBLAS(larf,LARF)
 63: #endif
 64: #define LAPACKlansy_ PETSCBLAS(lansy,LANSY)
 65: #if !defined(SLEPC_MISSING_LAPACK_TRSYL)
 66: #define LAPACKtrsyl_ PETSCBLAS(trsyl,TRSYL)
 67: #endif

 69: /* subroutines in which we use only the real version, do not care whether they have different name */
 70: #if !defined(SLEPC_MISSING_LAPACK_STEVR)
 71: #define LAPACKstevr_ PETSCBLASREAL(stevr,STEVR)
 72: #endif
 73: #if !defined(SLEPC_MISSING_LAPACK_BDSDC)
 74: #define LAPACKbdsdc_ PETSCBLASREAL(bdsdc,BDSDC)
 75: #endif
 76: #define LAPACKlamch_ PETSCBLASREAL(lamch,LAMCH)
 77: #define LAPACKlamc3_ PETSCBLASREAL(lamc3,LAMC3)

 79: /* subroutines with different name in real/complex */
 80: #if !defined(PETSC_USE_COMPLEX)
 81: #if !defined(SLEPC_MISSING_LAPACK_ORGTR)
 82: #define LAPACKorgtr_ PETSCBLAS(orgtr,ORGTR)
 83: #endif
 84: #if !defined(SLEPC_MISSING_LAPACK_SYTRD)
 85: #define LAPACKsytrd_ PETSCBLAS(sytrd,SYTRD)
 86: #endif
 87: #define LAPACKsyevd_ PETSCBLAS(syevd,SYEVD)
 88: #define LAPACKsygvd_ PETSCBLAS(sygvd,SYGVD)
 89: #else
 90: #if !defined(SLEPC_MISSING_LAPACK_ORGTR)
 91: #define LAPACKorgtr_ PETSCBLAS(ungtr,UNGTR)
 92: #endif
 93: #if !defined(SLEPC_MISSING_LAPACK_SYTRD)
 94: #define LAPACKsytrd_ PETSCBLAS(hetrd,HETRD)
 95: #endif
 96: #define LAPACKsyevd_ PETSCBLAS(heevd,HEEVD)
 97: #define LAPACKsygvd_ PETSCBLAS(hegvd,HEGVD)
 98: #endif

100: /* subroutines with different signature in real/complex */
101: #define LAPACKggev_  PETSCBLAS(ggev,GGEV)
102: #if !defined(SLEPC_MISSING_LAPACK_GGEV3)   /* ggev and ggev3 have the same signature */
103: #define LAPACKggev3_ PETSCBLAS(ggev3,GGEV3)
104: #define LAPACKggevalt_ LAPACKggev3_
105: #else
106: #define LAPACKggevalt_ LAPACKggev_
107: #endif
108: #if !defined(SLEPC_MISSING_LAPACK_GGES3)   /* gges and gges3 have the same signature */
109: #define LAPACKgges3_ PETSCBLAS(gges3,GGES3)
110: #define LAPACKggesalt_ LAPACKgges3_
111: #else
112: #define LAPACKggesalt_ LAPACKgges_
113: #endif
114: #if !defined(SLEPC_MISSING_LAPACK_GGSVD)
115: #define LAPACKggsvd_ PETSCBLAS(ggsvd,GGSVD)
116: #endif
117: #if !defined(SLEPC_MISSING_LAPACK_GGSVD3)
118: #define LAPACKggsvd3_ PETSCBLAS(ggsvd3,GGSVD3)
119: #endif
120: #if !defined(SLEPC_MISSING_LAPACK_TREVC)
121: #define LAPACKtrevc_ PETSCBLAS(trevc,TREVC)
122: #endif
123: #define LAPACKgeevx_ PETSCBLAS(geevx,GEEVX)
124: #define LAPACKgees_  PETSCBLAS(gees,GEES)
125: #if !defined(SLEPC_MISSING_LAPACK_TREXC)
126: #define LAPACKtrexc_ PETSCBLAS(trexc,TREXC)
127: #endif
128: #define LAPACKgesdd_ PETSCBLAS(gesdd,GESDD)
129: #if !defined(SLEPC_MISSING_LAPACK_TGEVC)
130: #define LAPACKtgevc_ PETSCBLAS(tgevc,TGEVC)
131: #endif
132: #if !defined(SLEPC_MISSING_LAPACK_HSEIN)
133: #define LAPACKhsein_ PETSCBLAS(hsein,HSEIN)
134: #endif
135: #if !defined(SLEPC_MISSING_LAPACK_STEDC)
136: #define LAPACKstedc_ PETSCBLAS(stedc,STEDC)
137: #endif
138: #if !defined(SLEPC_MISSING_LAPACK_LASCL)
139: #define LAPACKlascl_ PETSCBLAS(lascl,LASCL)
140: #endif

142: #if defined(PETSC_HAVE_COMPLEX)
143: /* complex subroutines to be called with scalar-type=real */
144: #define BLASCOMPLEXgemm_   PETSCBLASCOMPLEX(gemm,GEMM)
145: #define BLASCOMPLEXscal_   PETSCBLASCOMPLEX(scal,SCAL)
146: #define LAPACKCOMPLEXgesv_ PETSCBLASCOMPLEX(gesv,GESV)
147: #endif