NULAPACK
NUmerical Linear Algebra PACKage
Loading...
Searching...
No Matches
Cholesky.h
Go to the documentation of this file.
1
33#ifndef CHOLESKY_H
34#define CHOLESKY_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 cholesky(INTEGER* N, REAL* A, REAL* L, INTEGER* LDA, INTEGER* INFO) {
75 API_spoctrf(N, A, L, LDA, INFO);
76 }
77
89 API_dpoctrf(N, A, L, LDA, INFO);
90 }
91
103 API_cpoctrf(N, A, L, LDA, INFO);
104 }
105
117 API_zpoctrf(N, A, L, LDA, INFO);
118 }
119
120#else // C-only fallback
121
122 /* ===========
123 * C INTERFACE
124 * ============ */
125
126 #define cholesky(N, A, L, LDA, INFO) \
127 _Generic((A), \
128 REAL*: API_spoctrf, \
129 DOUBLE*: API_dpoctrf, \
130 COMPLEX*: API_cpoctrf, \
131 DOUBLE_COMPLEX*: API_zpoctrf \
132 )(N, A, L, LDA, INFO)
133
134#endif
135
136#endif
void API_spoctrf(fortran_int *N, fortran_real *A, fortran_real *L, fortran_int *LDA, fortran_int *INFO)
void API_cpoctrf(fortran_int *N, fortran_complex *A, fortran_complex *L, fortran_int *LDA, fortran_int *INFO)
void cholesky(fortran_int *N, fortran_real *A, fortran_real *L, fortran_int *LDA, fortran_int *INFO)
Cholesky factorization of a symmetric positive-definite matrix: A = L * L^T.
Definition Cholesky.h:74
void API_dpoctrf(fortran_int *N, fortran_double *A, fortran_double *L, fortran_int *LDA, fortran_int *INFO)
void API_zpoctrf(fortran_int *N, fortran_double_complex *A, fortran_double_complex *L, fortran_int *LDA, 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