2
我有一些C99代码,我需要将2n double数组转换为n复合数组。我这样做与C99复杂铸造
static void real_to_complex(const double *r, size_t n, double complex *z)
{
size_t i;
for (i=0 ; i<n ; i++)
z[i] = r[2*i] + r[2*i + 1]*I;
}
这是代码的性能非常重要的一部分,我真的宁可不要创建一个新的存储区域Z和具有复制的费用,而不是我想取代这些函数调用
z = (double complex*)r;
有没有办法做到这一点,并保持标准符合?我知道一个双重复合体保证与两个双精度数组具有相同的布局 - 也许我可以通过编译器检查来了解这个布局是(真实的,想象的)还是(虚构的,真实的)?
这;只需使用'(double complex *)r'即可。 – 2012-08-06 18:57:29
谢谢你,这给了我的代码一个巨大的速度碰撞:-) – n00b 2012-08-06 20:16:31