皆さんは8,16bitのマイコンにある程度の正確さと速さを求められる数値計算をさせたいとき、どのような変数型を使っていますか?
short(16bit)やchar(8bit)などの整数型を使って計算させると、簡単にオーバーフローしてしまうと思うのですが、どうすればよいのでしょうか?
16bitマイコン(PIC24FJ64GA002)を使ってリアルタイムで高速フーリエ変換をさせたいと思い、この問題を解決するために16bitの固定小数点数(整数部7bit,小数部8bit,符号1bit)をC言語のソースコードで実装し、計算させてみたのですが、FFTの点数が512程度になってくるとやはりオーバーフローを起こしてしまいます。
固定小数点数に限界を感じたので、浮動小数点数を使いたいと思ったのですが、floatやdoubleなどの浮動小数点数は32bit以上の変数です。8bitや16bitのマイコンでも使えますが、これが最適なのでしょうか?
そこに疑問を感じて、16bitの浮動小数点数(仮数部10bit,指数部5bit,符号1bit)をソースコードで実装しようと、プログラムを作ろうと思ったのですが、私には骨の折れる作業なので、これが意味のあることなのか不安になって質問させていただきました。
今私が作ろうとしているものは、音楽用の簡易な観賞用のリアルタイムスペアナです。
よろしくおねがいします。
発生している問題・エラーメッセージ
double, floatが使えない場合に数値計算がしたいとき、どのような変数型を使えばよいのか
試したこと
ソースコードによる固定小数点数の実装。
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/23 07:58