Tag: complex numbers

ICC是否满足复数的乘法C99规范?

考虑这个简单的代码: #include complex float f(complex float x) { return x*x; } 如果使用英特尔编译器使用-O3 -march=core-avx2 -fp-model strict进行编译,则可以得到: f: vmovsldup xmm1, xmm0 #3.12 vmovshdup xmm2, xmm0 #3.12 vshufps xmm3, xmm0, xmm0, 177 #3.12 vmulps xmm4, xmm1, xmm0 #3.12 vmulps xmm5, xmm2, xmm3 #3.12 vaddsubps xmm0, xmm4, xmm5 #3.12 ret 这比你从gcc和clang获得的代码简单得多,而且比你在网上找到的用于乘以复数的代码简单得多。 例如,它没有明确地用于处理复杂的NaN或无穷大。 这个组件是否符合C99复数乘法的规范?