GMP mpz_mod_ui 的有效参数

问题描述 投票:0回答:1

mpz_mod_ui

文档
声明其界面为:

unsigned long int mpz_mod_ui (mpz_t r, const mpz_t n, unsigned long int d);

本质上是计算

r = n % d
,它是一个小于
d
的非负整数,也是函数结果;或者如果
d == 0
.

则除以零

是否可以将

r
参数设置为
NULL
,这意味着我们不需要将
mpz_t
设置为结果?

在C中,

unsigned long int
不是固定大小。它至少是 32 位,但通常是 64 位。不同尺寸
unsigned long int
的平台是否支持 GMP?在所有支持的平台上,最大的有效
d
始终是
~0UL
(或者我认为等效于 C 编译器的
ULONG_MAX
中定义的
<limits.h>
)吗?

c gmp
1个回答
0
投票

使用

mpz_mod_ui
时,是否可以将
r
参数设置为NULL,这意味着我们不需要将mpz_t设置为结果?

这是不可取的,还有更好的方法。正如 comment 中所指出的,有一个函数计算

n % d
d
适合
unsigned long int

unsigned long int mpz_fdiv_ui (const mpz_t n, unsigned long int d);

各种大小

unsigned long int
的平台是否支持 GMP?

是的。如另一条评论中所述,

unsigned long
可以是 64 位或 32 位,具体取决于 GMP 编译参数,请参阅ABI 和 ISA 文档。然而,64 位
unsigned long int
的支持越来越多,并且在每个受支持的平台上至少有一个选项可用。

© www.soinside.com 2019 - 2024. All rights reserved.