c#bigintegerデータ型の拡張メソッドの実装。 n番目のルートを抽出したり、ランダム値と指数を生成したりするなど。ニコライ・シュキッド著。
計算パフォーマンスを改善するためのプルリクエストをマージできてうれしいです。改善が値の範囲からの個々のケースのみに影響を与える場合でも。
これらの拡張機能を使用するには、次の名前の次のコードに追加する必要がありますSystem.NumericsおよびTheSquid.Numerics.Extensions 。
c#biginteger値のn番目のルート(平方根を含む)をすばやく計算する拡張メソッドの実装。
基本的に、ソースリポジトリからプロジェクトにクラスnthrootextensionをコピーできます。もう1つのオプションは、Nugetリポジトリからプロジェクトの依存関係にthesquid.numerics.extensionsパッケージを追加することです。
使用例:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var root = source . NthRoot ( exponent , out var isExactResult ) ;クローンリポジトリとビルドソリューションの直後にランダムNTHROOTテストを開始できます。起動速度n番目のルートテストの前に、生成テストと再構築ソリューションを実行する必要があります。
拡張法は、2つのルート計算アルゴリズムを使用します:有名なニュートンの方法と桁ごとの桁数桁の方法。ルートの程度が増加すると、ニュートン法による計算が遅くなり、桁ごとのメソッドが加速します。 100,000小数桁のルートラジカンド値の順序で、ルートの程度に対する計算速度の依存性は次のとおりです。

C#指定された範囲内でランダムなビッグインテガー値を生成するための拡張メソッドの実装。
基本的には、SourceリポジトリからプロジェクトへのClass NextBigIntegerExtensionをコピーできます。もう1つのオプションは、Nugetリポジトリからプロジェクトの依存関係にthesquid.numerics.extensionsパッケージを追加することです。
使用例:
var min = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var max = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var random = new Random ( DateTime . Now . Millisecond ) . NextBigInteger ( min , max ) ;nextbigintegerextensionTestsクラスを使用して、nextbiginteger拡張メソッドのランダムテストを開始できます。projectsquid.numerics.extensions.testsクローンリポジトリとビルドソリューションの直後に。
システムクラスランダムの拡張メソッド。メソッドは、ランダムクラスのインスタンスを使用して、ランダムバイトの配列を生成します。
c#キャッシュを使用してパラメーターを繰り返し使用して、パワーをより高速に計算するための拡張メソッドの実装。
基本的に、ソースリポジトリからプロジェクトにクラスのPowCacheDextensionをコピーできます。もう1つのオプションは、Nugetリポジトリからプロジェクトの依存関係にthesquid.numerics.extensionsパッケージを追加することです。
使用例:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var power = source . PowCached ( exponent ) ; Pow Cacheは自動的にクリアします。まず、電源を計算するときにメモリからエラーが発生した場合。その後、キャッシュは完全にクリアされます。第二に、キャッシュ内の要素の数がint.MaxValueの数に達する場合。その後、キャッシュは半分にクリアされます。さらに、キャッシュ内の要素の数を確認し、手動でクリアして、指定された数の要素を残すことができます。
使用例:
var available = PowCachedExtension . ItemsInCache ;
var threshold = long . Parse ( Console . ReadLine ( ) ) ;
if ( threshold < available ) PowCachedExtension . ShrinkCacheData ( threshold ) ;Project thesquid.numerics.extensions.testsのpowcachedextensionTestsクラスを使用して、CoachedextensionTestsクラスを使用して、CoachedextensionTestsクラスを使用して、CoachedextensionTestsクラスを使用して、ソリューションを作成してランダムテストを開始できます。
加速は、計算の学位の結果を記憶するだけでなく、計算の進行で得られた中間結果を記憶することによって達成されます。 0〜1000の範囲のランダムな地下値、0〜1000の範囲のランダム指数値の場合、イテレーションは最大2000000であるため、キャッシュ充填の計算速度の依存性は次のとおりです。
