C#BigInteger数据类型的扩展方法的实现。例如提取第n个根,产生随机值和指示。由尼古拉(Nikolai Thesquid)作者。
我将很高兴合并您的拉动请求以提高计算性能。即使改进仅影响来自值范围的单个情况。
要使用这些扩展名,您需要以下命名空间添加到代码: System.Numerics和TheSquid.Numerics.Extensions 。
C#实现扩展方法,以快速计算BigInteger值的第n个根(包括平方根)。
基本上,您可以将类Nthrootextension从源存储库复制到项目。另一个选项是将thesquid.numerics.numerics.extensions软件包从nuget存储库中添加到项目的依赖项。
用法示例:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var root = source . NthRoot ( exponent , out var isExactResult ) ;您可以在克隆存储库和构建解决方案之后立即启动随机的NTHROOT测试。在开始速度nth root测试之前,您必须运行生成测试并重建解决方案。
扩展方法使用两种根计算算法:著名的牛顿的方法和数字数字方法。随着根的程度的增加,牛顿方法的计算减慢,数字划分方法会加速。根部辐射值阶的100,000小数位数,计算速度对根的依赖性如下:

C#实现扩展方法,以在指定范围内生成随机BigInteger值。
基本上,您可以将Class nextBigInteGerextension从源存储库复制到项目。另一个选项是将thesquid.numerics.numerics.extensions软件包从nuget存储库中添加到项目的依赖项。
用法示例:
var min = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var max = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var random = new Random ( DateTime . Now . Millisecond ) . NextBigInteger ( min , max ) ;您可以使用project thesquid.numerics.extensions.tests的NextBigInteGertensensions class开始对NextBigInteger扩展方法的随机测试,直接在克隆存储库和构建解决方案之后。
系统类随机的扩展方法。方法使用随机类的实例生成一个随机字节数组。
C#使用缓存使用重复参数更快地计算功率的扩展方法。
基本上,您可以将powcachedextension类从源存储库复制到项目。另一个选项是将thesquid.numerics.numerics.extensions软件包从nuget存储库中添加到项目的依赖项。
用法示例:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var power = source . PowCached ( exponent ) ; POW缓存自动清除自身。首先,如果计算电源时发生内存错误。然后将完全清除缓存。其次,如果缓存中的元素数量达到int.MaxValue的数量。然后,缓存将清除一半。此外,您可以检查缓存中的元素数量并手动清除它,并留下指定数量的元素。
用法示例:
var available = PowCachedExtension . ItemsInCache ;
var threshold = long . Parse ( Console . ReadLine ( ) ) ;
if ( threshold < available ) PowCachedExtension . ShrinkCacheData ( threshold ) ;您可以使用Project thesquid.numerics.extensions.tests在克隆存储库和构建解决方案后使用POWCACHEDEXTENSTESTS类开始对POWCACHED扩展方法的随机测试。
通过记住计算程度的结果以及记住计算进度中获得的中间结果来实现加速。在0到1000范围内的随机地下值时,随机指数值范围为0到1000,迭代量为2000000,计算速度对缓存填充的依赖性如下:
