16#include "../../../include/lammp/impl/signed.h"
17#include "../../../include/lammp/impl/tmp_alloc.h"
18#include "../../../include/lammp/lmmpn.h"
19#include "../../../include/lammp/impl/mparam.h"
20#include "../../../include/lammp/impl/mat22_mul.h"
51 *tn = (*
maxa << 1) + 1;
223#define A11 (matA->a00)
224#define A12 (matA->a01)
225#define A21 (matA->a10)
226#define A22 (matA->a11)
227#define B11 (matB->a00)
228#define B12 (matB->a01)
229#define B21 (matB->a10)
230#define B22 (matB->a11)
231#define A11n (matA->n00)
232#define A12n (matA->n01)
233#define A21n (matA->n10)
234#define A22n (matA->n11)
235#define B11n (matB->n00)
236#define B12n (matB->n01)
237#define B21n (matB->n10)
238#define B22n (matB->n11)
244#define t1 (dst->a00 + maxa)
245#define t2 (dst->a01 + maxa)
246#define t3 (dst->a10 + maxa)
247#define t4 (dst->a11 + maxa)
250#define p3 (tp + 2 * tn)
251#define p4 (tp + 3 * tn)
252#define p5 (tp + 4 * tn)
253#define p6 (tp + 5 * tn)
254#define p7 (tp + 6 * tn)
307#define C11 (dst->a00)
308#define C12 (dst->a01)
309#define C21 (dst->a10)
310#define C22 (dst->a11)
311#define C11n (dst->n00)
312#define C12n (dst->n01)
313#define C21n (dst->n10)
314#define C22n (dst->n11)
363#define A11 (mat->a00)
364#define A12 (mat->a01)
365#define A21 (mat->a10)
366#define A22 (mat->a11)
367#define A11n (mat->n00)
368#define A12n (mat->n01)
369#define A21n (mat->n10)
370#define A22n (mat->n11)
378#define p3 (tp + 2 * tn)
379#define p4 (tp + 3 * tn)
380#define p5 (tp + 4 * tn)
381#define p6 (tp + 5 * tn)
382#define p7 (tp + 6 * tn)
419#define C11 (dst->a00)
420#define C12 (dst->a01)
421#define C21 (dst->a10)
422#define C22 (dst->a11)
423#define C11n (dst->n00)
424#define C12n (dst->n01)
425#define C21n (dst->n10)
426#define C22n (dst->n11)
#define lmmp_param_assert(x)
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算法)
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_basecase_(lmmp_mat22_t *dst, const lmmp_mat22_t *matA, const lmmp_mat22_t *matB, mp_ptr tp, mp_size_t tn)
计算2x2矩阵和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_sqr_basecase_(lmmp_mat22_t *dst, const lmmp_mat22_t *matA, mp_ptr tp, mp_size_t tn)
计算2x2矩阵平方
#define MAT22_SQR_STRASSEN_THRESHOLD
#define MAT22_MUL_STRASSEN_THRESHOLD
static mp_ssize_t lmmp_sqr_signed_(mp_ptr dst, mp_srcptr numa, mp_ssize_t na)
计算带符号数的平方
static mp_ssize_t lmmp_add_signed_(mp_ptr dst, mp_srcptr numa, mp_ssize_t na, mp_srcptr numb, mp_ssize_t nb)
计算带符号数的加法
static mp_ssize_t lmmp_mul_signed_(mp_ptr dst, mp_srcptr numa, mp_ssize_t na, mp_srcptr numb, mp_ssize_t nb)
计算带符号数的乘法
#define TALLOC_TYPE(n, type)
#define BALLOC_TYPE(n, type)