c - GMP 将 char 数组转换为 float

标签 c mpi gmp

我正在使用 GMP 和 MPI 来计算精度 PI。目前我已经在工作进程中计算了 PI,需要将其发送回农夫进程,为此我已转换为 char 数组,如下

mp_exp_t exp; 
pi_str = mpf_get_str(pi_str,
                         &exp,
                         10,
                         (size_t)PRECISION,
                         pi);

char send_str[3026]= {0};
strcpy(send_str,pi_str);                      

MPI_Send(&send_str, len, MPI_CHAR, 0, 1, MPI_COMM_WORLD);

这工作正常,现在我收到了 char 数组,我需要执行其他计算,因此 char 数组需要转换回 float 。

char recv_str[3026] = {0};
    for(i=1; i<size ; i++)
    {
       printf("farmer**%d\n",size);
       MPI_Recv(&recv_str,3026, MPI_CHAR, i, 1,MPI_COMM_WORLD,  &status);
       printf("pi after send %s", recv_str);
       mpf_set_str(pi_ret, recv_str, 10);  
       gmp_printf("setting from string to float %.Ff\n", pi_ret, 20); 

这给了我一个内存分配错误,但我看不到另一种转换回 float 的方法,除非我遗漏了一些东西。

最佳答案

您需要先初始化pi_ret,然后再为其赋值。

最简单的方法是使用 mpf_init_set_str() function ,它同时初始化一个 float 并从字符串中分配其值。

关于c - GMP 将 char 数组转换为 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19793272/

相关文章:

c - 在递归调用中给出指针参数

c - 如何在内核模块的相同偏移量中预留内存

visual-studio-2012 - 使用 VS2012 进行 MPI 调试

linux - 结束一个 mpirun 进程终止一个 b​​ash 循环

c - C 中的 GMP 库 - 如何使添加更精确?

c++ - 打印 char 指针数组

创建奇数链表 (C)

c - 如何运行这个编译好的开放MPI程序(C)?

c - C : generation for Monte Carlo simulation without atmospheric noise 中的任意精度随机数

将 Base64 转换为 GMP 整数