LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
eigen_general.c 文件参考
#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"
eigen_general.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

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 输出结果.

函数说明

◆ lmmc_eigen_copy_scaled()

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_eigen_restore_scale()

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().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_eigen_values_2x2()

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_values_2x2() , 以及 lmmc_eigen_vectors_2x2().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_eigen_general()

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]anxn 实矩阵(不被修改).
[out]out_result输出结果,调用方需配对调用 lmmc_eigen_gen_result_destroy 释放.
返回
副作用
  • 分配堆内存.a 不被修改.

在文件 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().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_eigen_gen_result_destroy()

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().

函数调用图:
这是这个函数的调用关系图: