Actual source code: feastp.h
slepc-3.7.2 2016-07-19
1: /*
2: Private data structure used by the FEAST interface
4: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5: SLEPc - Scalable Library for Eigenvalue Problem Computations
6: Copyright (c) 2002-2016, Universitat Politecnica de Valencia, Spain
8: This file is part of SLEPc.
10: SLEPc is free software: you can redistribute it and/or modify it under the
11: terms of version 3 of the GNU Lesser General Public License as published by
12: the Free Software Foundation.
14: SLEPc is distributed in the hope that it will be useful, but WITHOUT ANY
15: WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16: FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
17: more details.
19: You should have received a copy of the GNU Lesser General Public License
20: along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
21: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
22: */
27: typedef struct {
28: PetscScalar *work1,*work2,*Aq,*Bq; /* workspace */
29: PetscBLASInt npoints; /* number of contour points */
30: } EPS_FEAST;
32: /*
33: Definition of routines from the FEAST package
34: */
36: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
37: #define SLEPC_FEAST(lcase,ucase) lcase##_
38: #elif defined(SLEPC_FEAST_HAVE_CAPS)
39: #define SLEPC_FEAST(lcase,ucase) ucase
40: #else
41: #define SLEPC_FEAST(lcase,ucase) lcase
42: #endif
44: #if defined(PETSC_USE_COMPLEX)
46: #if defined(PETSC_USE_REAL_SINGLE)
48: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
49: #define SLEPC_FEASTM(lcase,ucase) cfeast_h##lcase##_
50: #elif defined(SLEPC_FEAST_HAVE_CAPS)
51: #define SLEPC_FEASTM(lcase,ucase) CFEAST_H##ucase
52: #else
53: #define SLEPC_FEASTM(lcase,ucase) cfeast_h##lcase
54: #endif
56: #else
58: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
59: #define SLEPC_FEASTM(lcase,ucase) zfeast_h##lcase##_
60: #elif defined(SLEPC_FEAST_HAVE_CAPS)
61: #define SLEPC_FEASTM(lcase,ucase) ZFEAST_H##ucase
62: #else
63: #define SLEPC_FEASTM(lcase,ucase) zfeast_h##lcase
64: #endif
66: #endif
68: #else
70: #if defined(PETSC_USE_REAL_SINGLE)
72: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
73: #define SLEPC_FEASTM(lcase,ucase) sfeast_s##lcase##_
74: #elif defined(SLEPC_FEAST_HAVE_CAPS)
75: #define SLEPC_FEASTM(lcase,ucase) SFEAST_S##ucase
76: #else
77: #define SLEPC_FEASTM(lcase,ucase) sfeast_s##lcase
78: #endif
80: #else
82: #if defined(SLEPC_FEAST_HAVE_UNDERSCORE)
83: #define SLEPC_FEASTM(lcase,ucase) dfeast_s##lcase##_
84: #elif defined(SLEPC_FEAST_HAVE_CAPS)
85: #define SLEPC_FEASTM(lcase,ucase) DFEAST_S##ucase
86: #else
87: #define SLEPC_FEASTM(lcase,ucase) dfeast_s##lcase
88: #endif
90: #endif
92: #endif
94: #define FEASTinit_(a) SLEPC_FEAST(feastinit,FEASTINIT) ((a))
95: #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))
97: PETSC_EXTERN void SLEPC_FEAST(feastinit,FEASTINIT)(PetscBLASInt*);
98: 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*);
100: #endif