問題タブ [arbitrary-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 - Pythonでフォーマットされた任意精度の小数を印刷する
Python の任意精度の 10 進数は素敵ですが、きれいにフォーマットされた方法で出力する方法が見つからないようです。たとえば、次の式を計算するとします。
本来あるべきように、それは 2 で終わります。ただし、小数点以下 2 桁を表示するように書式設定しようとすると、浮動小数点数はあまり正確ではないため、2^70 に丸められます。
精度を落とさずに希望するフォーマットで印刷する方法はありますか?
(NumPy などの非標準モジュールを使用せずに)
delphi - Delphiの任意の長整数 - NXライブラリ?
Delphiの基本的な算術演算(少なくともadd、mul、div)を使用した任意の大きな整数の実装を探しています。
私がすでに見つけたすべてのソリューションは、非常に遅い (FGInt、BigInt、MyBigInt、UBigInts)、i386 CPU 固有 (sdpbigInt)、または C で実装されている (MPIR/GMP) のいずれかです。これまでのところ、MPIR の Delphi GMP ラッパーで最良の結果が得られましたが、私は純粋な Delphi/Asm ライブラリを好みます (MPIR には、C コンパイラがインストールされており、アルゴリズムを研究したり微調整したりする場合は C の知識が必要です)。
Marcel Martin によって作成された NX multiprecision ライブラリに関する肯定的なコメントを読みましたが、残念ながら、公式サイトhttp://www.ellipsa.euからダウンロードできなくなりました。コードはソースも含めてフリーウェアとして配布されていたので、他サイトから入手しても問題ありません。どなたか別のダウンロード リンクを教えてください。
よろしくお願いします。
performance - 長整数ルーチンは SSE の恩恵を受けることができますか?
私はまだ C++ で任意の長整数のルーチンに取り組んでいます。これまでのところ、64 ビット Intel CPU の加算/減算と乗算を実装しました。
すべて正常に動作しますが、SSE を使用して少し高速化できないかと考えました。SSE ドキュメントとプロセッサ命令リストを参照しましたが、使用できると思われるものを見つけることができませんでした。その理由は次のとおりです。
SSE には整数命令がいくつかありますが、ほとんどの命令は浮動小数点を処理します。整数で使用するように設計されているようには見えません (例えば、less の整数比較はありますか?)
SSE の考え方は SIMD (同じ命令、複数のデータ) であるため、2 つまたは 4 つの独立した操作の命令を提供します。一方、私は128ビットの整数加算(128ビットの入力と出力)のようなものを持ちたいと思っています。これは存在しないようです。(まだ?AVX2で?)
整数の加算と減算は、入力キャリーも出力キャリーも処理しません。そのため、手動で行うのは非常に面倒です (したがって遅い)。
私の質問は次のとおりです。私の評価は正しいですか、それとも見落としているものはありますか? 長整数ルーチンは SSE の恩恵を受けることができますか? 特に、add、sub、または mul ルーチンをより迅速に作成するのに役立ちますか?
math - 2 ^ 81桁を超える数値を表すためにどのようなオプションがありますか?
興味深い数学の問題に出くわしました。これには、 281桁を超える数字を使って数学を行う必要があります。各桁に1つのメモリユニットがあるシステムでは、これほど大きな数を表すことは不可能であることを私は知っていますが、これを回避する方法があるかどうか疑問に思いました。
私の最初の考えは、基数10(10進数)の代わりに非常に大きな基数を使用することでした。いくつか考えた後、最適な基数は桁数の平方根になると私は信じています(したがって、2 81桁の数の場合は、基数2 40 ishを使用します)。これは改善ですが、スケーリングがうまくいかず、それでも実際には実用的ではありません。
では、どのようなオプションがありますか?私は多くの任意精度ライブラリを知っていますが、この種の算術をサポートするためのスケールはありますか?
ありがとうo7
編集:もう少し考えた後、私は「最適なベースは桁数の平方根になる」について完全に間違っているかもしれないことに気付きましたが、a)それが理由です。
編集2:基数10の1000,000=基数16のF4240=基数8の364110基数16では、基数8に数値を格納するために20ビットが必要なので、基数を増やすと合計が10進数になるように見えます必要なビット数。(これも間違っている可能性があります)
c# - C#で任意精度の演算がサポートされていますか?
C#は任意精度の演算をサポートしていますか(これはbignumとも呼ばれると思います)?
そうでない場合、どのライブラリがそれをサポートしますか?
algorithm - ポケット電卓はどのようにして分数を単純化し、不正確な数値を分数として保持するのですか?
電卓 (カシオのポケット電卓など) が「500/12」などの方程式をどのように管理し、結果として「125/3」を返すことができるかを誰かが説明できますか? あるいは、誰かがこれを行うアルゴリズムに名前を付けることができますか?
不正確な数値とは、0.333 recurring など、一定の小数点以下の桁数で表すことができない数値を意味します。
Windows 電卓はこれを実証できます。「1/3」を実行すると、答えとして「0.3333333333333333」が得られますが、これに 3 を掛けると「1」に戻ります。
floating-point - 2 つの double の合計としての倍精度浮動小数点数
しばらくの間double-double 算術の論文とソース コードをたどっていますが、 dd_real ( として定義されているstruct dd_real { double x[2];...}
) 数値が 2 つの double にどのように分割されるかはまだわかりません。文字列で初期化すると、 と はどうdd_real pi = "3.14159265358979323846264338327950";
なるでしょうか? 私はそれを理解し、できればそれを行う小さな Python 関数を作成する必要があります。pi.x[0]
pi.xi[1]
QD ライブラリを呼び出したくない理由は、Python で正しい分割を再実装して、35 桁の精度定数 (文字列として指定)double2
を CUDA コードに送信することを好むからです。 GQD ライブラリによって double-double reals として扱われます。これは、CUDA で拡張精度計算を処理する唯一のライブラリのようです。残念ながら、Python 側では mpmath も除外されます。
math - 分数のない小数指数を解くアルゴリズム
無限精度の計算などで分数を使用できない場合、2^2.2 のようなものを解くための手順を誰か説明してもらえますか?
ruby - BigDecimal.sqrtよりも正確なRubyの平方根?
Ruby の BigDecimal クラスの目的は、速度を犠牲にして無限に任意に正確にすることだと思いました。違う:
まず、sqrt
少なくともドキュメントでは、パラメータなしで動作するはずです。次に、そのパラメーターが精度の場合、この操作には 4 で十分です (または、少なくとも 11 桁の精度が問題ないことを知る必要はありません)。
私が望む最後のことは、車輪を再発明して、独自の「任意に正確な二乗ライブラリ」を作成することです。
質問:
- 上記が起こらないように BigDecimal インスタンスにパラメータを設定することは可能ですか? (意味: 低精度で適切な結果を返す)
- BigDecimal オブジェクトに関する詳細情報はありますか (値の後の数字は何ですか)?
システム: Debian、32 ビット、ルビー 1.9.3p125