0

マイクロコントローラーに浮動小数点演算を実装しようとしていますが、これまでのところ十分な成功を収めています。

問題は、コンピューターで乗算を行う方法にあり、正常に動作します。

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したがって、私の問題は、そこを試してみると、マイクロコントローラーが未定義の参照をスローすることであることがわかりますgig = mm1*mm2

また、小さいデータ型を試してみると、最下位ビットのみが保持されますが、これは望ましくありません。製品の 23 msb ビットが必要です。

どうすればこれを行うことができるかについて、誰かアイデアがありますか?

4

3 に答える 3