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