問題タブ [fixed-point]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1360 参照

matlab - 定点展開

私は最近、いくつかの固定小数点コーディングに取り組んでいます。

ADC から 16 ビットのサンプルを大量に取得し、16 ビットのフィルター係数で乗算すると、結果は 32 ビットの固定小数点数になる可能性があります。32 ビットの固定小数点 DSP をターゲットにしているので、これで問題ありません。しかし、それを別の 16 ビット固定小数点係数などで乗算したい場合は、オーバーフローが発生しますか? つまり、中間の切り捨てを行う必要があるということですか? 最終的には、結果を 16 ビット DAC に送信する必要があるため、切り捨てます。

MATLABでこれを行った経験のある人はいますか?

編集私は固定小数点ツールボックスを持っています。私が理解していないのは、16ビットワード長の数値を設定し、最大積長を16に設定し、それを別の16ビットワードで乗算すると、エラーが発生するということです? エラーを防ぐためにすべての切り捨てを実行する必要がある場合、固定小数点ツールボックスはどのように役立つのでしょうか? 入力が 16 ビットで 32 ビットのレジスタがある場合に、固定小数点ツールボックスを使用して可能な限り最適な丸め/オーバーフロー条件を確保する方法の例を探していると思います。

ありがとう

0 投票する
2 に答える
1808 参照

math - 固定小数点演算でのオーバーフロー

一部の学習演習と一部の趣味のプロジェクトとして、固定小数点演算を使用して AVR に Cooley-Tukey FFT アルゴリズムの独自の解釈を実装しています。私はこれまで固定小数点演算をあまり扱ったことがなく、実装の一部をどのように行うのが最善なのか疑問に思っています。この質問の要点は、関連する問題について正しく考えていることを確認するための要求だと思います。

CT アルゴリズムの心臓部には、次の方法 (疑似コード) での複素数値データに対する一連の乗算と加算が含まれます。

コサインおよびサイン データは、S.XXX'XXXX 形式の 8 ビット符号付きバイナリ小数であり、入力データも SXXX.XXXX 形式の 8 ビット符号付きバイナリ小数であり、乗算は 16 ビット符号付き小数積を生成します。 . 私が見たように、サインとコサインの特に「悪い」値、およびデータの実部と虚部の場合、temp1 または temp2 は 16 ビットの符号付き整数の限界にかなり近くなります。
データの実数部と虚数部の両方が、たとえば b0111.1111 である場合、Wolfram Alpha で少し調べてみると、サインとコサインの値が「悪い」場合、出力は単純な値よりも最大 1.4 倍大きくなる可能性があることがわかります。正弦波の最大値に入力の最大値を掛けると、

たとえば、正弦引数が b0111.1111 で入力値が b0111.111 の場合、出力は b0111111.00000001、つまり 10 進数で 16129 になります。1.4 倍、約 22580 になります。これは、符号付き 16 ビット整数の正の範囲をオーバーフローしませんが、次の行では、これらの積が入力データに加算および減算され、ここでの入力データが 16 ビットに変換されると仮定します。 、オーバーフローが発生する可能性があります。

トレードオフのように見えます: データの内部処理分解能を上げて処理時間を増やすか、入力データを振幅よりも低くしてオーバーフローを引き起こし、信号対雑音比を低下させます。それは物のサイズについてですか?

0 投票する
3 に答える
1322 参照

c++ - C ++で単純な数値型ラッパークラスを最適化する方法は?

C ++で固定小数点クラスを実装しようとしていますが、パフォーマンスに問題があります。私は問題をfloatタイプの単純なラッパーに減らしましたが、それでも遅いです。私の質問は-コンパイラがそれを完全に最適化できないのはなぜですか?

「float」バージョンは「Float」より50%高速です。なぜ?!

(私はVisual C ++ 2008を使用し、可能なすべてのコンパイラオプションをテストしました。もちろん、構成をリリースします)。

以下のコードを参照してください。

0 投票する
2 に答える
1873 参照

binary - -0 を 2 進数で表す方法

この質問は、abs(1) 未満で負の浮動小数点数を 32.32 形式に変換することに関するものです (例: -0.1234)。

これを 32.32 に変換すると、整数部分と小数部分がそれぞれ上位 32 ビット ワードと下位 32 ビット ワードに分けられます。上記の例では、上位 32 ビットは -0 を保持し、下位は .1234 を保持し、両方ともバイナリに変換されます。

