是否可以在C?中进行这样的计算?
A*exp(i*(b+c)) + D*exp(i*(e+f)),
其中A,b,c,D,e,f是实数。
答案 0 :(得分:3)
C99 introduces support for complex numbers。你的编译器是否实现了这个功能,我不知道。
答案 1 :(得分:2)
通常,你不能用C表示实数。有无数个实数,但C在计算中只有有限的精度。也就是说,ISOC99有一种数据类型可以对这些边界内的复数进行操作。 http://www.gnu.org/software/libc/manual/html_node/Complex-Numbers.html
C99复数是相当有限的 - 它实际上只提供了乘以i
的方法。 CMATH提供了一些优秀的扩展,其功能远远超过C99。 http://www.optivec.com/cmfuncs/
答案 2 :(得分:1)
C99 Standard(或C11 Standard)中的第7.3节处理复数。
示例代码
#include <complex.h>
#include <stdio.h>
int main(void) {
double A, b, c, D, e, f;
complex double x;
const complex double i = csqrt(-1);
A = 1;
b = 2;
c = 3;
D = 4;
e = 5;
f = 6;
x = A * cexp(i * (b + c)) + D * cexp(i * (e + f));
printf("value is %f + %fi\n", creal(x), cimag(x));
}
您可以看到在ideone上运行的代码:http://ideone.com/d7xD7
输出
value is 0.301365 + -4.958885i