LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
stdlib_linalg_structural.c 文件参考
#include "lmmc/stdlib.h"
#include <math.h>
#include <string.h>
#include "lmmc/dense.h"
#include "lmmc/eigen.h"
#include "lmmc/linear_algebra.h"
#include "memory_bridge.h"
#include "stdlib_internal.h"
stdlib_linalg_structural.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

lmmc_status_t lmmc_std_linalg_shape (const lmmc_mat_t *a, size_t *out_rows, size_t *out_cols)
lmmc_status_t lmmc_std_linalg_shape_vec (const lmmc_mat_t *a, lmmc_vec_t *out)
lmmc_status_t lmmc_std_linalg_eye (size_t n, lmmc_mat_t *out)
lmmc_status_t lmmc_std_linalg_diag (const lmmc_vec_t *diagonal, lmmc_mat_t *out)
lmmc_status_t lmmc_std_linalg_dot (const lmmc_vec_t *a, const lmmc_vec_t *b, lmmc_real_t *out)
lmmc_status_t lmmc_std_linalg_cross (const lmmc_vec_t *a, const lmmc_vec_t *b, lmmc_vec_t *out)
lmmc_status_t lmmc_std_linalg_norm (const lmmc_vec_t *x, lmmc_real_t *out)
void lmmc_std_bool_vec_destroy (lmmc_std_bool_vec_t *vec)
void lmmc_std_bool_mat_destroy (lmmc_std_bool_mat_t *mat)
lmmc_status_t lmmc_std_linalg_matmul (const lmmc_mat_t *a, const lmmc_mat_t *b, lmmc_mat_t *out)
lmmc_status_t lmmc_std_linalg_matvec (const lmmc_mat_t *a, const lmmc_vec_t *x, lmmc_vec_t *out)
lmmc_status_t lmmc_std_linalg_transpose (const lmmc_mat_t *a, lmmc_mat_t *out)
lmmc_status_t lmmc_std_linalg_adjoint (const lmmc_mat_t *a, lmmc_mat_t *out)
lmmc_status_t lmmc_std_linalg_det (const lmmc_mat_t *a, lmmc_real_t *out)
lmmc_status_t lmmc_std_linalg_inv (const lmmc_mat_t *a, lmmc_mat_t *out)
lmmc_status_t lmmc_std_linalg_rank (const lmmc_mat_t *a, size_t *out_rank)
lmmc_status_t lmmc_std_linalg_trace (const lmmc_mat_t *a, lmmc_real_t *out)
lmmc_status_t lmmc_std_linalg_solve_left (const lmmc_mat_t *a, const lmmc_mat_t *b, lmmc_mat_t *out)
lmmc_status_t lmmc_std_linalg_solve_right (const lmmc_mat_t *b, const lmmc_mat_t *a, lmmc_mat_t *out)
lmmc_status_t lmmc_std_linalg_eig (const lmmc_mat_t *a, lmmc_eigen_gen_full_result_t *out)
lmmc_status_t lmmc_std_linalg_svd (const lmmc_mat_t *a, lmmc_svd_result_t *out)
lmmc_status_t lmmc_std_linalg_eig_table (const lmmc_mat_t *a, lmmc_std_eig_table_t *out)
const lmmc_mat_t * lmmc_std_eig_table_get (const lmmc_std_eig_table_t *table, const char *key)
size_t lmmc_std_eig_table_count (const lmmc_std_eig_table_t *table)
const char * lmmc_std_eig_table_key (const lmmc_std_eig_table_t *table, size_t index)
void lmmc_std_eig_table_destroy (lmmc_std_eig_table_t *table)
lmmc_status_t lmmc_std_linalg_svd_table (const lmmc_mat_t *a, lmmc_std_svd_table_t *out)
const lmmc_mat_t * lmmc_std_svd_table_get (const lmmc_std_svd_table_t *table, const char *key)
size_t lmmc_std_svd_table_count (const lmmc_std_svd_table_t *table)
const char * lmmc_std_svd_table_key (const lmmc_std_svd_table_t *table, size_t index)
void lmmc_std_svd_table_destroy (lmmc_std_svd_table_t *table)

函数说明

◆ lmmc_std_linalg_shape()

lmmc_status_t lmmc_std_linalg_shape ( const lmmc_mat_t * a,
size_t * out_rows,
size_t * out_cols )

Allocating vector, matrix, boolean, eig/SVD and table outputs must be initialized with every descriptor field zero (including all result members). An owner, borrowed view, partially empty descriptor or input/output alias is rejected with LMMC_STATUS_INVALID_ARGUMENT without changing the output. Success returns independent owning buffers; any failure preserves every original output field. Destroy successful outputs with their matching destroy function before reusing the descriptor. Scalar outputs and preallocated low-level kernels retain their own contracts.

