|
LAMMP 4.2.0
Lamina High-Precision Arithmetic Library
|
#include "../lmmp.h"
mat22_mul.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:结构体 | |
| struct | lmmp_mat22_t |
宏定义 | |
| #define | INLINE_ static inline |
| Copyright (C) 2026 HJimmyK(Jericho Knox) | |
函数 | |
| static void | lmmp_mat22_mul_ (lmmp_mat22_t *dst, const lmmp_mat22_t *matA, const lmmp_mat22_t *matB, int choose, mp_size_t tn, mp_size_t maxa) |
| 计算2x2矩阵和2x2矩阵的乘积 | |
| 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) |
| 计算2x2矩阵和2x2矩阵的乘积需要分配的内存 | |
| 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算法) | |
| static void | lmmp_mat22_sqr_ (lmmp_mat22_t *dst, const lmmp_mat22_t *mat, int choose, mp_size_t tn) |
| 计算(稠密)2x2矩阵平方 | |
| 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 *matA, mp_ptr tp, mp_size_t tn) |
| 计算(稠密)2x2矩阵平方(STRASSEN算法) | |
| struct lmmp_mat22_t |
在文件 mat22_mul.h 第 26 行定义.
lmmp_mat22_t 的协作图:| 成员变量 | ||
|---|---|---|
| mp_ptr | a00 | |
| mp_ptr | a01 | |
| mp_ptr | a10 | |
| mp_ptr | a11 | |
| mp_ssize_t | n00 | |
| mp_ssize_t | n01 | |
| mp_ssize_t | n10 | |
| mp_ssize_t | n11 | |
Copyright (C) 2026 HJimmyK(Jericho Knox)
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.h 第 23 行定义.
|
inlinestatic |
计算2x2矩阵和2x2矩阵的乘积
| dst | 结果矩阵。 |
| matA | 矩阵A |
| matB | 矩阵B |
| choose | 选择算法,0表示basecase算法,1表示STRASSEN算法 |
| tn | 缓冲区的limb长度,建议由lmmp_mat22_mul_size_确定 |
| maxa | matA中最大的元素的limb长度+1,建议由lmmp_mat22_mul_size_确定 |
在文件 mat22_mul.h 第 107 行定义.
引用了 lmmp_mat22_mul_basecase_(), lmmp_mat22_mul_strassen_() , 以及 lmmp_param_assert.
函数调用图:| 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 | ||
| ) |
计算2x2矩阵和2x2矩阵的乘积需要分配的内存
| dst | 结果矩阵,dst中的n将会被覆盖为对应位置需要的limb长度,此函数不分配内存。 |
| matA | 矩阵A |
| matB | 矩阵B |
| tn | 输出参数,将会被覆盖为缓冲区需要的limb长度,正数 |
| maxa | 如果被覆盖,即matA中最大的元素的limb长度+1,此参数只有当确认使用STRASSEN算法时才需要 |
计算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_().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
计算(稠密)2x2矩阵平方
| dst | 结果矩阵。 |
| matA | 矩阵A |
| tn | 缓冲区的limb长度,建议由lmmp_mat22_mul_size_确定 |
| choose | 选择算法,0表示basecase算法,1表示STRASSEN算法 |
在文件 mat22_mul.h 第 129 行定义.
引用了 lmmp_mat22_sqr_basecase_(), lmmp_mat22_sqr_strassen_() , 以及 lmmp_param_assert.
函数调用图:| 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_().
函数调用图:
这是这个函数的调用关系图: