問題タブ [single-precision]
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.
python - Numpy スカラーのバイナリ演算は float64 に自動的にアップキャストされます
np.float32 と組み込みの Python int および float の間でバイナリ演算 (加算や乗算など) を実行し、戻り値の型として np.float32 を取得したいと考えています。ただし、np.float64 に自動的にアップキャストされます。
コード例:
np.float128 でこれを行うと、b も np.float128 になります。これにより、精度が維持されるため、これは良いことです。ただし、私の例では精度を維持するために np.float64 へのアップキャストは必要ありませんが、それでも発生します。2 ではなく 2.0 (Python float (64 ビット)) を a に追加した場合、キャストは理にかなっています。しかし、ここでも、私はそれを望んでいません。
私の質問は次のとおりです。二項演算子を np.float32 と組み込みの Python int/float に適用するときに行われるキャストを変更するにはどうすればよいですか? または、すべての計算で倍精度ではなく単精度を標準にすることも、解決策としてカウントされます。倍精度は必要ないからです。他の人がこれを求めており、解決策が見つかっていないようです。
私はnumpy配列とdtypesについて知っています。ここで、配列は常にその dtype を保持するため、必要な動作が得られます。ただし、配列の単一の要素に対して操作を行うと、望ましくない動作が発生します。np.ndarray (または np.float32) のサブクラス化と __array_priority__ の値の変更を含む、漠然とした解決策があります。これまでのところ、私はそれを機能させることができませんでした。
なぜ私は気にするのですか?Numba を使用して n-body コードを記述しようとしています。これが、配列全体に対して単純に操作を行うことができない理由です。すべての np.float64 を np.float32 に変更すると、速度が約 2 倍になります。これは重要です。np.float64 キャスト動作は、この高速化を完全に台無しにするのに役立ちます。これは、np.float32 配列に対するすべての操作が 64 精度で行われ、その後 32 精度にダウンキャストされるためです。
floating-point - 浮動小数点精度を 1 倍から 2 倍にする Mips
私はこのプログラムをミップで持っていますが、倍精度に変更するつもりはありませんでした。単精度と倍精度の浮動小数点命令には同じ命令があるように見えますが、.s の代わりに .d です。
assembly - AVR-Assembler で 2 つの 32 ビット浮動小数点数を加算する
AVR Studio を使用して 2 つの 32 ビット浮動小数点数を加算しようとしています。32 ビットの数値を 4 つの別々の 8 ビット レジスタに格納する必要があることはわかっています。次に、キャリー フラグを使用してレジスタを一緒に追加する必要があります。これは私がこれまでに持っているものです。5.124323 と 2.2134523 を追加します。
これは私に正しい答えを与えていないようです...ここで間違っているのは、コードの最後の4行のレジスタの順序だけだと確信しています。または、 add / adc 関数も間違っている可能性があります。誰かがこれで私を助けてくれますか?
c# - [1,2) の間の単精度浮動小数点数を反復処理します。
[1,2) の範囲のすべての単精度浮動小数点数 (23 小数ビット) を反復処理する必要があるプログラムに取り組んでいます。これについてどうすればよいかよくわかりません。このプログラムは C# で書いています。
誰かがこれについて私に助けを与えることができれば、それは素晴らしいことです. ありがとうございました!
octave - 単精度から倍精度を引くと0になります。私が望むものではありません
Octave を使用して、sin(x) に関連する丸め誤差を調べようとしています。次の数値が得られます。
-1.8718784 × 10^-8
と入力しましformat long
たが、それでもゼロになり、実際の答えを得る方法がわかりません。
floating-point - 大きな数 (1.23e29 など) を IEE 754 単精度浮動小数点形式に変換するにはどうすればよいですか?
ここで10進数からIEEE 754に変換する方法を学びましたが、投稿で説明されている方法ですべてを除算することなく、非常に大きな数を変換する方法がわかりません。
たとえば、-1.5845632e29 を IEEE 754 単精度浮動小数点数に変換する必要があります。この大きな数の基数 2 の対数を取得するよりも簡単な方法はありますか?