在文件 stdlib_linalg_structural.c 第 13 行定义.

引用了 lmmc_mat_t::cols, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_shape() , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_std_linalg_shape().

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

◆ lmmc_std_linalg_shape_vec()

lmmc_status_t lmmc_std_linalg_shape_vec ( const lmmc_mat_t * a,
lmmc_vec_t * out )

在文件 stdlib_linalg_structural.c 第 25 行定义.

引用了 lmmc_mat_t::cols, lmmc_vec_t::data, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_shape_vec(), lmmc_vec_create() , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_std_linalg_shape_vec().

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

◆ lmmc_std_linalg_eye()

lmmc_status_t lmmc_std_linalg_eye ( size_t n,
lmmc_mat_t * out )

在文件 stdlib_linalg_structural.c 第 41 行定义.

引用了 lmmc_mat_destroy(), lmmc_mat_identity(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_std_linalg_eye().

被这些函数引用 lmmc_std_linalg_eye().

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

◆ lmmc_std_linalg_diag()

lmmc_status_t lmmc_std_linalg_diag ( const lmmc_vec_t * diagonal,
lmmc_mat_t * out )

在文件 stdlib_linalg_structural.c 第 57 行定义.

引用了 lmmc_mat_destroy(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_diag() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_linalg_diag().

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

◆ lmmc_std_linalg_dot()

lmmc_status_t lmmc_std_linalg_dot ( const lmmc_vec_t * a,
const lmmc_vec_t * b,
lmmc_real_t * out )

在文件 stdlib_linalg_structural.c 第 71 行定义.

引用了 LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_dot(), lmmc_vec_dot() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_linalg_dot().

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

◆ lmmc_std_linalg_cross()

lmmc_status_t lmmc_std_linalg_cross ( const lmmc_vec_t * a,
const lmmc_vec_t * b,
lmmc_vec_t * out )

在文件 stdlib_linalg_structural.c 第 88 行定义.

引用了 lmmc_vec_t::data, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_cross(), lmmc_vec_create(), lmmc_vec_destroy() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_linalg_cross().

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

◆ lmmc_std_linalg_norm()

lmmc_status_t lmmc_std_linalg_norm ( const lmmc_vec_t * x,
lmmc_real_t * out )

在文件 stdlib_linalg_structural.c 第 114 行定义.

引用了 LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_norm() , 以及 lmmc_vec_norm2().

被这些函数引用 lmmc_std_linalg_norm().

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

◆ lmmc_std_bool_vec_destroy()

void lmmc_std_bool_vec_destroy ( lmmc_std_bool_vec_t * vec)

在文件 stdlib_linalg_structural.c 第 127 行定义.

引用了 lmmc_std_bool_vec_t::data, lmmc_memory_free(), lmmc_std_bool_vec_destroy(), lmmc_std_bool_vec_t::owns_data , 以及 lmmc_std_bool_vec_t::size.

被这些函数引用 lmmc_std_bool_vec_destroy().

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

◆ lmmc_std_bool_mat_destroy()

void lmmc_std_bool_mat_destroy ( lmmc_std_bool_mat_t * mat)

在文件 stdlib_linalg_structural.c 第 138 行定义.

引用了 lmmc_std_bool_mat_t::cols, lmmc_std_bool_mat_t::data, lmmc_memory_free(), lmmc_std_bool_mat_destroy(), lmmc_std_bool_mat_t::owns_data, lmmc_std_bool_mat_t::rows , 以及 lmmc_std_bool_mat_t::stride.

被这些函数引用 lmmc_std_bool_mat_destroy().

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

◆ lmmc_std_linalg_matmul()

lmmc_status_t lmmc_std_linalg_matmul ( const lmmc_mat_t * a,
const lmmc_mat_t * b,
lmmc_mat_t * out )

在文件 stdlib_linalg_structural.c 第 151 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_create(), lmmc_mat_destroy(), lmmc_mat_mul(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_matmul() , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_std_linalg_matmul().

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

◆ lmmc_std_linalg_matvec()

lmmc_status_t lmmc_std_linalg_matvec ( const lmmc_mat_t * a,
const lmmc_vec_t * x,
lmmc_vec_t * out )

在文件 stdlib_linalg_structural.c 第 177 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_vec_mul(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_matvec(), lmmc_vec_create(), lmmc_vec_destroy(), lmmc_mat_t::rows , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_linalg_matvec().

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

◆ lmmc_std_linalg_transpose()

lmmc_status_t lmmc_std_linalg_transpose ( const lmmc_mat_t * a,
lmmc_mat_t * out )

在文件 stdlib_linalg_structural.c 第 203 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_create(), lmmc_mat_destroy(), lmmc_mat_transpose_to(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_transpose() , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_std_linalg_adjoint(), lmmc_std_linalg_solve_right() , 以及 lmmc_std_linalg_transpose().

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

◆ lmmc_std_linalg_adjoint()

lmmc_status_t lmmc_std_linalg_adjoint ( const lmmc_mat_t * a,
lmmc_mat_t * out )

在文件 stdlib_linalg_structural.c 第 225 行定义.

引用了 lmmc_std_linalg_adjoint() , 以及 lmmc_std_linalg_transpose().

被这些函数引用 lmmc_std_linalg_adjoint().

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

◆ lmmc_std_linalg_det()

lmmc_status_t lmmc_std_linalg_det ( const lmmc_mat_t * a,
lmmc_real_t * out )

在文件 stdlib_linalg_structural.c 第 231 行定义.

引用了 lmmc_mat_det(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_std_linalg_det().

被这些函数引用 lmmc_std_linalg_det().

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

◆ lmmc_std_linalg_inv()

lmmc_status_t lmmc_std_linalg_inv ( const lmmc_mat_t * a,
lmmc_mat_t * out )

在文件 stdlib_linalg_structural.c 第 244 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_create(), lmmc_mat_destroy(), lmmc_mat_inv(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_inv() , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_std_linalg_inv() , 以及 lmmc_std_linalg_mat_pow_int().

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

◆ lmmc_std_linalg_rank()

lmmc_status_t lmmc_std_linalg_rank ( const lmmc_mat_t * a,
size_t * out_rank )

在文件 stdlib_linalg_structural.c 第 308 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_t::data, lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_rank(), lmmc_mat_t::rows , 以及 lmmc_mat_t::stride.

被这些函数引用 lmmc_std_linalg_rank().

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

◆ lmmc_std_linalg_trace()

lmmc_status_t lmmc_std_linalg_trace ( const lmmc_mat_t * a,
lmmc_real_t * out )

在文件 stdlib_linalg_structural.c 第 354 行定义.

引用了 lmmc_mat_trace(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_std_linalg_trace().

被这些函数引用 lmmc_std_linalg_trace().

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

◆ lmmc_std_linalg_solve_left()

lmmc_status_t lmmc_std_linalg_solve_left ( const lmmc_mat_t * a,
const lmmc_mat_t * b,
lmmc_mat_t * out )

在文件 stdlib_linalg_structural.c 第 387 行定义.

引用了 lmmc_mat_t::cols, lmmc_lu_decompose_inplace(), lmmc_mat_copy(), lmmc_mat_create(), lmmc_mat_destroy(), lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_solve_left(), lmmc_vec_create(), lmmc_vec_destroy() , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_std_linalg_solve_left() , 以及 lmmc_std_linalg_solve_right().

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

◆ lmmc_std_linalg_solve_right()

lmmc_status_t lmmc_std_linalg_solve_right ( const lmmc_mat_t * b,
const lmmc_mat_t * a,
lmmc_mat_t * out )

在文件 stdlib_linalg_structural.c 第 454 行定义.

引用了 lmmc_mat_t::cols, lmmc_mat_destroy(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_solve_left(), lmmc_std_linalg_solve_right(), lmmc_std_linalg_transpose() , 以及 lmmc_mat_t::rows.

被这些函数引用 lmmc_std_linalg_solve_right().

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

◆ lmmc_std_linalg_eig()

lmmc_status_t lmmc_std_linalg_eig ( const lmmc_mat_t * a,
lmmc_eigen_gen_full_result_t * out )

在文件 stdlib_linalg_structural.c 第 496 行定义.

引用了 lmmc_mat_t::cols, lmmc_eigen_gen_full_result_t::imag_parts, lmmc_eigen_gen_full_result_destroy(), lmmc_eigen_general_full(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_eig(), lmmc_eigen_gen_full_result_t::real_parts, lmmc_mat_t::rows, lmmc_eigen_gen_full_result_t::vectors_imag , 以及 lmmc_eigen_gen_full_result_t::vectors_real.

被这些函数引用 lmmc_std_linalg_eig() , 以及 lmmc_std_linalg_eig_table().

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

◆ lmmc_std_linalg_svd()

lmmc_status_t lmmc_std_linalg_svd ( const lmmc_mat_t * a,
lmmc_svd_result_t * out )

在文件 stdlib_linalg_structural.c 第 522 行定义.

引用了 LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_svd(), lmmc_svd(), lmmc_svd_result_destroy(), lmmc_svd_result_t::sigma, lmmc_svd_result_t::U , 以及 lmmc_svd_result_t::Vt.

被这些函数引用 lmmc_std_linalg_svd() , 以及 lmmc_std_linalg_svd_table().

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

◆ lmmc_std_linalg_eig_table()

lmmc_status_t lmmc_std_linalg_eig_table ( const lmmc_mat_t * a,
lmmc_std_eig_table_t * out )

◆ lmmc_std_eig_table_get()

const lmmc_mat_t * lmmc_std_eig_table_get ( const lmmc_std_eig_table_t * table,
const char * key )

在文件 stdlib_linalg_structural.c 第 576 行定义.

引用了 lmmc_std_eig_table_get(), lmmc_std_eig_table_t::values_imag, lmmc_std_eig_table_t::values_real, lmmc_std_eig_table_t::vectors_imag , 以及 lmmc_std_eig_table_t::vectors_real.

被这些函数引用 lmmc_std_eig_table_get().

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

◆ lmmc_std_eig_table_count()

size_t lmmc_std_eig_table_count ( const lmmc_std_eig_table_t * table)

在文件 stdlib_linalg_structural.c 第 587 行定义.

引用了 lmmc_std_eig_table_count().

被这些函数引用 lmmc_std_eig_table_count().

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

◆ lmmc_std_eig_table_key()

const char * lmmc_std_eig_table_key ( const lmmc_std_eig_table_t * table,
size_t index )

在文件 stdlib_linalg_structural.c 第 592 行定义.

引用了 lmmc_std_eig_table_key().

被这些函数引用 lmmc_std_eig_table_key().

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

◆ lmmc_std_eig_table_destroy()

void lmmc_std_eig_table_destroy ( lmmc_std_eig_table_t * table)

在文件 stdlib_linalg_structural.c 第 605 行定义.

引用了 lmmc_mat_destroy(), lmmc_std_eig_table_destroy(), lmmc_std_eig_table_t::values_imag, lmmc_std_eig_table_t::values_real, lmmc_std_eig_table_t::vectors_imag , 以及 lmmc_std_eig_table_t::vectors_real.

被这些函数引用 lmmc_std_eig_table_destroy().

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

◆ lmmc_std_linalg_svd_table()

lmmc_status_t lmmc_std_linalg_svd_table ( const lmmc_mat_t * a,
lmmc_std_svd_table_t * out )

在文件 stdlib_linalg_structural.c 第 614 行定义.

引用了 lmmc_mat_t::cols, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_std_linalg_svd(), lmmc_std_linalg_svd_table(), lmmc_std_svd_table_destroy(), lmmc_svd_result_destroy(), lmmc_mat_t::rows, lmmc_std_svd_table_t::S, lmmc_svd_result_t::sigma, lmmc_std_svd_table_t::U, lmmc_svd_result_t::U, lmmc_std_svd_table_t::Vt , 以及 lmmc_svd_result_t::Vt.

被这些函数引用 lmmc_std_linalg_svd_table().

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

◆ lmmc_std_svd_table_get()

const lmmc_mat_t * lmmc_std_svd_table_get ( const lmmc_std_svd_table_t * table,
const char * key )

在文件 stdlib_linalg_structural.c 第 642 行定义.

引用了 lmmc_std_svd_table_get(), lmmc_std_svd_table_t::S, lmmc_std_svd_table_t::U , 以及 lmmc_std_svd_table_t::Vt.

被这些函数引用 lmmc_std_svd_table_get().

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

◆ lmmc_std_svd_table_count()

size_t lmmc_std_svd_table_count ( const lmmc_std_svd_table_t * table)

在文件 stdlib_linalg_structural.c 第 652 行定义.

引用了 lmmc_std_svd_table_count().

被这些函数引用 lmmc_std_svd_table_count().

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

◆ lmmc_std_svd_table_key()

const char * lmmc_std_svd_table_key ( const lmmc_std_svd_table_t * table,
size_t index )

在文件 stdlib_linalg_structural.c 第 657 行定义.

引用了 lmmc_std_svd_table_key().

被这些函数引用 lmmc_std_svd_table_key().

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

◆ lmmc_std_svd_table_destroy()

void lmmc_std_svd_table_destroy ( lmmc_std_svd_table_t * table)

在文件 stdlib_linalg_structural.c 第 665 行定义.

引用了 lmmc_mat_destroy(), lmmc_std_svd_table_destroy(), lmmc_std_svd_table_t::S, lmmc_std_svd_table_t::U , 以及 lmmc_std_svd_table_t::Vt.

被这些函数引用 lmmc_std_linalg_svd_table() , 以及 lmmc_std_svd_table_destroy().

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