1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
/*
ARPACK++ v1.2 2/20/2000
c++ interface to ARPACK code.
MODULE ARLComp.h.
ALTERED copy of dcomplex.h and scomplex.h (from SuperLU package).
Structure complex was renamed to lscomplex.
Structure doublecomplex was renamed to ldcomplex.
*/
/*
* -- SuperLU routine (version 2.0) --
* Univ. of California Berkeley, Xerox Palo Alto Research Center,
* and Lawrence Berkeley National Lab.
* November 15, 1997
*
*/
#ifndef __SUPERLU_DCOMPLEX /* allow multiple inclusions */
#define __SUPERLU_DCOMPLEX
/*
* This header file is to be included in source files z*.c
*/
#ifndef DCOMPLEX_INCLUDE
#define DCOMPLEX_INCLUDE
typedef struct { double r, i; } ldcomplex;
/* Macro definitions */
/* Complex Addition c = a + b */
#define z_add(c, a, b) { (c)->r = (a)->r + (b)->r; \
(c)->i = (a)->i + (b)->i; }
/* Complex Subtraction c = a - b */
#define z_sub(c, a, b) { (c)->r = (a)->r - (b)->r; \
(c)->i = (a)->i - (b)->i; }
/* Complex-Double Multiplication */
#define zd_mult(c, a, b) { (c)->r = (a)->r * (b); \
(c)->i = (a)->i * (b); }
/* Complex-Complex Multiplication */
#define zz_mult(c, a, b) { \
double cr, ci; \
cr = (a)->r * (b)->r - (a)->i * (b)->i; \
ci = (a)->i * (b)->r + (a)->r * (b)->i; \
(c)->r = cr; \
(c)->i = ci; \
}
/* Complex equality testing */
#define z_eq(a, b) ( (a)->r == (b)->r && (a)->i == (b)->i )
#ifdef __cplusplus
extern "C" {
#endif
/* Prototypes for functions in dcomplex.c */
void z_div(ldcomplex *, ldcomplex *, ldcomplex *);
double z_abs(ldcomplex *); /* exact */
double z_abs1(ldcomplex *); /* approximate */
void z_exp(ldcomplex *, ldcomplex *);
void d_cnjg(ldcomplex *r, ldcomplex *z);
double d_imag(ldcomplex *);
#ifdef __cplusplus
}
#endif
#endif
#endif /* __SUPERLU_DCOMPLEX */
#ifndef __SUPERLU_SCOMPLEX /* allow multiple inclusions */
#define __SUPERLU_SCOMPLEX
/*
* This header file is to be included in source files c*.c
*/
#ifndef SCOMPLEX_INCLUDE
#define SCOMPLEX_INCLUDE
typedef struct { float r, i; } lscomplex;
/* Macro definitions */
/* Complex Addition c = a + b */
#define c_add(c, a, b) { (c)->r = (a)->r + (b)->r; \
(c)->i = (a)->i + (b)->i; }
/* Complex Subtraction c = a - b */
#define c_sub(c, a, b) { (c)->r = (a)->r - (b)->r; \
(c)->i = (a)->i - (b)->i; }
/* Complex-Double Multiplication */
#define cs_mult(c, a, b) { (c)->r = (a)->r * (b); \
(c)->i = (a)->i * (b); }
/* Complex-Complex Multiplication */
#define cc_mult(c, a, b) { \
float cr, ci; \
cr = (a)->r * (b)->r - (a)->i * (b)->i; \
ci = (a)->i * (b)->r + (a)->r * (b)->i; \
(c)->r = cr; \
(c)->i = ci; \
}
/* Complex equality testing */
#define c_eq(a, b) ( (a)->r == (b)->r && (a)->i == (b)->i )
#ifdef __cplusplus
extern "C" {
#endif
/* Prototypes for functions in scomplex.c */
void c_div(lscomplex *, lscomplex *, lscomplex *);
double c_abs(lscomplex *); /* exact */
double c_abs1(lscomplex *); /* approximate */
void c_exp(lscomplex *, lscomplex *);
void r_cnjg(lscomplex *, lscomplex *);
double r_imag(lscomplex *);
#ifdef __cplusplus
}
#endif
#endif
#endif /* __SUPERLU_SCOMPLEX */
|