如果使用实数,C 如何处理复杂的方程式

How does C handle complex equations if using REALs

这对你们来说可能很容易,但我找不到明确的答案,我只是想确保我没有忽略任何东西。我有一个方程,我知道它允许复杂的解决方案,但我已经使用 "double" and/or "float" 在 C 中对其进行了编程。如果我不使用 "complex" 类型,C 是否会简单地忽略复杂部分?换句话说,它只是 return 实部吗?不使用 "complex" 会产生任何错误吗?谢谢。

C中有'complex'和'imaginary'两种数据类型,但由于引入才几年,一些老系统可能不支持.因此,最好明确处理此类解决方案。

如果您正在执行类似 sqrt(-1) 的非法操作,那么它 产生一个错误。

以下 post 最有可能更好地回答您的问题 How to work with complex numbers in C?

sqrt() 的文档(如果您阅读过)告诉您 returns 域错误。

您可以通过测试用例自己找出答案:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <errno.h>

int main(int argc, char *argv[])
{
    double foo = -1.234;
    double foo_sqrt = sqrt(foo);
    if (errno == EDOM) {
        fprintf(stderr, "Error: EDOM - Mathematics argument out of domain of function (POSIX.1, C99)\n");
        return EXIT_FAILURE;
    }
    /* we never get here */
    fprintf(stdout, "sqrt(%f) = %f\n", foo, sqrt(foo));
    return EXIT_SUCCESS;
}

然后编译运行:

$ gcc -lm -std=c99 -Wall sqrt_test.c -o sqrt_test
$ ./sqrt_test
Error: EDOM - Mathematics argument out of domain of function (POSIX.1, C99)
$ echo $?
1