2017-05-24 1 views
-1

일부 matlab 코드를 C++로 변환했습니다. 코드의 일부 라인은 약 250,000 길이입니다. 또한 "2.209647215146515615616515615615103202897891 316e-258"과 같이 매우 큰 가수가 포함되어 있으며 정밀도가 중요합니다. 숫자가 0에 가까우며 0으로 바꿀 수는 없습니다.matlab에 변환하는 방법 긴 라인 방정식을 C + +로?

  • 첫째 : 빌드 시간이 너무 오래 걸립니다

    이 코드가 완벽하게 MATLAB에서 실행 (빠르고 정확한)하지만, C++에서 일부 문제가있는 것입니다.

  • 두 번째 : 빌드를 위해 오랜 시간을 보낸 후에 매우 느리게 작동합니다. Visual Studio 2015를 사용할 때이 코드를 쓸 때 커다란 크기의 선과 사전 처리 작업 때문에 작업이 중단되어 다시 시작해야합니다. C++ 및 Visual Studio IDE에서 긴 줄의 코드와 매우 큰 숫자를 사용하여 작업 할 수있는 방법이 있습니까?

+4

문제를 현지화하고 [mcve]를 제공하십시오. 표현을 간소화 할 수 없습니까? – m7913d

+0

'unsigned long long' 시도해 보셨습니까? – pandoragami

+1

@pandoragami 먼저 부호없는 long long은 정수에 대해서만 먼저 쓰이며이 질문은 double을 사용하기 때문에 작동하지 않습니다. 다음으로, 부호없는 long long은 20 자 정도의 숫자 만 저장할 수 있습니다. 반면에 percision에서 약 250 자리의 숫자가 필요합니다. –

답변

2

당신은 GMP가 부호있는 정수, 유리수에서 작동, 임의 정밀도 산술을위한 무료 도서관이다

을 gmplib.org 및 부동 소수점 숫자에서 GMP를 시도 할 수 있습니다. 은 GMP가 실행되는 시스템에서 사용 가능한 메모리가 암시하는 것을 제외하고는 정밀도에 실질적인 제한이 없습니다. GMP에는 함수의 풍부한 집합이 있으며 함수에는 일반 인터페이스가 있습니다.

당신은 Visual Studio를 사용하고 있기 때문에 당신의 질문은 매우 넓습니다. 기존 라이브러리로 이것을 컴파일하는 것은 악몽 일 수 있습니다. 나는 당신이 리눅스에 가서 "과학적 계산"을 위해 작업 할 것을 제안한다.

관련 문제