【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】
소개
이번에는 Visual Studio 2017에서 MPIR(GMP)의 도입 방법에 대해 설명합니다.
そろそろMPIR(GMP)に手を出してみようかな라고 생각하는 분이나,Visual StudioでプログラミングしてるけどMPIR(GMP)の入れ方がわからない라는 분을 향해 쓰고 있습니다.
이것을 보면 누구나 MPIR(GMP)를 도입할 수 있다! 해야
다운로드
⇒여기에서 MPIR〇〇source.zip을 다운로드합니다.

MPIR〇〇source.zip을 선택합니다.
이 설명에서는 MPIR 3.0.0 source.zip를 사용합니다.
다운로드 후
다운로드한 MPIR〇〇source.zip을 すべて展開(解凍) 합니다.
이번에는 배포 위치를 Cドライブ直下(Windows (C:))에 둡니다.

배포에는 적당한 시간이 걸립니다.

배포가 끝나면 다음.
dll_mpir_gc 빌드
확장된 폴더C:\mpir-〇〇를 열면build.vcXX (XX는 숫자)라는 폴더가 있다고 생각합니다.
1번 숫자가 큰 것을 열어 주세요.
mpir.sln 파일이 있으므로 Visual Studio 2017에서 시작합니다.

이 설명에서는 C:\mpir-3.0.0\build.vc15\mpir.sln에있었습니다.
시작하면 먼저 왼쪽 상단에Debug를 Release로Win32를 x64로 변경하십시오.

그런 다음 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
프로젝트의 재대상을 선택합니다.

확인을 선택합니다.

다음도 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
빌드를 선택합니다.

무사히 출력할 수 있었습니다.

mpir.sln를 닫습니다.
Visual Studio에서 설정
그런데, 여기부터가 프로덕션입니다.
화면의 메뉴에서 プロジェクト(P)에서 〇〇のプロパティ를 누릅니다.
왼쪽 C/C++ ⇒ 全般 ⇒ 追加のインクルードディレクトリ에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
C:\mpir-3.0.0
왼쪽 リンカー ⇒ 全般 ⇒ 追加のライブラリディレクトリ에 다음 중 하나를 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
x86의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\Win32\Release
x64의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\x64\Release
왼쪽 リンカー ⇒ 入力 ⇒ 追加の依存ファイル에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
mpir.lib

이번에는 콘솔 프로젝트로 사용하기 때문에,
왼쪽 リンカー ⇒ システム ⇒ サブシステムコンソール (/SUBSYSTEM:CONSOLE)
합시다.
마지막으로 만든 프로젝트의
소스 코드가 들어있는 폴더에mpir.dll 넣으면 준비 완료입니다.
mpir.dll는 C:\mpir-〇〇\dll\(Win32 or x64)\Release에 있습니다.
프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 후,
"탐색기에서 폴더 열기"
을 누르면 해당 폴더가 열립니다.
이 해설에서는C:\mpir-3.0.0\dll\x64\Release\mpir.dll에 있었다.

