gpt4 book ai didi

c - 如何在 C 中转换复杂的 double 型

转载 作者:行者123 更新时间:2023-11-30 16:14:32 24 4
gpt4 key购买 nike

我正在第三方库中调用 C 函数,该函数使用自定义类型返回复数:

typedef struct
{
double dat[2];
} complex_num;

这里,dat[0]是实部,dat[1]是虚部。我想安全且可移植地将它们转换为 C complex double 类型,以使用加法/乘法等优化的数学运算。假设我有一个返回 complex_num 的函数:

complex_num dostuff(...);

我的问题是,我可以安全地执行以下操作:

complex double a = (complex double) dostuff(...);

数组填充/对齐是否存在任何问题,会破坏上述转换?

最佳答案

自己编写一个转换函数:

complex double MyCast(complex_num x) { return CMPLX(x.dat[0], x.dat[1]); }

CMPLX是一个标准宏,定义于 <complex.h> 。 Apple LLVM 10.0.1 与 clang-1001.0.46.4 和 GCC 9.1 优化了 CMPLX 的这种使用没有任何操作,至少在我测试的一种情况下是这样。

关于c - 如何在 C 中转换复杂的 double 型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57596927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com