2016-10-19 1 views
1

저는 초보자 인 mpfr입니다. 특정 계산을하고이 코드를 볼 수있게하려면이 프로그램을 작성했지만이 오류가 나타나는 이유를 모르겠습니다. 이 코드가 가장 중요합니다.오류 : c (mpfr libary)에 배열을 반환하는 함수로 선언되었습니다.

mpfr_t myfct(int n) 

{ 
    /......./ 
     return mpfr_get(result,MPFR_RNDN); 

} 

int main(void) 
{ 

    mpfr_t U; 
    mpfr_set_default_prec (53); 

    mpfr_set_emin (-1073); 
    mpfr_set_emax (1024); 

    n=10; 
    mpfr_init2(U,24); 
    mpfr_get(U,my_fct(n),MPFR_RNDN); 
    mpfr_printf ("result: %.40Rg\n", U); 

    mpfr_clear(U); 

    return 0; 
} 

무엇이 문제입니까?

+0

'my_fct'는 myfct와 다릅니다. –

+0

그냥 타이핑 오류 일뿐입니다. – wolfgunner

답변

0

GMP 유형과 마찬가지로 mpfr_t은 크기가 1 인 배열입니다 (요소는 구조체이지만 실제로 알 필요는 없습니다).

  1. 호출자 할당하고 어떤 주어진 정밀도로 mpfr_t inits : 당신이 MPFR 번호를 반환하는 함수를 작성하기로 결정한 경우 (다른 사람의 사이에서) 2 가능성이있다. 이 경우 mpfr_t을 함수의 인수로 넣어야하며 실제로 전달 된이 배열에 대한 포인터입니다 (C 언어의 규칙에 따라). 기본적으로 이것은 변수 by reference을 전달하는 것으로 볼 수 있습니다. MPFR 함수는이 메서드를 사용합니다.
  2. 호출자가 아무 것도 할당하지 않습니다. 함수의 프로토 타입은 구조체에 포인터 mpfr_ptr을 반환해야합니다. 따라서이 함수는 일반적으로 malloc을 사용하여 mpfr_t을 할당 한 다음 (함수가 반환 될 때 메모리가 해제되지 않도록) mpfr_init2으로 구조를 초기화합니다. 정밀도는이 함수로 선택하거나 인수로 전달할 수 있습니다.

참고 : 프로그램에는 여러 가지 오타가 있지만,이 질문의 요점은 아닙니다.

0

mpfr_t은 다른 배열 유형과 마찬가지로 반환 값 유형으로 cannot be used입니다. # 1592 참조.

mpfr_t 값을 반환하려면 모든 MPFR 함수가 사용하는 규칙을 따르고 함수 매개 변수를 통해 반환하십시오.

코드에서 또 다른 오류가 : mpfr_get()이 (협약에 따라, haven`t 실제로 MPFR 워드 프로세서에서 이러한 기능을 찾을 수 없음) int를 반환해야 아닌 mpfr_t, 위의 내용 참조.

관련 문제