C# Biginteger 데이터 유형에 대한 확장 방법 구현. 예를 들어 Nth 루트 추출, 임의의 값 및 지수를 생성하는 것과 같은. Nikolai Thesquid.
계산 성능 향상을위한 풀 요청을 병합하게되어 기쁩니다. 개선이 값 범위에서 개별 사례에만 영향을 미치더라도.
이러한 확장을 사용하려면 System.Numerics 및 TheSquid.Numerics.Extensions System.numerics)에 따라 코드에 추가해야합니다.
C# biginteger 값에 대한 nth 루트 (제곱근 포함)를 신속하게 계산하기위한 확장 방법의 구현.
기본적으로 소스 리포지토리에서 프로젝트로 클래스 nthrootextension을 복사 할 수 있습니다. 또 다른 옵션은 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 테스트를 시작하고 솔루션을 구축 할 수 있습니다. 시작 속도 Nth 루트 테스트 전에 테스트 생성 및 재 구축 솔루션을 실행해야합니다.
확장 방법은 잘 알려진 Newton의 방법과 숫자 별 방법 인 두 가지 루트 계산 알고리즘을 사용합니다. 루트의 정도가 증가함에 따라 Newton 방법에 의한 계산이 속도가 느려지고 숫자 별 방법이 가속화됩니다. 루트 방사선 및 값 순서가 100,000 자리수 인 경우, 루트의 정도에 대한 계산 속도의 의존성은 다음과 같습니다.

C# 지정된 범위 내에서 임의의 biginteger 값을 생성하기위한 확장 방법의 구현.
기본적으로 Class NextBiginteGeRextension을 소스 저장소에서 프로젝트로 복사 할 수 있습니다. 또 다른 옵션은 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 ) ;클론 리포지토리 및 빌드 솔루션 직후 Project Thesquid.numerics.extensions.tests의 NextBiginteGerextensionTesss 클래스를 사용하여 NextBiginteger 확장 방법에 대한 임의의 테스트를 시작할 수 있습니다.
시스템 클래스의 확장 방법 무작위. 메소드는 랜덤 클래스의 인스턴스를 사용하여 임의 바이트 배열을 생성합니다.
C# 캐시를 사용하여 반복 된 매개 변수를 사용하여 전원의 빠른 계산을위한 확장 방법 구현.
기본적으로 소스 리포지토리에서 프로젝트로 클래스 PowCacheDextension을 복사 할 수 있습니다. 또 다른 옵션은 NUGET 저장소에서 프로젝트 종속성에 thesquid.numerics.extensions 패키지를 추가하는 것입니다.
사용 예 :
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의 PowCacheDextensionTests 클래스를 사용하여 PowCached Extension 메소드에 대한 임의의 테스트를 시작할 수 있습니다.
가속도는 계산 정도의 계산 결과를 암기하고 계산 진행 상황에서 얻은 중간 결과를 암기함으로써 달성됩니다. 임의의 지하실 값은 0에서 1000까지, 임의의 지수 값은 0에서 1000 사이이며 반복은 2000000까지 수로 계산 속도의 의존성은 다음과 같습니다.