問題は、この場合、-0 値を 2 進数で適切に表現するにはどうすればよいかということです。

0 投票する
1 に答える
195 参照

java - Javaで浮動小数点数を固定小数点数に変換するとどうなりますか(具体的にはjava me)

Java meプログラムをできるだけ効率的に実行したいと考えています。私の目標は、レイ キャストを作成することであり、ボクセルをトラバースする最良の方法を知りたいと考えています。浮動小数点数の変換と比較は非常に CPU を集中的に使用すると聞きました。そこで、各光線 x と y に特定の距離を追加し、残りを切り捨て、それらの座標を使用してボクセルの octree をチェックしない理由を考えました。基本的に、 Java meプログラムに対してこのようなことを行うためのより良い方法はありますか?

浮動小数点数を切り捨てますか?

0 投票する
2 に答える
1063 参照

iphone - iPhoneのコンパイルの最適化:浮動小数点または固定小数点?

私はiphone用のライブラリを構築しています(speexですが、他の多くのライブラリにも適用されると確信しています)。makeスクリプトには、浮動小数点の代わりに固定小数点を使用するオプションがあります。

iphone ARMプロセッサにはVFP拡張機能があり、浮動小数点計算を非常にうまく実行するので、固定小数点オプションを使用する方が良い選択だと思いますか?

誰かがすでにこれをベンチマークしていて、共有したいのなら、私は本当に彼に感謝します。

0 投票する
2 に答える
4124 参照

vhdl - vhdlの実変数からの固定小数点変換

vhdlに次のコードスニペットがあります。

今、私は1.2の固定小数点バージョンがシグナル「s」で利用可能になることを期待しています。

しかし、それは常に小数部分を無視します。's'には、小数部(ここでは「1」)のみが含まれます。

ここで何が欠けていますか?

0 投票する
1 に答える
2331 参照

c++ - 整数三角法用の C++ ライブラリ、オプションの近似で最適化された速度?

プロジェクトで、アドホック関数を使用し続けるよりも、ベクトルやその他の三角法のサポート クラスの構築を開始する方が理にかなっている点に到達しました。これには多くの C++ ライブラリがあると思いますが、使い慣れた速度と機能を犠牲にしたくありません。

具体的には、整数の角度を使用できるようにしたいと考えており、次のような近似によって得られる超高速を維持したいと考えています。

したがって、不必要に自分自身をロールバックする前に、使用する整数の幅を指定でき、上記のような高速な近似値を持つベクトルなどのテンプレート クラスを備えた C++ 用の非常に高速な固定小数点ライブラリはありますか? ?

0 投票する
2 に答える
90 参照

c# - エラーの繰り越しを防ぐ最善の方法は?

250 kHz で電圧をサンプリングして作成した大きなデータ配列があります。関連する時間とともにデータをファイルに出力したいと思います。私の最初のアプローチは、次のようにすることです(C#で):

明らかに、このアプローチの浮動小数点演算の固有の性質により、データの数秒後に重大になるエラーが蓄積し始めます。

この問題を解決するための私のアプローチは次のようになります。

これにより、すべてが十分に同期されますが、特にエレガントには見えません. これにアプローチするより良い方法はありますか?そして最後に、一番上のアプローチでは、 t += dt を t = i * dt と小数で使用していますか? ダブルではどうですか?

編集:指摘されているように、10 進数は浮動小数点ではありません。ここで10進数または2倍を使用する必要がありますか?

0 投票する
2 に答える
10140 参照

c - C の固定小数点符号なし除算

C で符号なし固定小数点除算を行うアルゴリズムが必要です。最大 32 ビット ワードを使用できます。

[0..15] の範囲の数値を使用できるようにしながら、整数部分を表すために必要なビット数を最小限に抑えたいと考えています。どうやら最小ビット数は4です。問題は、私が思いついたアルゴリズムが5ビットでしか動作しないことです。剰余を除数と比較し、除数よりも大きくなるまで剰余をシフトするため、除数の最上位ビットが 1 の場合、アルゴリズムは剰余をシフトするだけです (大きくなることはありません)。コードは次のとおりです。

解決策はあるがコードを理解したくない場合は、投稿してください。:)

例:

1.5 を 2 で割ると、0.75 になります。整数部に 4 ビット、小数部に 28 ビットを使用しているとします。したがって、数字は16進数です。