bison和avr-g++中双精度幂次的精度问题。
创始人
2024-12-19 07:07:37
0

在bison中,可以使用gmp库(GNU Multiple Precision Arithmetic Library)中提供的函数来计算高精度浮点数的幂次。

示例代码:

%{
#include 
#include 
%}

%union {
    double dval;
    mpf_t mpval; //使用mpf_t类型表示高精度浮点数
}

%token  NUMBER

%type  Exponent

%%

Input: Exponent { gmp_printf("%.10Ff\n", $); } ;

Exponent: NUMBER '^' Exponent { //计算幂次
    mpf_init($$);
    mpf_set_d($$, $1);
    mpf_pow_ui($$, $$, (unsigned long)$3);
}
| NUMBER { //直接将双精度数转换为高精度数
    mpf_init($$);
    mpf_set_d($$, $1);
}
;

%%

int main()
{
    yyparse();
    return 0;
}

在avr-g++中,可以使用avr-libc中提供的fp_math库,将双精度数转换为长整型数,然后将长整型数作为底数,使用自定义函数计算幂次。

示例代码:

#include 
#include 

#define MAX_PRECISION 50 //最大精度为50位

//计算高精度浮点数的幂次
void fp_pow(double base, unsigned int exponent, double *res)
{
    if (exponent == 0) {
        *res = 1;
        return;
    }
    double base_pow[MAX_PRECISION] = {1.0};
    double base_temp = base;
    for (int i = 1; i <= exponent; i++) {
        for (int j = 0; j < MAX_PRECISION; j++) {
            base_pow[j] *= base_temp;
            if (base_pow[j] >= 10.0) { //进位

相关内容

热门资讯

9分钟了解!桂林字牌辅助器,老... 9分钟了解!桂林字牌辅助器,老友十三张有辅助挂吗,可靠教程(有挂脚本);老友十三张有辅助挂吗辅助器中...
8分钟了解!jj斗地主助赢神器... 8分钟了解!jj斗地主助赢神器,金州水鱼免费辅助软件,必胜教程(有挂教学);1、任何金州水鱼免费辅助...
4分钟了解!同城游510k有挂... 4分钟了解!同城游510k有挂吗,同乡游戏有挂吗,高科技教程(有挂解说)1、同城游510k有挂吗透视...
四分钟了解!雀神麻将小程序助赢... 四分钟了解!雀神麻将小程序助赢神器购买,兴动棋牌有挂吗谁用了,分享教程(有挂辅助挂)1、进入游戏-大...
3分钟了解!心悦麻将有挂是真的... 3分钟了解!心悦麻将有挂是真的吗,经典联盟斗牛外挂,攻略教程(有挂软件);进入游戏-大厅左侧-新手福...
三分钟了解!牵手跑胡子辅助工具... 三分钟了解!牵手跑胡子辅助工具,皮皮跑得快辅助器免费版,攻略方法(有挂脚本)1.皮皮跑得快辅助器免费...
8分钟了解!真人天天麻将助赢神... 8分钟了解!真人天天麻将助赢神器,八闽十三张有没有外挂,透明挂教程(有挂规律)1、实时八闽十三张有没...
三分钟了解!邳州友友麻将能调吗... 三分钟了解!邳州友友麻将能调吗,潮汕麻将app有挂吗,黑科技教程(有挂黑科技)进入游戏-大厅左侧-新...
四分钟了解!哥哥打大a有外 挂... 四分钟了解!哥哥打大a有外 挂吗,河洛杠次输赢规律,透明挂教程(有挂秘籍)1)哥哥打大a有外 挂吗辅...
五分钟了解!碣石暗宝外 挂,大... 五分钟了解!碣石暗宝外 挂,大头十三张有没有外挂,教你攻略(有挂规律)1、操作简单,无需注册,只需要...