MPIR (GMP)을 사용할 수 있는지 테스트
이번에는 메르센 소수를 구합시다.
Source.hpp#include <cstdint>
#include <iostream>
#include <mpirxx.h>
#include <chrono>
bool lucasLehmerTest(const int_fast32_t p_) {
mpz_class m = 1;
m <<= p_;
--m;
mpz_class s = 4;
for (int_fast32_t i = 2; i < p_; ++i)
s = (s*s - 2) % m;
if (s == 0) return true;
return false;
}
bool lucasLehmerTestFast(const int_fast32_t p_) {
mpz_class m{ 1 };
m <<= p_;
--m;
mpz_class s{ 4 };
mpz_class sqrt;
for (int_fast32_t i{ 2 }; i < p_; ++i) {
sqrt = s * s;
s = (sqrt & m) + (sqrt >> p_);
if (s >= m) s -= m;
s -= 2;
}
if (s == 0) return true;
return false;
}
int main() {
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
if (lucasLehmerTestFast(9689)) std::cout << "TRUE" << std::endl;
else std::cout << "FALSE" << std::endl;
end = std::chrono::system_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;
return 0;
}
출력 결과TRUE
232
실행할 수 있었습니다!
소스 코드 라이센스
These codes are licensed under CC0.
소스 코드는 자유롭게 사용하십시오.
Reference
이 문제에 관하여(【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gis/items/92b7fbf279d3ca6227fe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
⇒여기에서 MPIR〇〇source.zip을 다운로드합니다.

MPIR〇〇source.zip을 선택합니다.
이 설명에서는
MPIR 3.0.0 source.zip를 사용합니다.다운로드 후
다운로드한 MPIR〇〇source.zip을 すべて展開(解凍) 합니다.
이번에는 배포 위치를 Cドライブ直下(Windows (C:))에 둡니다.

배포에는 적당한 시간이 걸립니다.

배포가 끝나면 다음.
dll_mpir_gc 빌드
확장된 폴더C:\mpir-〇〇를 열면build.vcXX (XX는 숫자)라는 폴더가 있다고 생각합니다.
1번 숫자가 큰 것을 열어 주세요.
mpir.sln 파일이 있으므로 Visual Studio 2017에서 시작합니다.

이 설명에서는 C:\mpir-3.0.0\build.vc15\mpir.sln에있었습니다.
시작하면 먼저 왼쪽 상단에Debug를 Release로Win32를 x64로 변경하십시오.

그런 다음 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
프로젝트의 재대상을 선택합니다.

확인을 선택합니다.

다음도 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
빌드를 선택합니다.

무사히 출력할 수 있었습니다.

mpir.sln를 닫습니다.
Visual Studio에서 설정
그런데, 여기부터가 프로덕션입니다.
화면의 메뉴에서 プロジェクト(P)에서 〇〇のプロパティ를 누릅니다.
왼쪽 C/C++ ⇒ 全般 ⇒ 追加のインクルードディレクトリ에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
C:\mpir-3.0.0
왼쪽 リンカー ⇒ 全般 ⇒ 追加のライブラリディレクトリ에 다음 중 하나를 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
x86의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\Win32\Release
x64의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\x64\Release
왼쪽 リンカー ⇒ 入力 ⇒ 追加の依存ファイル에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
mpir.lib

이번에는 콘솔 프로젝트로 사용하기 때문에,
왼쪽 リンカー ⇒ システム ⇒ サブシステムコンソール (/SUBSYSTEM:CONSOLE)
합시다.
마지막으로 만든 프로젝트의
소스 코드가 들어있는 폴더에mpir.dll 넣으면 준비 완료입니다.
mpir.dll는 C:\mpir-〇〇\dll\(Win32 or x64)\Release에 있습니다.
프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 후,
"탐색기에서 폴더 열기"
을 누르면 해당 폴더가 열립니다.
이 해설에서는C:\mpir-3.0.0\dll\x64\Release\mpir.dll에 있었다.

MPIR (GMP)을 사용할 수 있는지 테스트
이번에는 메르센 소수를 구합시다.
Source.hpp#include <cstdint>
#include <iostream>
#include <mpirxx.h>
#include <chrono>
bool lucasLehmerTest(const int_fast32_t p_) {
mpz_class m = 1;
m <<= p_;
--m;
mpz_class s = 4;
for (int_fast32_t i = 2; i < p_; ++i)
s = (s*s - 2) % m;
if (s == 0) return true;
return false;
}
bool lucasLehmerTestFast(const int_fast32_t p_) {
mpz_class m{ 1 };
m <<= p_;
--m;
mpz_class s{ 4 };
mpz_class sqrt;
for (int_fast32_t i{ 2 }; i < p_; ++i) {
sqrt = s * s;
s = (sqrt & m) + (sqrt >> p_);
if (s >= m) s -= m;
s -= 2;
}
if (s == 0) return true;
return false;
}
int main() {
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
if (lucasLehmerTestFast(9689)) std::cout << "TRUE" << std::endl;
else std::cout << "FALSE" << std::endl;
end = std::chrono::system_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;
return 0;
}
출력 결과TRUE
232
실행할 수 있었습니다!
소스 코드 라이센스
These codes are licensed under CC0.
소스 코드는 자유롭게 사용하십시오.
Reference
이 문제에 관하여(【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gis/items/92b7fbf279d3ca6227fe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
확장된 폴더
C:\mpir-〇〇를 열면build.vcXX (XX는 숫자)라는 폴더가 있다고 생각합니다.1번 숫자가 큰 것을 열어 주세요.
mpir.sln 파일이 있으므로 Visual Studio 2017에서 시작합니다.
이 설명에서는
C:\mpir-3.0.0\build.vc15\mpir.sln에있었습니다.시작하면 먼저 왼쪽 상단에
Debug를 Release로Win32를 x64로 변경하십시오.
그런 다음 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
프로젝트의 재대상을 선택합니다.

확인을 선택합니다.

다음도 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
빌드를 선택합니다.

무사히 출력할 수 있었습니다.

mpir.sln를 닫습니다.Visual Studio에서 설정
그런데, 여기부터가 프로덕션입니다.
화면의 메뉴에서 プロジェクト(P)에서 〇〇のプロパティ를 누릅니다.
왼쪽 C/C++ ⇒ 全般 ⇒ 追加のインクルードディレクトリ에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
C:\mpir-3.0.0
왼쪽 リンカー ⇒ 全般 ⇒ 追加のライブラリディレクトリ에 다음 중 하나를 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
x86의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\Win32\Release
x64의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\x64\Release
왼쪽 リンカー ⇒ 入力 ⇒ 追加の依存ファイル에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
mpir.lib

이번에는 콘솔 프로젝트로 사용하기 때문에,
왼쪽 リンカー ⇒ システム ⇒ サブシステムコンソール (/SUBSYSTEM:CONSOLE)
합시다.
마지막으로 만든 프로젝트의
소스 코드가 들어있는 폴더에mpir.dll 넣으면 준비 완료입니다.
mpir.dll는 C:\mpir-〇〇\dll\(Win32 or x64)\Release에 있습니다.
프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 후,
"탐색기에서 폴더 열기"
을 누르면 해당 폴더가 열립니다.
이 해설에서는C:\mpir-3.0.0\dll\x64\Release\mpir.dll에 있었다.

MPIR (GMP)을 사용할 수 있는지 테스트
이번에는 메르센 소수를 구합시다.
Source.hpp#include <cstdint>
#include <iostream>
#include <mpirxx.h>
#include <chrono>
bool lucasLehmerTest(const int_fast32_t p_) {
mpz_class m = 1;
m <<= p_;
--m;
mpz_class s = 4;
for (int_fast32_t i = 2; i < p_; ++i)
s = (s*s - 2) % m;
if (s == 0) return true;
return false;
}
bool lucasLehmerTestFast(const int_fast32_t p_) {
mpz_class m{ 1 };
m <<= p_;
--m;
mpz_class s{ 4 };
mpz_class sqrt;
for (int_fast32_t i{ 2 }; i < p_; ++i) {
sqrt = s * s;
s = (sqrt & m) + (sqrt >> p_);
if (s >= m) s -= m;
s -= 2;
}
if (s == 0) return true;
return false;
}
int main() {
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
if (lucasLehmerTestFast(9689)) std::cout << "TRUE" << std::endl;
else std::cout << "FALSE" << std::endl;
end = std::chrono::system_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;
return 0;
}
출력 결과TRUE
232
실행할 수 있었습니다!
소스 코드 라이센스
These codes are licensed under CC0.
소스 코드는 자유롭게 사용하십시오.
Reference
이 문제에 관하여(【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gis/items/92b7fbf279d3ca6227fe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
C:\mpir-3.0.0
C:\mpir-3.0.0\build.vc15\dll_mpir_gc\Win32\Release
C:\mpir-3.0.0\build.vc15\dll_mpir_gc\x64\Release
mpir.lib
コンソール (/SUBSYSTEM:CONSOLE)
이번에는 메르센 소수를 구합시다.
Source.hpp
#include <cstdint>
#include <iostream>
#include <mpirxx.h>
#include <chrono>
bool lucasLehmerTest(const int_fast32_t p_) {
mpz_class m = 1;
m <<= p_;
--m;
mpz_class s = 4;
for (int_fast32_t i = 2; i < p_; ++i)
s = (s*s - 2) % m;
if (s == 0) return true;
return false;
}
bool lucasLehmerTestFast(const int_fast32_t p_) {
mpz_class m{ 1 };
m <<= p_;
--m;
mpz_class s{ 4 };
mpz_class sqrt;
for (int_fast32_t i{ 2 }; i < p_; ++i) {
sqrt = s * s;
s = (sqrt & m) + (sqrt >> p_);
if (s >= m) s -= m;
s -= 2;
}
if (s == 0) return true;
return false;
}
int main() {
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
if (lucasLehmerTestFast(9689)) std::cout << "TRUE" << std::endl;
else std::cout << "FALSE" << std::endl;
end = std::chrono::system_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;
return 0;
}
출력 결과
TRUE
232
실행할 수 있었습니다!
소스 코드 라이센스
These codes are licensed under CC0.
소스 코드는 자유롭게 사용하십시오.
Reference
이 문제에 관하여(【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gis/items/92b7fbf279d3ca6227fe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)