【发布时间】:2010-07-26 06:42:15
【问题描述】:
我正在编写一个数学库,它的核心是 C++。稍后它可能会在纯 C 中实现(我想是 C99)。我想我需要一个类似 C 的 API,以便我可以使用 Python 和 matlab 等来使用该库。我的印象是,用 C++ 做这件事很痛苦。
那么在double complex *some_array_in_C99 和complex<double> *some_array_in_cpp 之间进行转换是否有好的或标准或适当的方式?
我可以只使用void *pointers,但我不确定这是否好。
这可能有点吹毛求疵,因为 ctypes 似乎与 complex<double> 配合得很好,但我担心 matlab 和其他可能的数值环境。
【问题讨论】:
-
您确定可以在 MATLAB 中使用 C99 complex 吗?
-
呃,好点子。来自mathworks.com/access/helpdesk/help/techdoc/matlab_external/… 复数双精度矩阵 MATLAB 中最常见的数据类型是复数双精度非稀疏矩阵。这些矩阵是 double 类型,尺寸为 m×n,其中 m 是行数,n 是列数。数据存储为两个双精度数字向量——一个包含实数数据,一个包含虚数数据。所以这很容易。我可能什么都不担心。
标签: c++ c c99 complex-numbers