回答編集履歴
2
質問を見直し
answer
CHANGED
@@ -5,4 +5,13 @@
|
|
5
5
|
|
6
6
|
[追記]
|
7
7
|
コンパイラの記述が無いので分かりませんが、 long(32bit) は使えませんか? 使えれば、演算結果が 32bitまでOKですね。 この手のコンパラだと、組込み演算でやってそうですが、、、。
|
8
|
-
自前で行っても 32bit x 32bit は、16bitx16bit乗算 4回と 32bitシフト(or なんか) 32bit 加算 3回でできますね。 (オーバーフロー処理とか除く)
|
8
|
+
自前で行っても 32bit x 32bit は、16bitx16bit乗算 4回と 32bitシフト(or なんか) 32bit 加算 3回でできますね。 (オーバーフロー処理とか除く)
|
9
|
+
|
10
|
+
[追記2]
|
11
|
+
質問をよく読んでませんでした。
|
12
|
+
> この問題を解決するために16bitの固定小数点数(整数部7bit,小数部8bit,符号1bit)
|
13
|
+
|
14
|
+
16bitを分割するより、整数部 16bit, 小数部 16bitにされた方が、効率は良いと思います。実装がどうなっているか分かりませんが、16bit CPUならば、16bit単位で処理するのが一般には効率的です。
|
15
|
+
> 16bitの浮動小数点数(仮数部10bit,指数部5bit,符号1bit)
|
16
|
+
|
17
|
+
については、仮数部10bit に収まれば、価値はあるでしょうが、固定小数点の方が確実に速いと思います。 まずは、固定小数点の bit数を増やす事を検討されたら、どうでしょうか。(オーバーふーについては、事前検討を)
|
1
対応方法に関する追記
answer
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
C言語で書かれているという事は、コンパイラを使っていると思いますが、浮動小数点用のライブラリは無いでしょうか? ただし、浮動小数点の演算をソフトでやると遅いです。リアルタイム処理に使うのは、現実的か? ... 使い方次第でしょうか。
|
2
2
|
|
3
|
-
と思って、CPU(PIC24F)の仕様を探したら、16bit x 16bitの演算もできるようですね。(当然?) とする
|
3
|
+
と思って、CPU(PIC24F)の仕様を探したら、16bit x 16bitの演算もできるようですね。(当然?) とすると、C言語でも使えないでしょうか? CPU仕様を見ると、 16bit x 16bit => 32bit になるようです。
|
4
|
-
また、オーバーフローとの事ですが、16bitに入らないだけて、32bitなら、OK? それとも、更にサイズが必要なのでしょうか? 本格的な多倍長計算は大変でも桁数を限定したものなら、少し頑張れば出来ると思います。
|
4
|
+
また、オーバーフローとの事ですが、16bitに入らないだけて、32bitなら、OK? それとも、更にサイズが必要なのでしょうか? 本格的な多倍長計算は大変でも桁数を限定したものなら、少し頑張れば出来ると思います。
|
5
|
+
|
6
|
+
[追記]
|
7
|
+
コンパイラの記述が無いので分かりませんが、 long(32bit) は使えませんか? 使えれば、演算結果が 32bitまでOKですね。 この手のコンパラだと、組込み演算でやってそうですが、、、。
|
8
|
+
自前で行っても 32bit x 32bit は、16bitx16bit乗算 4回と 32bitシフト(or なんか) 32bit 加算 3回でできますね。 (オーバーフロー処理とか除く)
|