使用GMP.h头文件时返回类型

Rav*_*mar 3 c++ gmp

虽然我正在使用gmp.h头文件.我需要一个函数,它接受mpz_t类型的输入并返回mpz_t类型.我是使用gmp.h的初学者.所以,这里是我接近的代码的快照...

mpz_t sum_upto(mpz_t max)  
{    
    mpz_t sum;  
    mpz_init(sum);    
    mpz_init(result);  
    for(int i=0;i<=max-1;i++)    
        mpz_add_ui(sum,sum,pow(2,i));   
    return sum;   
}
Run Code Online (Sandbox Code Playgroud)

但它会显示错误:

  1. pow已经没有在这个范围内使用了.",虽然我在文件的最开头添加了math.h.
  2. sum_upto声明为返回数组的函数...

heu*_*cus 8

使用GMP的功能约定可以在手册中找到.本质上,您必须遵循GMP本身所遵循的相同约定 - 函数必须具有void返回类型,并且您必须提供将结果作为参数放入的值.

这是给出的例子:

 void foo (mpz_t result, const mpz_t param, unsigned long n)
 {
   unsigned long  i;
   mpz_mul_ui (result, param, n);
   for (i = 1; i < n; i++)
     mpz_add_ui (result, result, i*7);
 }

 int main (void)
 {
   mpz_t  r, n;
   mpz_init (r);
   mpz_init_set_str (n, "123456", 0);
   foo (r, n, 20L);
   gmp_printf ("%Zd\n", r);
   return 0;
 }
Run Code Online (Sandbox Code Playgroud)