NULAPACK
NUmerical Linear Algebra PACKage
Loading...
Searching...
No Matches
Crout.h
Go to the documentation of this file.
1
33#ifndef CROUT_H
34#define CROUT_H
35
36#include "types.h"
37#include "mangling.h"
38
39/* =========================
40 * FORTRAN API DECLARATIONS
41 * ========================= */
42
44
46
48
50
51
52#ifdef __cplusplus
53
54 /* ==============
55 * C++ INTERFACE
56 * ============== */
57
74 SUBROUTINE crout(INTEGER* N, REAL* A, REAL* L, REAL* U, INTEGER* INFO) {
75 API_sgectrf(N, A, L, U, INFO);
76 }
77
89 API_dgectrf(N, A, L, U, INFO);
90 }
91
103 API_cgectrf(N, A, L, U, INFO);
104 }
105
117 API_zgectrf(N, A, L, U, INFO);
118 }
119
120#else // C-only fallback
121
122 /* ===========
123 * C INTERFACE
124 * ============ */
125
126 #define crout(N, A, L, U, INFO) \
127 _Generic((A), \
128 REAL*: API_sgectrf, \
129 DOUBLE*: API_dgectrf, \
130 COMPLEX*: API_cgectrf, \
131 DOUBLE_COMPLEX*: API_zgectrf \
132 )(N, A, L, U, INFO)
133
134#endif
135
136#endif
void crout(fortran_int *N, fortran_real *A, fortran_real *L, fortran_real *U, fortran_int *INFO)
Crout LU factorization of a general matrix: A = L * U.
Definition Crout.h:74
void API_cgectrf(fortran_int *N, fortran_complex *A, fortran_complex *L, fortran_complex *U, fortran_int *INFO)
void API_dgectrf(fortran_int *N, fortran_double *A, fortran_double *L, fortran_double *U, fortran_int *INFO)
void API_zgectrf(fortran_int *N, fortran_double_complex *A, fortran_double_complex *L, fortran_double_complex *U, fortran_int *INFO)
void API_sgectrf(fortran_int *N, fortran_real *A, fortran_real *L, fortran_real *U, fortran_int *INFO)
#define fortran
Definition types.h:99
#define SUBROUTINE
Definition types.h:96
#define REAL
Definition types.h:79
#define DOUBLE_COMPLEX
Definition types.h:82
#define DOUBLE
Definition types.h:80
#define INTEGER
Definition types.h:83
#define COMPLEX
Definition types.h:81