16#ifndef __LAMMP_SIGNED_H__
17#define __LAMMP_SIGNED_H__
22#define INLINE_ static inline
36 if (na == 0 && nb != 0) {
39 }
else if (na != 0 && nb == 0) {
42 }
else if (na == 0 && nb == 0) {
45 }
else if (na < 0 && nb < 0) {
50 return dst[na] == 0 ? -na : -(na + 1);
53 return dst[nb] == 0 ? -nb : -(nb + 1);
55 }
else if (na > 0 && nb > 0) {
58 return dst[na] == 0 ? na : na + 1;
61 return dst[nb] == 0 ? nb : nb + 1;
63 }
else if (na < 0 && nb > 0) {
67 while (dst[nb - 1] == 0 && nb > 0) {
73 while (dst[na - 1] == 0 && na > 0) {
81 while (dst[nb - 1] == 0 && nb > 0) {
87 while (dst[na - 1] == 0 && na > 0) {
101 while (dst[nb - 1] == 0 && nb > 0) {
105 }
else if (na > nb) {
107 while (dst[na - 1] == 0 && na > 0) {
115 while (dst[nb - 1] == 0 && nb > 0) {
119 }
else if (cmp > 0) {
121 while (dst[na - 1] == 0 && na > 0) {
144 mp_ssize_t sign = ((na > 0) ^ (nb > 0)) ? -1 : 1;
147 if (na == 0 || nb == 0) {
156 na -= (dst[na - 1] == 0);
171 }
else if (
na == 0) {
177 na -= (
dst[
na - 1] == 0) ? 1 : 0;
#define lmmp_copy(dst, src, n)
const mp_limb_t * mp_srcptr
static mp_limb_t lmmp_add_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
大数加法静态内联函数 [dst,na]=[numa,na]+[numb,nb]
static int lmmp_cmp_(mp_srcptr numa, mp_srcptr numb, mp_size_t n)
大数比较函数(内联)
void lmmp_mul_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
不等长大数乘法操作 [dst,na+nb] = [numa,na] * [numb,nb]
static mp_limb_t lmmp_sub_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
大数减法静态内联函数 [dst,na]=[numa,na]-[numb,nb]
static mp_ssize_t lmmp_sqr_signed_(mp_ptr dst, mp_srcptr numa, mp_ssize_t na)
计算带符号数的平方
#define INLINE_
Copyright (C) 2026 HJimmyK(Jericho Knox)
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)
计算带符号数的乘法