問題タブ [extended-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.
assembly - x86 アセンブリ言語を使用して 2 つの 64 ビット数を乗算するにはどうすればよいですか?
どうすればいいの...
2 つの 64 ビット数の乗算
2 つの 16 桁の 16 進数の乗算
...アセンブリ言語を使用。
レジスタ %eax、%ebx、%ecx、%edx、およびスタックのみを使用できます。
編集: ああ、x86 で ATT 構文を使用しています EDIT2:
アセンブリに逆コンパイルすることはできません...
floating-point - 80 ビットの拡張精度データ型のアプリケーションと利点は何ですか?
ええ、私は80-bitと言うつもりでした。あれはタイプミスじゃない…
私の浮動小数点変数の経験では、single (32 ビット)、double (64 ビット)、long double (96 ビットまたは 128 ビットと呼ばれる) などの 4 バイトの倍数が常に関係していました。そのため、 AIFF (Audio Interchange File Format) ファイルを読み書きするコードを作成しているときに、 80 ビットの拡張精度データ型に遭遇したとき、少し混乱しました。サンプリングを格納するために拡張精度変数が選択されました。オーディオトラックのレート。
ウィキペディアをざっと見てみると、 IEEE 754-1985 標準の概要に 80 ビット形式の簡単な言及と共に上記のリンクが見つかりました(ただし、IEEE 754-2008 標準の概要にはありません)。特定のアーキテクチャでは、「extended」と「long double」は同義語のようです。
私が遭遇していないことの 1 つは、拡張精度データ型 (もちろん、AIFF ファイルのサンプリング レートを除く) を利用する特定のアプリケーションです。これにより、私は疑問に思いました:
- 一部のプログラミングアプリケーションで拡張精度が必要/有益である状況に遭遇した人はいますか?
- 明らかな「double よりも精度が高いが、long double のほとんどの実装よりもバイト数が少ない」以外に、80 ビット浮動小数点数の利点は何ですか?
- その適用性は薄れていますか?
visual-c++ - MSVCで拡張精度float(80ビット)をdouble(64ビット)に変換します
MSVC win32 / win64で拡張精度float(80ビット値、long double
一部のコンパイラーでも知られています)からdouble(64ビット)に変換するための最も移植性が高く「正しい」方法は何ですか?
long double
MSVCは現在(2010年現在)それがdouble
同義語であると想定しています。
おそらくインラインasmでfld
/fstp
アセンブラペアを記述できますが、MSVCのwin64コードではインラインasmを使用できません。このアセンブラコードを別の.asmファイルに移動する必要がありますか?それは本当にそうなので、良い解決策はありませんか?
c - gccはamd64で128ビットintをサポートしていますか?
gccはamd64で128ビットintをサポートしていますか?
それを定義する方法は?
scanf / printfを使用して読み取り/書き込みを行う方法は?
bigint - XMM レジスタを使用して 128 ビット整数演算を実行できますか?
私の印象は絶対にありませんが、何か巧妙なトリックがあるのでしょうか?ありがとう。
assembly - 8086 で 16 ビット レジスタを使用して 32 ビットの数値を操作する
2 つの 6 桁の 10 進数を取得してそれらの加算を表示するプログラムを作成しようとしていますが、16 ビット 8086 で数値をダブルワードとして定義し、ワード 1 に LO を、ワード 2 に HO を配置しました。以下のコードに似ていますが、私は次に何をするか考えていません。次の操作のアルゴリズムを提案してくれる人はいますか? thnx
このプログラムでは、di は、ユーザーが数値を入力したときにループを介して作成された数値を格納する場所です。di は 10 の倍数になり、次のように新しい数字が di に追加されます: 28 を取得するプロセス di=0*10+2=2 di= 2*10*+8=28
floating-point - OCamlの80ビット拡張精度浮動小数点
IA-32およびx86-64アーキテクチャで80ビット拡張精度浮動小数点型を利用するOCamlライブラリはありますか?
MPFRバインディングについては知っていますが、私の理想的なライブラリはもっと軽量です。過去の浮動小数点命令を利用するのが理想的です。
c - 倍精度引数から始まる 80 ビットの拡張精度計算のプロパティ
補間関数の 2 つの実装を次に示します。引数u1
は常に ~ の間0.
です1.
。
80 ビットlong double
s を使用する厳密な IEEE 754 プラットフォームでは、 のすべての計算はinterpol_64()
IEEE 754 の倍精度に従って行われinterpol_80()
、80 ビットの拡張精度で行われます。プログラムは次を出力します。
「関数が返す結果は常に と の間」という性質に興味がありu2
ますu3
。interpol_64()
上記の値が示すように、このプロパティは の false ですmain()
。
プロパティが真である可能性はありますinterpol_80()
か? そうでない場合、反例は何ですか?u2 != u3
それらの間に最小距離があることを知っていれば役に立ちますか? プロパティが真であることが保証される中間計算の仮数幅を決定する方法はありますか?
編集:私が試したすべてのランダム値で、中間計算が内部的に拡張精度で行われたときに保持されたプロパティ。interpol_80()
引数を取る場合long double
、反例を構築するのは比較的簡単ですが、ここでの質問は特にdouble
引数を取る関数に関するものです。これにより、反例があったとしても、その反例を構築することがはるかに難しくなります。
注: x87 命令を生成するコンパイラは、 と に対して同じコードを生成する可能性がありますinterpol_64()
がinterpol_80()
、これは私の質問に接しています。
c++ - 浮動小数点型が IEEE-754 に完全に準拠しているかどうかを返す関数?
float
をチェックする関数、double
またはlong double
IEEE-754 形式に完全に準拠する関数を書きたいと思います。つまり:
- float = IEEE-754 binary32
- double = IEEE-754 binary64
- long double = IEEE-754 binary128
それに対応していると思いましたが、私のLinux 64ビットでstd::numeric_limits<T>::is_iec559
は返さtrue
れますが、内部的にIntel形式でエンコードされています。では、どうやってそれを行うのですか?long double
sizeof(long double) = 16 bytes
80-bit