- 注册时间
- 2009-2-12
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 23419
- 在线时间
- 小时
|
楼主 |
发表于 2011-1-23 15:39:35
|
显示全部楼层
9# wayne
代码不好,在windows的MinGW下编译,即使开了-Wall也不警告,运行也很正常。
在linux下编译没问题,但运行时会出现segmentation fault .
检查了很长时间,原来是argv[1] 使然。
现在更正如下:- #include <stdio.h>
- #include <stdlib.h>
- #include <mpfr.h>
- int main (int argc, char *argv[])
- {int m;
- if (argc>1) m= atoi(argv[1])-1;
- else printf("usage: %s n\n",argv[0]),exit(1);
- mp_prec_t p = 100+5*m;
- mpfr_t a, b, c, d;
- mpfr_inits2 (p, a, b, c, d, (mpfr_ptr) 0);
- mpfr_set_str (a, "1e22", 10, GMP_RNDN);
- mpfr_sin (a, a, GMP_RNDN);
- mpfr_mul_ui (a, a, 173746, GMP_RNDN);
- mpfr_set_str (b, "17.1", 10, GMP_RNDN);
- mpfr_log (b, b, GMP_RNDN);
- mpfr_mul_ui (b, b, 94228, GMP_RNDN);
- mpfr_set_str (c, "0.42", 10, GMP_RNDN);
- mpfr_exp (c, c, GMP_RNDN);
- mpfr_mul_si (c, c, -78487, GMP_RNDN);
- mpfr_add (d, a, b, GMP_RNDN);
- mpfr_add (d, d, c, GMP_RNDN);
- mpfr_printf ("d=%.*Re\n",m,d);
- mpfr_clears (a, b, c, d, NULL);
- return 0;
- }
复制代码 |
|