首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mpf_pow函数时GNU精度低

使用mpf_pow函数时GNU精度低
EN

Stack Overflow用户
提问于 2022-01-11 16:40:25
回答 1查看 90关注 0票数 0

在编写这个答案时,我使用了mpf_pow函数来计算12.3 ^ 123,结果与WolframAlpha给出的不同(顺便说一下,WolframAlpha也使用了)。

为了简化,我将代码抛到纯C中:

代码语言:javascript
复制
#include <stdio.h>
#include <gmp.h>

int main (void) {
    mpf_t a, c;
    unsigned long int b = 123UL;
    mpf_set_default_prec(100000);
    mpf_inits(a, c, NULL);
    mpf_set_d(a, 12.3);
    mpf_pow_ui(c, a, b);
    gmp_printf("c = %.50Ff\n", c);
    return 0;
}

这会导致

114374367934618002778643226182707594198913258409535335775583252201365538178632825702225459029661601216944929436371688246107986574246790.32099077871758646985223686110515186972735931183764

当WolframAlpha返回时

1.14374367934617190099880295228066276746218078451850229775887975052369504785666896446606568365201542169649974727730628842345343196581134895919942820874449837212099476648958359023796078549041949007807220625356526926729664064846685758382803707100766740220839267 × 10^134

它开始不同意mpf_pow的第15位数字。

我是不是在代码中做错了什么,这是GMP的限制,还是WolframAlpha给出了错误的结果?

EN

回答 1

Stack Overflow用户

发布于 2022-01-11 16:50:18

这给出了类似于WolframAlpha的结果:

代码语言:javascript
复制
from decimal import Decimal
from decimal import getcontext

getcontext().prec = 200

print(Decimal('12.3') ** 123)

所以你一定在你的GMP配置上做错了什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70670338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档