gpt4 book ai didi

loops - Fortran 中的长整数

转载 作者:行者123 更新时间:2023-12-04 21:54:46 24 4
gpt4 key购买 nike

我正在尝试处理大数字(~10^14),我需要能够存储它们并迭代该长度的循环,即

n=SOME_BIG_NUMBER
do i=n,1,-1

我已经尝试过通常的星号符号, kind=8等等,但似乎没有任何效果。
然后我查了 huge内在函数和代码:
program inttest

print *,huge(1)
print *,huge(2)
print *,huge(4)
print *,huge(8)
print *,huge(16)
print *,huge(32)

end program inttest

在所有情况下都会产生数字 2147483647。为什么是这样?我在 64 位机器上使用 gfortran (f95)。

如果我需要一个 bignum 库,人们会建议使用哪个库?

最佳答案

您误解了 HUGE 的准确定义功能。 HUGE(num)返回与 num 具有相同种类和类型的最大数.返回的值也与 num 具有相同的种类和类型。 .由于您的所有输入值都是(默认)整数 HUGE ,正确地,返回最大的默认大小整数。
HUGE(num)不返回最大整数 kind=num . HUGE(num)也没有返回 num 中可表示的最大数字节。虽然许多编译器使用 integer(kind=4)integer(kind=8)对于 4 字节和 8 字节整数等,语言标准不保证这一点,也不能依赖于可移植性。

@MSB 的回答会告诉您如何做您想做的事,我只是想澄清一下。

关于loops - Fortran 中的长整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com