Actual source code: feastp.h
slepc-3.10.1 2018-10-23
Report Typos and Errors

      1: /*
      2:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      3:    SLEPc - Scalable Library for Eigenvalue Problem Computations
      4:    Copyright (c) 2002-2018, 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: */
     10: /*
     11:    Private data structure used by the FEAST interface
     12: */

     17: typedef struct {
     18:   PetscScalar  *work1,*work2,*Aq,*Bq;   /* workspace */
     19:   PetscBLASInt npoints;                 /* number of contour points */
     20: } EPS_FEAST;

     22: /*
     23:    Definition of routines from the FEAST package
     24: */

     26: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     27: #define SLEPC_FEAST(lcase,ucase) lcase##_
     28: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     29: #define SLEPC_FEAST(lcase,ucase) ucase
     30: #else
     31: #define SLEPC_FEAST(lcase,ucase) lcase
     32: #endif

     34: #if defined(PETSC_USE_COMPLEX)

     36: #if defined(PETSC_USE_REAL_SINGLE)

     38: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     39: #define SLEPC_FEASTM(lcase,ucase) cfeast_h##lcase##_
     40: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     41: #define SLEPC_FEASTM(lcase,ucase) CFEAST_H##ucase
     42: #else
     43: #define SLEPC_FEASTM(lcase,ucase) cfeast_h##lcase
     44: #endif

     46: #else

     48: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     49: #define SLEPC_FEASTM(lcase,ucase) zfeast_h##lcase##_
     50: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     51: #define SLEPC_FEASTM(lcase,ucase) ZFEAST_H##ucase
     52: #else
     53: #define SLEPC_FEASTM(lcase,ucase) zfeast_h##lcase
     54: #endif

     56: #endif

     58: #else

     60: #if defined(PETSC_USE_REAL_SINGLE)

     62: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     63: #define SLEPC_FEASTM(lcase,ucase) sfeast_s##lcase##_
     64: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     65: #define SLEPC_FEASTM(lcase,ucase) SFEAST_S##ucase
     66: #else
     67: #define SLEPC_FEASTM(lcase,ucase) sfeast_s##lcase
     68: #endif

     70: #else

     72: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
     73: #define SLEPC_FEASTM(lcase,ucase) dfeast_s##lcase##_
     74: #elif defined(SLEPC_FEAST_HAVE_CAPS)
     75: #define SLEPC_FEASTM(lcase,ucase) DFEAST_S##ucase
     76: #else
     77: #define SLEPC_FEASTM(lcase,ucase) dfeast_s##lcase
     78: #endif

     80: #endif

     82: #endif

     84: #define FEASTinit_(a) SLEPC_FEAST(feastinit,FEASTINIT) ((a))
     85: #define FEASTrci_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) SLEPC_FEASTM(rci,RCI) ((a),(b),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n),(o),(p),(q),(r))

     87: PETSC_EXTERN void   SLEPC_FEAST(feastinit,FEASTINIT)(PetscBLASInt*);
     88: PETSC_EXTERN void   SLEPC_FEASTM(rci,RCI)(PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*,PetscReal*,PetscReal*,PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt*);

     90: #endif