SuperLU: SRC/slu_scomplex.h File Reference

# SRC/slu_scomplex.h File Reference

Header file for complex operations. More...

Go to the source code of this file.

## Data Structures
struct | complex
## Defines
#define | c_add(c, a, b)
| Complex Addition c = a + b.
#define | c_sub(c, a, b)
| Complex Subtraction c = a - b.
#define | cs_mult(c, a, b)
| Complex-Double Multiplication.
#define | cc_mult(c, a, b)
| Complex-Complex Multiplication.
#define | cc_conj(a, b)
#define | c_eq(a, b) ( (a)->r == (b)->r && (a)->i == (b)->i )
| Complex equality testing.
## Functions
void | c_div (complex *, complex *, complex *)
| Complex Division c = a/b.
double | c_abs (complex *)
| Returns sqrt(z.r^2 + z.i^2).
double | c_abs1 (complex *)
| Approximates the abs. Returns abs(z.r) + abs(z.i).
void | c_exp (complex *, complex *)
| Return the exponentiation.
void | r_cnjg (complex *, complex *)
| Return the complex conjugate.
double | r_imag (complex *)
| Return the imaginary part.
complex | c_sgn (complex *)
| SIGN functions for complex number. Returns z/abs(z).
complex | c_sqrt (complex *)
| Square-root of a complex number.

## Detailed Description

      -- SuperLU routine (version 2.0) --
     Univ. of California Berkeley, Xerox Palo Alto Research Center,
     and Lawrence Berkeley National Lab.
     November 15, 1997

     Contains definitions for various complex operations.
     This header file is to be included in source files c*.c

## Define Documentation

#define c_add | ( | c,
|  | a,
|  | b |  | ) |

Value:

    { (c)->r = (a)->r + (b)->r; \
                             (c)->i = (a)->i + (b)->i; }

#define c_eq | ( | a,
|  | b |  | ) | ( (a)->r == (b)->r && (a)->i == (b)->i )

#define c_sub | ( | c,
|  | a,
|  | b |  | ) |

Value:

    { (c)->r = (a)->r - (b)->r; \
                             (c)->i = (a)->i - (b)->i; }

#define cc_conj | ( | a,
|  | b |  | ) |

Value:

    { \
            (a)->r = (b)->r; \
            (a)->i = -((b)->i); \
        }

#define cc_mult | ( | c,
|  | a,
|  | b |  | ) |

Value:

    { \
            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; \
        }

#define cs_mult | ( | c,
|  | a,
|  | b |  | ) |

Value:

    { (c)->r = (a)->r * (b); \
                               (c)->i = (a)->i * (b); }

## Function Documentation

double c_abs | ( | complex * |  | ) |

double c_abs1 | ( | complex * |  | ) |

void c_div | ( | complex * | ,
|  | complex * | ,
|  | complex * |  |
| ) |  |  |

void c_exp | ( | complex * | ,
|  | complex * |  |
| ) |  |  |

complex c_sgn | ( | complex * |  | ) |

complex c_sqrt | ( | complex * |  | ) |

void r_cnjg | ( | complex * | ,
|  | complex * |  |
| ) |  |  |

double r_imag | ( | complex * |  | ) |