問題タブ [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.

0 投票する
11 に答える
32274 参照

assembly - x86 アセンブリ言語を使用して 2 つの 64 ビット数を乗算するにはどうすればよいですか?

どうすればいいの...

  • 2 つの 64 ビット数の乗算

  • 2 つの 16 桁の 16 進数の乗算

...アセンブリ言語を使用。

レジスタ %eax、%ebx、%ecx、%edx、およびスタックのみを使用できます。

編集: ああ、x86 で ATT 構文を使用しています EDIT2:
アセンブリに逆コンパイルすることはできません...

0 投票する
5 に答える
7064 参照

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 ビット浮動小数点数の利点は何ですか?
  • その適用性は薄れていますか?
0 投票する
4 に答える
4969 参照

visual-c++ - MSVCで拡張精度float(80ビット)をdouble(64ビット)に変換します

MSVC win32 / win64で拡張精度float(80ビット値、long double一部のコンパイラーでも知られています)からdouble(64ビット)に変換するための最も移植性が高く「正しい」方法は何ですか?

long doubleMSVCは現在(2010年現在)それがdouble同義語であると想定しています。

おそらくインラインasmでfld/fstpアセンブラペアを記述できますが、MSVCのwin64コードではインラインasmを使用できません。このアセンブラコードを別の.asmファイルに移動する必要がありますか?それは本当にそうなので、良い解決策はありませんか?

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

c - gccはamd64で128ビットintをサポートしていますか?

gccはamd64で128ビットintをサポートしていますか?

それを定義する方法は?

scanf / printfを使用して読み取り/書き込みを行う方法は?

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

bigint - XMM レジスタを使用して 128 ビット整数演算を実行できますか?

私の印象は絶対にありませんが、何か巧妙なトリックがあるのでしょうか?ありがとう。

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

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

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

floating-point - OCamlの80ビット拡張精度浮動小数点

IA-32およびx86-64アーキテクチャで80ビット拡張精度浮動小数点型を利用するOCamlライブラリはありますか?

MPFRバインディングについては知っていますが、私の理想的なライブラリはもっと​​軽量です。過去の浮動小数点命令を利用するのが理想的です。

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

c - 倍精度引数から始まる 80 ビットの拡張精度計算のプロパティ

補間関数の 2 つの実装を次に示します。引数u1は常に ~ の間0.です1.

80 ビットlong doubles を使用する厳密な IEEE 754 プラットフォームでは、 のすべての計算はinterpol_64()IEEE 754 の倍精度に従って行われinterpol_80()、80 ビットの拡張精度で行われます。プログラムは次を出力します。

「関数が返す結果は常に と の間」という性質に興味がありu2ますu3interpol_64()上記の値が示すように、このプロパティは の false ですmain()

プロパティが真である可能性はありますinterpol_80()か? そうでない場合、反例は何ですか?u2 != u3それらの間に最小距離があることを知っていれば役に立ちますか? プロパティが真であることが保証される中間計算の仮数幅を決定する方法はありますか?

編集:私が試したすべてのランダム値で、中間計算が内部的に拡張精度で行われたときに保持されたプロパティ。interpol_80()引数を取る場合long double、反例を構築するのは比較的簡単ですが、ここでの質問は特にdouble引数を取る関数に関するものです。これにより、反例があったとしても、その反例を構築することがはるかに難しくなります。


注: x87 命令を生成するコンパイラは、 と に対して同じコードを生成する可能性がありますinterpol_64()interpol_80()、これは私の質問に接しています。

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

c++ - 浮動小数点型が IEEE-754 に完全に準拠しているかどうかを返す関数?

floatをチェックする関数、doubleまたはlong doubleIEEE-754 形式に完全に準拠する関数を書きたいと思います。つまり:

それに対応していると思いましたが、私のLinux 64ビットでstd::numeric_limits<T>::is_iec559は返さtrueれますが、内部的にIntel形式でエンコードされています。では、どうやってそれを行うのですか?long doublesizeof(long double) = 16 bytes80-bit