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

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

bitwise-operators - BigNum にビットが設定されているかどうかを確認します

「123456789123456789123456789」のような文字列のようにフォーマットされたbignumがあり、指定されたビットが設定されているかどうかを確認する必要があります。コンポーネントは、この文字列の 1 桁の数字です。

ビット54が設定されているかどうかを確認したい場合は、通常、次のようにします: NyNumber&(1<<54)

問題は、使用している bignum ライブラリに AND または SHIFT がないことです。

問題は次のとおりです。任意のサイズの文字列のようにフォーマットされた数値にビットが設定されているかどうかを確認するにはどうすればよいですか?

編集: 明確にするために: 私は次のライブラリでAutoit3と呼ばれる小さなスクリプト言語を使用しています: http://www.autoitscript.com/forum/topic/83529-bignum-udfこれは BigNums を文字列として表します。

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

c - 符号なしの計算がオーバーフローする可能性があるかどうかを事前に判断する方法は?

個人的なプロジェクトとして、私は自分のペット プロジェクトの任意精度数値型の実装に取り​​組んでいます。

私は、これを行う人気のある、テスト済みの堅牢なライブラリをすべて知っています。自己啓発教育プロジェクトとして解決に取り組みたい。

私はその領域を調査しており、実際に計算を行う前に、操作がオーバーフローを引き起こすかどうかを大まかに予測する方法があるかどうかを調べようとしています. 誤検知についてもそれほど心配していません。

計算に適した最小のスペースを使用できるようにしたい。計算がそのネイティブの境界内に留まる場合は、そこにとどめます。

例:これを検出し、結果が64 ビットの解像度を超える可能性Multiplying two 64 bit Integers if each are large enough will cause an overflow.がある場合にのみ、数値を自分の数値型にアップコンバートしたいと考えています。この実験では、符号付きの数値を使用します。

オーバーフロー/アンダーフローを検出する最も健全で効率的な方法は何ですか?

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

c# - C#ヘルプの小数の任意精度?

C# で chudnovsky メソッドを使用して Pi を計算するための現在のコードを次に示します。

そのため、J# ライブラリを含め、java.math を含めました。すべての「double」を「BigDecimal」に置き換えると、次のコンパイル エラーが発生します。

http://f.cl.ly/items/1r2X26470d0d0n260p0p/Image%202011-11-14%20at%206.16.19%20PM.png

Doubles で完全に機能したため、これがループに Int を使用することの問題ではないことはわかっています。私の質問は、int と BigDecimal に関連するこれらのエラーをどのように解決しますか、または別の任意精度ライブラリを推奨できますか?

XMPIR を使用してみましたが、コンパイルするすべてのものを取得しましたが、次のようになります。

http://f.cl.ly/items/1l3C371j2u3z3n2g3a0j/Image%202011-11-14%20at%206.20.24%20PM.png

p/invoke を使用して xmpir をインクルードし、bigdecimal クラスが何であれ使用できるようにできますか?

お時間をいただきありがとうございます!

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

c++ - C++で任意の長さの整数を処理する

誰かが任意の大きな数で処理(操作などを行う...)するための優れたC ++ライブラリについて教えてもらえますか(任意の精度の浮動小数点数を処理するライブラリでもかまいませんが、整数の処理がより重要です)?

あなたが使用したライブラリのみを参照し、それをどのように設定してピックアップしたかを教えてください。おそらく非常に最小限の例か何かで(基本的に、言及されたライブラリに優れたドキュメントがない場合は、独自の入力を提供します)。

記録として、x64マシンでWindows 7を使用し、IDEとしてCodeBlocksを使用し、コンパイラーとして最新のMinGWを使用しています。

私が試したライブラリ:

  • vlint(十分な操作ではありませんが、小さなものには問題なく動作します)

  • bigint(セットアップが簡単で、エラーをコンパイルし、ドキュメントがあまりない(エラーが発生する可能性がある))

  • ttmath(有望と思われ、いくつかのBIGサンプルプログラムをコンパイルし、コンパイルエラーのためにいくつかの修正を実行しました。事実上ドキュメントがないため、構文が理解できません)

  • gmp(設定すらできませんでした)

ps Stackoverflowで何度も質問される理由を基本的に説明している「質問の暴言」を削除して、人々が最後まで読んでくれるようにしました。

->更新

だから私は最初の質問に対する直接の答えではない答えを選びましたが、これを解決するのに大いに役立ちました、そして私は私のような他のc++初心者が苦労することなく非常に大きな数で働き始めるのを助けるために私の発見のいくつかを投稿します私が簡単なステップバイステップのマイクロガイドで行ったような数日間のライブラリ。

