回 帖 发 新 帖 刷新版面

主题:[讨论]任意多精度计算模块xp_module

今天在 www.fortran.com 这个网站找到一些很有用的模块

比如 xp_module 实现了任意多精度计算

如:

program test_xp
use xp_module
type(xp_real) :: x, y, z
call xp_set(100)
x = 1.0
y = 4.0
z = y * atan(x)
jform2 = 100
call xp_print(z)
end program test_xp

精确计算了pi的前100位

源程序见附件

回复列表 (共20个回复)

沙发

十分感谢!

板凳


非常感谢!在很多数值计算问题中需要超出编译器支持范围的更高精度。下载后慢慢研究。

3 楼

不得不承认,目前绝大多数模块都是老外写的

为国人颜汗!

此模块使有效数字位最多能达到1017位

重载了很多内部函数

4 楼

计算1/3的值结果好象不对哎!! 各位可以试试.

program test_xp
use xp_module
type(xp_real) :: x, y, z
call xp_set(100)
x = 1.0
y = 3.0
z = x/y
jform2 = 100
call xp_print(z)
end program test_xp

z = 3.333333333333332888888888888888948148148148148140246913580246914633744855967078048834019204389593489E-1

5 楼

只精确了15位,是个问题,研究中

6 楼

[em6] 1/30的计算结果是对的!!!

3.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333E-2

[em6][em6]

7 楼

[quote]计算1/3的值结果好象不对哎!! 各位可以试试.

program test_xp
use xp_module
type(xp_real) :: x, y, z
call xp_set(100)
x = 1.0
y = 3.0
z = x/y
jform2 = 100
call xp_print(z)
end program test_xp

z = 3.333333333333332888888888888888948148148148148140246913580246914633744855967078048834019204389593489E-1

[/quote]

程序写成这样就对了

program test_xp
use xp_module
type(xp_real) :: x, y, z
call xp_set(100)
x = 1
y = 3
z = x/y
jform2 = 100
call xp_print(z)
end program test_xp

看来还是整数比浮点数精确

8 楼

[/quote]

程序写成这样就对了

program test_xp
use xp_module
type(xp_real) :: x, y, z
call xp_set(100)
x = 1
y = 3
z = x/y
jform2 = 100
call xp_print(z)
end program test_xp

看来还是整数比浮点数精确[/quote]

能解释一下原因吗?如果需要计算浮点数时该如何处理呢?谢谢

9 楼

最一致的方法是:

x = 1.0_xp_real
y = 3.0_xp_real

10 楼

[quote]最一致的方法是:

x = 1.0_xp_real
y = 3.0_xp_real

[/quote]

mltx 能说说在xp_module.f90中xp_real的值是什么吗?
谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册