|
LMMC
Lamina Mathematic core
|
#include <math.h>#include <string.h>#include "memory_bridge.h"#include "internal.h"#include "eigen_internal.h"#include "lmmc/config.h"#include "lmmc/dense.h"#include "lmmc/eigen.h"#include "lmmc/linear_algebra.h"#include "eigen_general_internal.h"函数 | |
| void | lmmc_eigen_copy_scaled (const lmmc_mat_t *a, lmmc_real_t scale, lmmc_mat_t *result) |
| lmmc_status_t | lmmc_eigen_restore_scale (lmmc_vec_t *real, lmmc_vec_t *imag, lmmc_real_t scale) |
| void | lmmc_eigen_values_2x2 (lmmc_real_t a00, lmmc_real_t a01, lmmc_real_t a10, lmmc_real_t a11, lmmc_real_t *real0, lmmc_real_t *imag0, lmmc_real_t *real1, lmmc_real_t *imag1) |
| lmmc_status_t | lmmc_eigen_general (const lmmc_mat_t *a, lmmc_eigen_gen_result_t *out_result) |
| 计算一般实矩阵的特征值(不输出特征向量). | |
| void | lmmc_eigen_gen_result_destroy (lmmc_eigen_gen_result_t *result) |
| 释放 lmmc_eigen_general 输出结果. | |
| void lmmc_eigen_copy_scaled | ( | const lmmc_mat_t * | a, |
| lmmc_real_t | scale, | ||
| lmmc_mat_t * | result ) |
在文件 eigen_general.c 第 12 行定义.
引用了 lmmc_mat_t::cols, lmmc_eigen_copy_scaled(), MAT_ELEM , 以及 lmmc_mat_t::rows.
被这些函数引用 lmmc_eigen_copy_scaled().
| lmmc_status_t lmmc_eigen_restore_scale | ( | lmmc_vec_t * | real, |
| lmmc_vec_t * | imag, | ||
| lmmc_real_t | scale ) |
在文件 eigen_general.c 第 21 行定义.
引用了 lmmc_vec_t::data, lmmc_eigen_restore_scale(), LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK , 以及 lmmc_vec_t::size.
被这些函数引用 lmmc_eigen_restore_scale().
| void lmmc_eigen_values_2x2 | ( | lmmc_real_t | a00, |
| lmmc_real_t | a01, | ||
| lmmc_real_t | a10, | ||
| lmmc_real_t | a11, | ||
| lmmc_real_t * | real0, | ||
| lmmc_real_t * | imag0, | ||
| lmmc_real_t * | real1, | ||
| lmmc_real_t * | imag1 ) |
在文件 eigen_general.c 第 33 行定义.
被这些函数引用 lmmc_eigen_values_2x2() , 以及 lmmc_eigen_vectors_2x2().
| lmmc_status_t lmmc_eigen_general | ( | const lmmc_mat_t * | a, |
| lmmc_eigen_gen_result_t * | out_result ) |
计算一般实矩阵的特征值(不输出特征向量).
算法:公共尺度归一化 -> 安全缩放的 Householder Hessenberg 约化 -> Francis 双移位 QR 迭代.复数特征值以共轭对形式出现在 real_parts/imag_parts 中.
| [in] | a | nxn 实矩阵(不被修改). |
| [out] | out_result | 输出结果,调用方需配对调用 lmmc_eigen_gen_result_destroy 释放. |
在文件 eigen_general.c 第 138 行定义.
引用了 lmmc_mat_t::cols, lmmc_eigen_gen_result_t::imag_parts, lmmc_eigen_gen_result_destroy(), lmmc_eigen_general(), lmmc_eigen_matrix_scale(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_create(), lmmc_vec_destroy(), lmmc_eigen_gen_result_t::real_parts , 以及 lmmc_mat_t::rows.
被这些函数引用 lmmc_eigen_general().
| void lmmc_eigen_gen_result_destroy | ( | lmmc_eigen_gen_result_t * | result | ) |
释放 lmmc_eigen_general 输出结果.
在文件 eigen_general.c 第 172 行定义.
引用了 lmmc_eigen_gen_result_t::imag_parts, lmmc_eigen_gen_result_destroy(), lmmc_vec_destroy() , 以及 lmmc_eigen_gen_result_t::real_parts.
被这些函数引用 lmmc_eigen_gen_result_destroy() , 以及 lmmc_eigen_general().