Actual source code: blzpackp.h
slepc-3.11.2 2019-07-30
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 BLZPACK interface
12: */
14: #if !defined(SLEPC_BLZPACK_H)
15: #define SLEPC_BLZPACK_H
17: typedef struct {
18: PetscBLASInt block_size; /* block size */
19: PetscBLASInt slice; /* use spectrum slicing */
20: PetscBLASInt nsteps; /* maximum number of steps per run */
21: PetscBLASInt *istor;
22: PetscReal *rstor;
23: PetscScalar *u;
24: PetscScalar *v;
25: PetscScalar *eig;
26: } EPS_BLZPACK;
28: /*
29: Definition of routines from the BLZPACK package
30: */
32: #if defined(SLEPC_BLZPACK_HAVE_UNDERSCORE)
33: #define SLEPC_BLZPACK(lcase,ucase) lcase##_
34: #elif defined(SLEPC_BLZPACK_HAVE_CAPS)
35: #define SLEPC_BLZPACK(lcase,ucase) ucase
36: #else
37: #define SLEPC_BLZPACK(lcase,ucase) lcase
38: #endif
40: /*
41: These are real case, current version of BLZPACK only supports real
42: matrices
43: */
45: #if defined(PETSC_USE_SINGLE)
46: /*
47: For these machines we must call the single precision Fortran version
48: */
49: #define BLZpack_ SLEPC_BLZPACK(blzdrs,BLZDRS)
50: #else
51: #define BLZpack_ SLEPC_BLZPACK(blzdrd,BLZDRD)
52: #endif
54: #define BLZistorr_ SLEPC_BLZPACK(istorr,ISTORR)
55: #define BLZrstorr_ SLEPC_BLZPACK(rstorr,RSTORR)
57: SLEPC_EXTERN void BLZpack_(PetscBLASInt*,PetscReal*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscScalar*);
59: SLEPC_EXTERN PetscBLASInt BLZistorr_(PetscBLASInt*,const char*,int);
60: SLEPC_EXTERN PetscReal BLZrstorr_(PetscReal*,char*,int);
62: #endif