問題タブ [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 投票する
2 に答える
3140 参照

floating-point - 固定小数点アルゴリズムからの浮動小数点変換

24 ビットの固定小数点計算を使用するアプリケーションがあります。浮動小数点をサポートするハードウェアに移植しているので、速度を最適化するには、すべての固定小数点ベースの計算を浮動小数点ベースの計算に変換する必要があります。

このコード スニペットでは、仮数を計算しています

したがって、この計算以降、整数を仮数に変換し、指数を固定小数点精度 (23 ビット) にスケーリングします。float に変換しようとしたところ、仮数部を精度ビットで割り、指数部を精度ビットで減算すると、どうしてもうまくいきません。それを行うためのより良い方法を提案するのを手伝ってください。

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

performance - 固定小数点演算は苦労する価値がありますか?

リアルタイムで実行する必要がある流体力学のナビエストークス ソルバーに取り組んでいます。したがって、パフォーマンスは重要です。

現在、実行時間のかなりの部分を占めている多数のタイト ループを調べています。ボトルネックは 1 つもありません。これらのループのほとんどは、いくつかの浮動小数点演算を実行しますが、間に多くの分岐があります。

浮動小数点演算は、ほとんどの場合、加算、減算、乗算、除算、および比較に限定されています。これはすべて 32 ビット浮動小数点数を使用して行われます。私のターゲット プラットフォームは、少なくとも SSE1 命令を備えた x86 です。(アセンブラー出力で、コンパイラーが実際に SSE 命令を生成することを確認しました。)

私が扱っているほとんどの浮動小数点値の上限はかなり小さく、ゼロに近い値の精度はそれほど重要ではありません。それで、固定小数点演算に切り替えると速度が上がるのではないかという考えが浮かびました。本当に確実な唯一の方法は測定することだとわかっていますが、それには数日かかるかもしれないので、事前に成功の確率を知りたいです.

Doom の時代には固定小数点が大流行していましたが、2010 年現在の状況がどうなっているのかはわかりません。現在、浮動小数点のパフォーマンスにどれだけのシリコンが投入されているかを考えると、固定小数点演算が引き続き使用される可能性はありますか?速度が大幅に向上しますか? 私の状況に当てはまる実世界の経験を持っている人はいますか?

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

java - 数式の逆変換

Yの位置を計算する式があります。これは次のとおりです。

そして今、私はsyを持っています.yを次のように計算する必要があります:

しかし、変換は等号ではありません..〜と&演算子を会話する方法がわからないためだと思います。

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

android - AndroidでGL_FIXEDまたはGL_FLOATを使用する方が良いですか

私はそれGL_FIXEDがより速いと思っていたでしょうが、iPhoneのドキュメントは実際にはに変換する必要があるGL_FLOATので使用すると言っています。Androidでも同じですか?電話によって異なると思いますが、最近人気のあるもの(Nexus One、Droid / Milestoneなど)はどうですか?GL_FIXEDGL_FLOAT

ボーナスポイント:これは完全に文書化されていないようです(たとえば、グーグルで検索してGL_FIXEDください!)が、「ポイント」はどこにありGL_FIXEDますか?つまり、いくらの(GL_FIXED)1価値がありますか?

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

fixed-point - 固定小数点乗算の「ソリューション」、クレイジーまたは実行可能?

これだけ仮定してください:
私は16.16固定点システムを使用しています。
システムは32ビットです。
CPUには浮動小数点プロセッサがありません。
1.0 * 0.4999より大きい値の乗算では、オーバーフローが非常に差し迫っています。

最後にもう1つ仮定します...私が作業している値は、この操作でオーバーフローを引き起こすほど高くはないとしましょう...

だから問題は...これは天才のストローク(まだ考えられていないことは言うまでもありません)ですか、それとも完全な時間の無駄ですか?

0 投票する
7 に答える
35671 参照

c++ - C++ 固定小数点ライブラリ?

無料の C++ 固定小数点ライブラリを探しています (主に組み込みデバイスで使用するためのもので、任意精度の数学用ではありません)。基本的に、要件は次のとおりです。

  • 不必要なランタイム オーバーヘッドはありません。コンパイル時に実行できることはすべて、コンパイル時に実行する必要があります。
  • 固有のオーバーヘッドなしで、固定小数点と浮動小数点の間で透過的にコードを切り替える機能。
  • 固定小数点演算関数。平方根を取るために前後にキャストする必要がある場合、固定小数点を使用する意味はあまりありません。
  • 小さな足跡。

助言がありますか?

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

assembly - multiplpy longの後にアームアセンブラが右にシフトしますか?

ARMアセンブラ初心者の質問です。私は最初のアーム アセンブラ プログラムを書いており、この C フラグメントをコーディングしようとしています。

最初の部分をコーディングし、r10、r11 レジスターの合計を計算しました。

次に、「long long」を 24 ビット右シフトして、r10 および r11 レジスタから「res」の値を抽出する必要があります。それ、どうやったら出来るの ?

-ありがとう、

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

math - Cでの浮動小数点アルゴリズム

私は最近、浮動小数点演算がコンピューターでどのように機能するかを考えており、数式の背後にあるすべての技術の詳細を理解するのは難しいです。足し算、引き算、掛け算、割り算、余りの基本を理解する必要があります。これらを使用して、三角関数と数式を作成できるようになります。

私はそれについて何かを推測することができますが、それは少し不明確です。4バイトの整数を信号旗、基数、仮数で区切ることで不動点を作ることができることを私は知っています。これにより、1ビットのフラグ、5ビットの基数、および10ビットの仮数が得られます。32ビットのワードは浮動小数点値に最適です:)

2つのフロートの間に加算を行うには、2つの仮数を加算し、5ビットの基数にキャリーを加算するだけです。これは浮動小数点演算(または、正確には固定小数点演算)を実行する方法です。それとも私は完全に間違っていますか?

私が見たすべての説明は、数式や乗算などを使用しており、私が推測することに対して非常に複雑に見えるので、もう少し簡単になります。数学者ではなく、初心者のプログラマーに向けた説明が必要です。

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

c - 既知の範囲の固定小数点乗算

A*B可能な限り精度を保ちながら、16ビットの固定小数点で乗算しようとしています。A符号なし整数範囲で16ビットであり、B1000で除算され、常にとの間0.001です9.999。私がそのような問題に対処してからしばらく経ちました、それで:

  • A*B/100032ビット変数に移動してから16ビットに戻すだけで実行できることはわかっています
  • それより速くしたい
  • 32ビットに移行せずにすべての操作を実行したい(16ビットの乗算しかないため)

それを行う簡単な方法はありますか?

編集:A0から4000の間になるので、すべての可能な結果も16ビット範囲になります。

編集:ユーザーから来て、マスクにB桁ごとに設定します。そのため、操作はです。X.XXX/1000

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

floating-point - float to fixed conversion with different scaling factors

Can anyone please let me know What will be the difference between these approcahes when I convert fixed to float and float to fixed.

a) int a=32767; float b = 32765*(1/32767) // 16 bit scaling factor int c = b*32767;

b) int a=32767; float b = 32765*(1/1.0) // scaling factor=1 int c = b*1;

a) int a=32767; float b = 32765*(1/0x80000) // 24 bit scaling factor int c = b*(0x80000);

If my machine uses Q23 fixed point representation, which should I use ?