SuperLU 6.0.1
slu_dcomplex.h
Go to the documentation of this file.
1
24#ifndef __SUPERLU_DCOMPLEX /* allow multiple inclusions */
25#define __SUPERLU_DCOMPLEX
26
27
28#ifndef DCOMPLEX_INCLUDE
29#define DCOMPLEX_INCLUDE
30
31typedef struct { double r, i; } doublecomplex;
32
33
34/* Macro definitions */
35
37#define z_add(c, a, b) { (c)->r = (a)->r + (b)->r; \
38 (c)->i = (a)->i + (b)->i; }
39
41#define z_sub(c, a, b) { (c)->r = (a)->r - (b)->r; \
42 (c)->i = (a)->i - (b)->i; }
43
45#define zd_mult(c, a, b) { (c)->r = (a)->r * (b); \
46 (c)->i = (a)->i * (b); }
47
49#define zz_mult(c, a, b) { \
50 double cr, ci; \
51 cr = (a)->r * (b)->r - (a)->i * (b)->i; \
52 ci = (a)->i * (b)->r + (a)->r * (b)->i; \
53 (c)->r = cr; \
54 (c)->i = ci; \
55 }
56
57#define zz_conj(a, b) { \
58 (a)->r = (b)->r; \
59 (a)->i = -((b)->i); \
60 }
61
63#define z_eq(a, b) ( (a)->r == (b)->r && (a)->i == (b)->i )
64
65
66#ifdef __cplusplus
67extern "C" {
68#endif
69
70/* Prototypes for functions in dcomplex.c */
72double z_abs(doublecomplex *); /* exact */
73double z_abs1(doublecomplex *); /* approximate */
76double d_imag(doublecomplex *);
79
80
81
82#ifdef __cplusplus
83 }
84#endif
85
86#endif
87
88#endif /* __SUPERLU_DCOMPLEX */
double z_abs1(doublecomplex *)
Approximates the abs. Returns abs(z.r) + abs(z.i)
Definition: dcomplex.c:84
double z_abs(doublecomplex *)
Returns sqrt(z.r^2 + z.i^2)
Definition: dcomplex.c:62
void d_cnjg(doublecomplex *r, doublecomplex *z)
Return the complex conjugate.
Definition: dcomplex.c:106
double d_imag(doublecomplex *)
Return the imaginary part.
Definition: dcomplex.c:113
void z_exp(doublecomplex *, doublecomplex *)
Return the exponentiation.
Definition: dcomplex.c:96
doublecomplex z_sgn(doublecomplex *)
SIGN functions for complex number. Returns z/abs(z)
Definition: dcomplex.c:120
void z_div(doublecomplex *, doublecomplex *, doublecomplex *)
Complex Division c = a/b.
Definition: dcomplex.c:32
doublecomplex z_sqrt(doublecomplex *)
Square-root of a complex number.
Definition: dcomplex.c:135
Definition: slu_dcomplex.h:31
double i
Definition: slu_dcomplex.h:31