LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
eigen_internal.h
浏览该文件的文档.
1
7#ifndef LMMC_EIGEN_INTERNAL_H
8#define LMMC_EIGEN_INTERNAL_H
9
10#include <stddef.h>
11#include "lmmc/config.h"
12#include "lmmc/dense.h"
13
14#define EIGEN_MAX_ITER 30
15#define MAT_ELEM(mat, i, j) ((mat)->data[(i) * (mat)->stride + (j)])
16
18 lmmc_real_t* scale);
19
20/* Apply Householder reflector helpers shared by symmetric eigensolver,
21 * general eigensolver and SVD code paths. Defined once in eigen_internal.c;
22 * deliberately not part of the public API. */
23void householder_make(lmmc_real_t *x, size_t len, lmmc_real_t *tau_out,
24 lmmc_real_t *beta_out);
25void householder_apply_left(lmmc_mat_t *M, size_t i0, size_t len,
26 size_t j0, size_t j1,
27 const lmmc_real_t *v, lmmc_real_t tau);
28void householder_apply_right(lmmc_mat_t *M, size_t i0, size_t i1,
29 size_t j0, size_t len,
30 const lmmc_real_t *v, lmmc_real_t tau);
31
32/* Givens rotation helpers shared by the SVD code path. */
33
34void givens_right(lmmc_mat_t *M, size_t rows, size_t p, size_t q,
38
39#endif /* LMMC_EIGEN_INTERNAL_H */
LMMC binary real type and arithmetic spelling.
double lmmc_real_t
Public and internal LMMC real type.
行优先存储的稠密矩阵。
void givens_right(lmmc_mat_t *M, size_t rows, size_t p, size_t q, lmmc_real_t c, lmmc_real_t s)
void householder_apply_left(lmmc_mat_t *M, size_t i0, size_t len, size_t j0, size_t j1, const lmmc_real_t *v, lmmc_real_t tau)
void householder_make(lmmc_real_t *x, size_t len, lmmc_real_t *tau_out, lmmc_real_t *beta_out)
void givens_compute(lmmc_real_t a, lmmc_real_t b, lmmc_real_t *c, lmmc_real_t *s, lmmc_real_t *r)
void householder_apply_right(lmmc_mat_t *M, size_t i0, size_t i1, size_t j0, size_t len, const lmmc_real_t *v, lmmc_real_t tau)
lmmc_status_t lmmc_eigen_matrix_scale(const lmmc_mat_t *a, lmmc_real_t *scale)
lmmc_status_t
LMMC 库统一返回的状态码.