NULAPACK
NUmerical Linear Algebra PACKage
Loading...
Searching...
No Matches
Doolittle.h
Go to the documentation of this file.
1
33#ifndef DOOLITTLE_H
34#define DOOLITTLE_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 doolittle(INTEGER* N, REAL* A, REAL* L, REAL* U, INTEGER* INFO) {
75 API_sgedtrf(N, A, L, U, INFO);
76 }
77
89 API_dgedtrf(N, A, L, U, INFO);
90 }
91
103 API_cgedtrf(N, A, L, U, INFO);
104 }
105
117 API_zgedtrf(N, A, L, U, INFO);
118 }
119
120#else // C-only fallback
121
122 /* ===========
123 * C INTERFACE
124 * ============ */
125
126 #define doolittle(N, A, L, U, INFO) \
127 _Generic((A), \
128 REAL*: API_sgedtrf, \
129 DOUBLE*: API_dgedtrf, \
130 COMPLEX*: API_cgedtrf, \
131 DOUBLE_COMPLEX*: API_zgedtrf \
132 )(N, A, L, U, INFO)
133
134#endif
135
136#endif
void API_dgedtrf(fortran_int *N, fortran_double *A, fortran_double *L, fortran_double *U, fortran_int *INFO)
void API_cgedtrf(fortran_int *N, fortran_complex *A, fortran_complex *L, fortran_complex *U, fortran_int *INFO)
void API_zgedtrf(fortran_int *N, fortran_double_complex *A, fortran_double_complex *L, fortran_double_complex *U, fortran_int *INFO)
void doolittle(fortran_int *N, fortran_real *A, fortran_real *L, fortran_real *U, fortran_int *INFO)
Doolittle LU factorization of a general matrix: A = L * U.
Definition Doolittle.h:74
void API_sgedtrf(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