是否有可能简化MPFR中的价值创造/使用?

时间:2013-07-22 21:32:24

标签: c++ gmp mpfr

假设我想使用MPFR来计算pi;我有以下代码,有效:

mpfr_t PI;
mpfr_t one;
mpfr_init(PI);
mpfr_init(one);
mpfr_set_d(one, 1, MPFR_RNDN);
mpfr_asin(PI, one, MPFR_RNDN);
mpfr_mul_d(PI, PI, 2, MPFR_RNDN);

这相当于“pi = 2 * arcsin(1)”。我认识到MPFR永远不会完全从键盘上滚下来,但我是这个库的新手,我想知道是否有办法避免定义变量“one”;即,我希望代码看起来像这样:

mpfr_t PI;
mpfr_init(PI);
mpfr_asin(PI, <the number 1>, MPFR_RNDN);
mpfr_mul_d(PI, PI, 2, MPFR_RNDN);

我可以轻松地自己写一些带有双精度并返回一个mpfr_t对象的东西,代替&lt; ...&gt ;.我真正的问题是:这已经在MPFR中构建了吗?

编辑:我忘了提到自己构建一个函数来返回一个mpfr_t对象不是一个好的解决方案,因为它会导致内存泄漏。变量必须在效用函数内初始化,然后就无法清除它。我所知道的唯一解决方案是为所有特殊函数编写包装器,例如arcsin和log。我想要一个更清洁的解决方案,最好使用内置于MPFR中的东西。

0 个答案:

没有答案