Actual source code: feastp.h

slepc-3.11.2 2019-07-30
Report Typos and Errors
  1: /*
  2:    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  3:    SLEPc - Scalable Library for Eigenvalue Problem Computations
  4:    Copyright (c) 2002-2019, 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: */

 14: #if !defined(SLEPC_FEAST_H)
 15: #define SLEPC_FEAST_H

 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: SLEPC_EXTERN void   SLEPC_FEAST(feastinit,FEASTINIT)(PetscBLASInt*);
 88: SLEPC_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