マイクロコントローラで浮動小数点演算を実装しようとしていますが、これまでに十分な成功を収めています。long longのないシステムで23ビットのデータ型を掛ける
問題は、私は私のコンピュータで乗算を行う方法であり、それが正常に動作します:
unsigned long long gig,mm1,mm2;
unsigned long m,m1,m2;
mm1 = f1.float_parts.mantissa;
mm2 = f2.float_parts.mantissa;
m1 = f1.float_parts.mantissa;
m2 = f2.float_parts.mantissa;
gig = mm1*mm2; //this works fine I get all the bits I need since they are all long long, but won't work in the mcu
gig = m1*m2//this does not work, to be precise it gives only the 32 least significant bits , but works on the mcu
だから、あなたは私の問題は、私がしようとした場合、マイクロコントローラは__muldi3
に未定義refenceを投げるということであることがわかりますgig = mm1*mm2
があります。
小さなデータ型で試してみると、最下位ビットしか保持しませんが、これは必要ありません。私は製品の23 msbのビットが必要です。
私はこれをどのように行うことができますか?