マイクロコントローラーに浮動小数点演算を実装しようとしていますが、これまでのところ十分な成功を収めています。
問題は、コンピューターで乗算を行う方法にあり、正常に動作します。
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 ビットが必要です。
どうすればこれを行うことができるかについて、誰かアイデアがありますか?