在C中调用常量复数的最快方法

时间:2015-12-20 14:32:47

标签: c complex-numbers gsl

我在C中使用GSL来处理复数。

我必须使用复数,例如+ -1,0,+ -ia很多次(跨越不同的函数),类似10 ^ 9我想(甚至更多,也许,还不知道),所以我需要一种非常快速的方式来打电话给他们。

在gsl_complex_math.h中,它们的定义如下:

#define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0))

其中

gsl_complex_rect (double x, double y)
{                               /* return z = x + i y */
  gsl_complex z;
  GSL_SET_COMPLEX (&z, x, y);
  return z;
}

#define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)

对于我来说,这看起来像是一大堆代码和临时变量声明,但我在评估代码效率方面没有经验。

如果我在像global.h这样的标题中声明一个全局变量怎么样:

#if defined MAIN_PROGRAM
    #define EXTERN
#else
    #define EXTERN extern
#endif
EXTERN const gsl_complex C_U = {.dat[0] = 1., .dat[1] = 0.}

1)我应该期待性能提升吗? 2)代码是否足够干净?我进入的任何陷阱? 3)有更好的方法吗?

0 个答案:

没有答案