私が使用していたもの(ガイドに従うためにこれを覚えておいてください):

  • Windows 7 Ultimate x64

  • Amd k10 x64(一部のライブラリはこれで動作しません、他のライブラリは異なる動作をします、他のライブラリはamd k10にカスタム調整されているので、これは私が使用したライブラリだけでなく、おそらく他のライブラリでも役立ちます)

  • Code :: Blocks 10.05 MinGWを含まないバージョン、ファイル名「codeblocks-10.05-setup.exe」(C:\ Program Files(x86)\ CodeBlocksにインストール)

  • MinGWパッケージ(binutils-2.15.91-20040904-1.tar.gz gcc-core-3.4.2-20040916-1.tar.gz gcc-g ++-3.4.2-20040916-1.tar.gz mingw-runtime- 3.11.tar.gz w32api-3.8.tar.gz)C:\MinGWで抽出

  • TTMath0.9.2ファイル名"ttmath-0.9.2-src.tar.gz"を解凍し、フォルダー "ttmath"をフォルダー"C:\ CPPLibs"(c ++ライブラリを配置したフォルダー)にコピーしました。

すべてを設定するために何をすべきか

  • [コード:ブロック]>[設定]>[コンパイラとデバッガ]に移動します(ここでコンパイラが自動的に検出されました。これが発生しない場合は、[選択したコンパイラ]で[GNU GCCコンパイラ]を選択し、[デフォルトに設定]をクリックしてから[ツールチェーン]をクリックします「コンパイラのインストールディレクトリ」の「Executables」で、コンパイラのインストールディレクトリを選択するか、自動検出を試みることができます。「C ++コンパイラ」でソートした場合は、「mingw32-g++。exe」を選択または書き込みます。これで、「SelectedCompiler」で「GNUGCCCompiler」を選択して「SetasDefault」をクリックします。

  • 「Code:Blocks> Settings>Compiler and Debugger」を離れずに、上記を整理して、「Search Directories」に移動し、「Compiler」をクリックして「Add」をクリックし、ライブラリを保存するフォルダまたは「次に、「ttmath」フォルダー(私の場合はC:\ CPPLibs)に移動し、「リンカー」に移動して同じことを行います。

  • 「 ttmath」ライブラリでコーディングを開始する#include <ttmath/ttmath.h>には、メイン関数の前にこの行を配置する必要があります(注:64ビットシステムを使用している場合、この行の前にもこの行を配置しないと、多くのエラーが発生します。苦労している他の人が見つけてウェブに投稿し、それが私のために働いたという修正を見つけるまで、このがらくたに苦労しています)ps私はそれが64ビットシステム専用だと思いますが、「ttmath .h"ヘッダーファイルが原因である可能性が最も高いです。 #define TTMATH_DONT_USE_WCHAR #include <ttmath/ttmath.h>

  • 大きな整数値を持つ変数の宣言ttmath::UInt<n> a,b,c;は、次のように行う必要があります。ここで、「a、b、c」は変数であり、「n」はこの形式の変数に格納できる数値のサイズです。「2 ^(32 * n)-1 "(32ビットシステムの場合)およびこの形式" 2 ^(64 * n)-1 "(64ビットシステムの場合)

  • これを行う場合a = 333;(333の代わりの数値はc ++の「longint」標準データ型よりも大きい)、変数に値を割り当てると、以前に指定したサイズに関係なく、このような変数に値を割り当てるため、コンパイルされません integerは、c ++の「longint」標準データ型と同じくらい大きくなる可能性があります(私はこれを自分で考えましたが、難しい方法です)。これよりも小さい値を使用して、正常にコンパイルされた後、実行します。プログラムで、前述の「long int」標準データ型が処理できる数よりも大きい数をこの変数に書き込もうとすると、計算が間違ってしまうので、次の点に注意してください。変数に値を割り当てるにはあなたがそのようにそれを割り当てなければならない方法a = "333";(はい、私はあなたがそれをこのように文字列として扱っていることを知っていますが、それは何の問題もなく問題なく動作します、そしてあなたが変数を「cout」することを決定した場合、それはあなたが使うように指数または科学的記数法の結果になることは決してありませんいくつかの「追加のステートメント」と組み合わせずに標準の整数データ型を使用して、適切な数を表示します)

psこの単純なルールを使用して整数とこのライブラリを操作すると、15〜20秒で単純なプログラム(コーディングに3分ほどかかりました)で100.000番目までのフィボナッチ数を計算し、その数は3ページのように占有されました。実用的なライブラリがどのように機能するかを理解すると(以前はほとんど助けがなかったので、ttmath Webサイトのサンプルのいくつかはかなり誤解を招く可能性がありますが、今は助けがあります)、それもかなり効率的であるように見えます。サイズ(「n」)を10000から50000に増やし、数値がサイズを保持し、最初と最後の桁が同じだったため、おそらく正しいでしょう。これは私が使用したソースコードです。テストのためだけに整数サイズに非常に大きな数値を使用しました。プログラムがどの長さで開始するかを実際に確認するのは面倒ですが、10.000番目のフィボナッチ数までの長さは、これまでにプログラムを「cout」にするため、定義した長さを超えないことを知っています。結果は10.000に達し、常に成長していました。また、プログラムを一時停止する前にシーケンスの最初の番号を確認し、「数字が大きくなる」のを見て、シーケンスの最初のフィボナッチ数を確認しました。これらは正しいものでした。注:このソースコードには、知りたいフィボナッチ数列の番号のみが表示されます。コメント行のコメントを外した場合にのみ、「増加している」番号が表示されます。

私はまだこのライブラリの任意精度の浮動小数点数をいじっていませんでしたが、コメントと回答に感謝し、人々がそれに興味を持っていることがわかったら、このガイドを拡張し続けます。

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

c++ - 非常に多数の対数

非常に多くのログを見つけなければなりません。

私はこれをC++で行います

すでに掛け算、足し算、引き算、割り算の関数を作ったのですが、対数に問題がありました。コードは必要ありません。これらの関数を使用してコードを実行する方法について簡単なアイデアが必要です。

ありがとう。

PS申し訳ありませんが、私はあなたに言うのを忘れました:私はその数の2進対数だけを見つけなければなりません

PS-2ウィキペディアで見つけました:

大きな数字で作り直した場合、正しく動作しますか?

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

javascript - JavaScript Number は任意精度の数値ですか?

数値リテラル1.34を JavaScript で記述すると、constructor名前がであることがわかりますNumber。JavaScript はリテラルで任意精度の演算を使用しますか?Number

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

java - Java での大整数演算 - 宿題

これは宿題で、合計で約 10 時間取り組んでいます。どこが間違っているかを確認するためのヒントが欲しいだけです。つまり、私の課題は基本的に大整数用の計算機を作成することであり、私の教授がスケルトンを提供してくれました。彼が私たちに書くように頼んだ関数は、減算、除算、乗算、累乗 (x^n)、および未満関数です。私のlessThan関数とmultiply関数は正しく動作すると確信していますが、おそらくそうではないかもしれません.

マイナス機能が効かないようで、なぜかよくわかりません。x - y = x + (-y) は、私が正しくやったと思ったことです。たぶん、私の教授が書いたプラス関数はそれでうまく機能しないのでしょうか? 考えてみました。そして、このマイナス関数は私の除算関数と累乗関数に不可欠だと思います。申し訳ありませんが、私のメモが明確ではありませんが、誰かがそれを見て、最も重要なマイナス関数のどこで私がめちゃくちゃになっているのかアドバイスをください.休み。

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

java - J2ME における任意精度の 10 進数の代替

J2ME を使用してレガシー プロジェクトにいくつかの変更を加えています。これまでは、算術演算が不要だったため、10 進数は文字列として扱われていました。値はテキストとしてのみ表示されました。

現在、任意精度の演算が必要です。Java SE の場合は を使用しますBigDecimalが、MIDP/CLDC API にはありません。

カスタムの DecimalNumber クラスを作成しようとしていましたが、いくつかのバグを修正し、単体テストで新しいバグを発見しているうちに、このクラスを堅牢でエラーのないものにするのに時間がかかることに気付きました。

では、車輪を再発明する代わりに、この目的のためにどの代替手段を再利用できるでしょうか? たとえば、BigIntegerおよびBigDecimalクラスを J2ME (CLDC1.1) に移植できますか? BigDecimalJavaSEを bouncycastle で移植しようとしている他の質問を読みましたBigInteger。これらは互換性がありますか?

どんな助けでも大歓迎です。

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

java - Java浮動小数点の危険性は、丸めによって回避できますか?

任意精度が必要な場合は、Java浮動小数点プリミティブ値を使用しないことが知られています。ゲッツは彼の優れた記事で問題を説明しました。

特定のプロジェクトで任意精度を達成する必要があり、BigDecimalクラスがなく(APIで使用できないため:JavaMEなど)、カスタム実装を開発する時間がない場合を想像してみてください。必要な精度が比較的小さい(小数点以下2〜4)ことを事前に知っていれば、フロート型とダブル型、および丸め関数を使用して、100%信頼性の高い緊急回避策を実装できますか?もしそうなら、APIのどの関数を使用できますか?この機能が利用できなかったが、それでも問題に対処できると思う場合、それを実装するのはどれほど複雑でしょうか?

0 投票する
6 に答える
828 参照

python - Python 計算エラー

API mpmath を使用して、次の合計を計算しています

によって定義されるセリエ u0、u1、u2 を考えてみましょう。

セリエは 2 に収束しますが、丸めの問題で 2000 に収束するようです。

私のコード:

私の悪い結果:

他の関数 (fdiv など) で実行しようとしたり、精度を変更しようとしました: 同じ悪い結果

このコードの何が問題になっていますか?

質問: コードを変更して値 2.0 を見つけるにはどうすればよいですか ??? 式で:

un+1 = 2003 - 6002/un + 4000/un un-1

ありがとう