次は数学関数を合成する際によく発生する使用エラーです。これらは数学関数の合成の利点を生かすために、C 関数を C++ 関数へ変換した場合によく発生します。
C++ の cmath.h
C++ の cmath.h
ヘッダー ファイルが使用されると、浮動小数点関数 (sinf
および cosf
など) が使用できます。これらはハードウェアで 32 ビット演算になります。cmath.h
ヘッダー ファイルは標準関数 (sin
、cos
など) もオーバーロードするので、float および double 型にも使用できます。
C の math.h
C の math.h
ライブラリが使用される場合は、32 ビットの浮動小数点演算を合成するために、単精度関数 (sinf
、cosf
など) が必要です。すべての標準関数呼び出し (sin
、cos
など) は合成されると倍精度および 64 ビットの倍精度演算になります。
注意
math.h
サポートの利点を生かすために C 関数を C++ に変換する場合は、Vitis HLS で合成する前に新しい C++ コードが正しくコンパイルされるようにする必要があります。たとえば、sqrtf()
が math.h
と一緒にコードで使用される場合は、それをサポートするために次のコードを C++ コードに追加する必要があります。
#include <math.h>
extern “C” float sqrtf(float);
「float および double 型」で説明したように、float および double 型の混合に関する警告メッセージに従って、型変換によって不必要なハードウェアが作成されないようにします。