|
LAMMP 4.2.0
Lamina High-Precision Arithmetic Library
|
#include "../../../include/lammp/impl/signed.h"#include "../../../include/lammp/impl/tmp_alloc.h"#include "../../../include/lammp/lmmpn.h"#include "../../../include/lammp/impl/mparam.h"#include "../../../include/lammp/impl/mat22_mul.h"
mat22_mul.c 的引用(Include)关系图:函数 | |
| void | lmmp_mat22_mul_basecase_ (lmmp_mat22_t *dst, const lmmp_mat22_t *matA, const lmmp_mat22_t *matB, mp_ptr tp, mp_size_t tn) |
| 计算2x2矩阵和2x2矩阵的乘积 | |
| int | lmmp_mat22_mul_size_ (lmmp_mat22_t *dst, const lmmp_mat22_t *matA, const lmmp_mat22_t *matB, mp_size_t *tn, mp_size_t *maxa) |
| Copyright (C) 2026 HJimmyK(Jericho Knox) | |
| void | lmmp_mat22_mul_strassen_ (lmmp_mat22_t *dst, const lmmp_mat22_t *matA, const lmmp_mat22_t *matB, mp_ptr tp, mp_size_t tn, mp_size_t maxa) |
| 计算(稠密)2x2矩阵和(稠密)2x2矩阵的乘积(STRASSEN算法) | |
| void | lmmp_mat22_sqr_basecase_ (lmmp_mat22_t *dst, const lmmp_mat22_t *matA, mp_ptr tp, mp_size_t tn) |
| 计算2x2矩阵平方 | |
| void | lmmp_mat22_sqr_strassen_ (lmmp_mat22_t *dst, const lmmp_mat22_t *mat, mp_ptr tp, mp_size_t tn) |
| 计算(稠密)2x2矩阵平方(STRASSEN算法) | |
| void lmmp_mat22_mul_basecase_ | ( | lmmp_mat22_t * | dst, |
| const lmmp_mat22_t * | matA, | ||
| const lmmp_mat22_t * | matB, | ||
| mp_ptr | tp, | ||
| mp_size_t | tn | ||
| ) |
计算2x2矩阵和2x2矩阵的乘积
| dst | 结果矩阵。 |
| matA | 矩阵A |
| matB | 矩阵B |
| tp | 临时缓冲区,用于存储中间结果,需要分配2*tn个limb,若为NULL,则会自动分配。 |
| tn | 缓冲区的limb长度 |
在文件 mat22_mul.c 第 93 行定义.
引用了 lmmp_add_signed_(), lmmp_mat22_sqr_basecase_(), lmmp_mul_signed_(), lmmp_param_assert, n, p1, p2, TALLOC_TYPE, TEMP_DECL, TEMP_FREE , 以及 tp.
被这些函数引用 lmmp_mat22_mul_().
函数调用图:
这是这个函数的调用关系图:| int lmmp_mat22_mul_size_ | ( | lmmp_mat22_t * | dst, |
| const lmmp_mat22_t * | matA, | ||
| const lmmp_mat22_t * | matB, | ||
| mp_size_t * | tn, | ||
| mp_size_t * | maxa | ||
| ) |
Copyright (C) 2026 HJimmyK(Jericho Knox)
计算2x2矩阵和2x2矩阵的乘积需要分配的内存
This file is part of LAMMP.
LAMMP is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (LGPL) as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY.
See https://www.gnu.org/licenses/.
在文件 mat22_mul.c 第 23 行定义.
引用了 A11, B11, LMMP_ABS, LMMP_MAX, lmmp_param_assert, MAT22_MUL_STRASSEN_THRESHOLD, MAT22_SQR_STRASSEN_THRESHOLD , 以及 n.
| void lmmp_mat22_mul_strassen_ | ( | lmmp_mat22_t * | dst, |
| const lmmp_mat22_t * | matA, | ||
| const lmmp_mat22_t * | matB, | ||
| mp_ptr | tp, | ||
| mp_size_t | tn, | ||
| mp_size_t | maxa | ||
| ) |
计算(稠密)2x2矩阵和(稠密)2x2矩阵的乘积(STRASSEN算法)
| dst | 结果矩阵。 |
| matA | 矩阵A |
| matB | 矩阵B |
| tp | 临时缓冲区,用于存储中间结果,需要分配7*(tn+1)个limb,若为NULL,则会自动分配。 |
| tn | 缓冲区的limb长度 |
| maxa | matA中最大的元素的limb长度+1,建议由lmmp_mat22_mul_size_确定 |
在文件 mat22_mul.c 第 204 行定义.
引用了 A11, A11n, A12, A12n, A21, A21n, A22, A22n, B11, B11n, B12, B12n, B21, B21n, B22, B22n, BALLOC_TYPE, C11, C11n, C12, C12n, C21, C21n, C22, C22n, lmmp_add_signed_(), lmmp_mat22_sqr_strassen_(), lmmp_mul_signed_(), lmmp_param_assert, n, p1, p1n, p2, p2n, p3, p3n, p4, p4n, p5, p5n, p6, p6n, p7, p7n, s1, s2, s3, s4, t1, t2, t3, t4, TEMP_B_DECL, TEMP_B_FREE, tp, U1, U1n, U2, U2n, U3 , 以及 U3n.
被这些函数引用 lmmp_mat22_mul_().
函数调用图:
这是这个函数的调用关系图:| void lmmp_mat22_sqr_basecase_ | ( | lmmp_mat22_t * | dst, |
| const lmmp_mat22_t * | matA, | ||
| mp_ptr | tp, | ||
| mp_size_t | tn | ||
| ) |
计算2x2矩阵平方
| dst | 结果矩阵。 |
| matA | 矩阵A |
| tp | 临时缓冲区,用于存储中间结果,需要分配2*tn个limb,若为NULL,则会自动分配。 |
| tn | 缓冲区的limb长度 |
在文件 mat22_mul.c 第 129 行定义.
引用了 lmmp_add_signed_(), lmmp_mul_signed_(), lmmp_sqr_signed_(), n, p1, p2, TALLOC_TYPE, TEMP_DECL, TEMP_FREE , 以及 tp.
被这些函数引用 lmmp_mat22_mul_basecase_() , 以及 lmmp_mat22_sqr_().
函数调用图:
这是这个函数的调用关系图:| void lmmp_mat22_sqr_strassen_ | ( | lmmp_mat22_t * | dst, |
| const lmmp_mat22_t * | matA, | ||
| mp_ptr | tp, | ||
| mp_size_t | tn | ||
| ) |
计算(稠密)2x2矩阵平方(STRASSEN算法)
| dst | 结果矩阵。 |
| matA | 矩阵A |
| tp | 临时缓冲区,用于存储中间结果,需要分配7*(tn+1)个limb,若为NULL,则会自动分配。 |
| tn | 缓冲区的limb长度 |
在文件 mat22_mul.c 第 356 行定义.
引用了 A11, A11n, A12, A12n, A21, A21n, A22, A22n, BALLOC_TYPE, C11, C11n, C12, C12n, C21, C21n, C22, C22n, lmmp_add_signed_(), lmmp_mul_signed_(), lmmp_param_assert, lmmp_sqr_signed_(), n, p1, p1n, p2, p2n, p3, p3n, p4, p4n, p5, p5n, p6, p6n, p7, p7n, s1, s2, s3, s4, TEMP_B_DECL, TEMP_B_FREE, tp, U1, U1n, U2, U2n, U3 , 以及 U3n.
被这些函数引用 lmmp_mat22_mul_strassen_() , 以及 lmmp_mat22_sqr_().
函数调用图:
这是这个函数的调用关系图: