LAMMP 4.1.0
Lamina High-Precision Arithmetic Library
载入中...
搜索中...
未找到
sqr.c
浏览该文件的文档.
1/*
2 * LAMMP - Copyright (C) 2025-2026 HJimmyK(Jericho Knox)
3 * This file is part of lammp, under the GNU LGPL v2 license.
4 * See LICENSE in the project root for the full license text.
5 */
6
7#include "../../include/lammp/impl/mparam.h"
8#include "../../include/lammp/lmmpn.h"
9
10void lmmp_sqr_(mp_ptr dst, mp_srcptr numa, mp_size_t na) {
11 if (na < MUL_TOOM22_THRESHOLD)
12 lmmp_sqr_basecase_(dst, numa, na);
13 else if (na < MUL_TOOM33_THRESHOLD)
14 lmmp_sqr_toom2_(dst, numa, na);
15 else if (na < MUL_TOOM44_THRESHOLD)
16 lmmp_sqr_toom3_(dst, numa, na);
17 else if (na < MUL_FFT_THRESHOLD)
18 lmmp_sqr_toom4_(dst, numa, na);
19 else
20 lmmp_mul_fft_(dst, numa, na, numa, na);
21}
mp_limb_t * mp_ptr
Definition lmmp.h:215
uint64_t mp_size_t
Definition lmmp.h:212
const mp_limb_t * mp_srcptr
Definition lmmp.h:216
void lmmp_sqr_basecase_(mp_ptr dst, mp_srcptr numa, mp_size_t na)
基础平方运算 [dst,2*na] = [numa,na]^2
void lmmp_sqr_toom2_(mp_ptr dst, mp_srcptr numa, mp_size_t na)
Toom-2平方运算 [dst,2*na] = [numa,na]^2
void lmmp_sqr_toom3_(mp_ptr dst, mp_srcptr numa, mp_size_t na)
Toom-3平方运算 [dst,2*na] = [numa,na]^2
void lmmp_sqr_toom4_(mp_ptr pp, mp_srcptr ap, mp_size_t an)
Toom-4平方运算 [dst,2*na] = [numa,na]^2
void lmmp_mul_fft_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
FFT乘法运算 [dst,na+nb] = [numa,na] * [numb,nb]
Definition mul_fft.c:1085
#define MUL_FFT_THRESHOLD
Definition mparam.h:54
#define MUL_TOOM22_THRESHOLD
Definition mparam.h:46
#define MUL_TOOM33_THRESHOLD
Definition mparam.h:50
#define MUL_TOOM44_THRESHOLD
Definition mparam.h:52
void lmmp_sqr_(mp_ptr dst, mp_srcptr numa, mp_size_t na)
大数平方操作 [dst,2*na] = [numa,na]^2
Definition sqr.c:10