我有一個算法在MATLAB編碼,其中含有一些數值的複雜弧COS(計算需要的15 ARCCOS,這大約是3.4i)。我想在我的Windows 7 PC上運行此代碼的C或C++代碼。實際上,我想將它作爲一個用Visual Studio C++編譯的mex函數來生成。cacosf(複雜弧COS)函數返回不定
我列入「complex.h」和使用cacosf功能(複雜的反餘弦返回浮動_Complex),但因爲Visual C++編譯器不有「complex.h」支持,我不能編譯成MEX功能。然而,MEX文件可能需要庫作爲輸入,這樣我就可以編譯另一個編譯器,MATLAB不支持我的C代碼(例如MinGW的,我結合它與gnumex實用Matlab的。)我下載流血C++ IDE它使用MinGW的在後端,我可以編譯我的C++代碼。下面的C++代碼表示一個類似的操作以我的目標:
#include <stdio.h>
#include <complex.h>
int main() {
float _Complex myComplex;
myComplex = cacosf(5);
printf("Complex number result of acos(5) is : %f + %fi \r\n",crealf(myComplex),cimagf(myComplex));
return 0;
}
輸出應爲:
ACOS的複數結果(5)是:0.000000 + -2.292432i
但是我得到
ACOS的複數結果(5):-1#IND00,-0.000000
當我編譯我的C++與Linux的GCC代碼的Ubuntu 14.04的計算機上使用Eclipse CDT月神我得到
輸出應該是:ACOS的
複數結果(5):0.000000 + -2.292432i 我在哪裏可以是錯的?爲什麼我無法在Windows + mingw安裝程序中編譯此代碼?
注:我可以計算cacosf(0)作爲1.570796 + -0.000000當我使用MinGW的。