2013-11-04 6 views
1

해시 테이블의 키로 mpf_t/mpz_t GMP를 사용해야합니다. 숫자 표현의 원시 바이트에 액세스 할 수있는 효과적인 방법이 있습니까? 그래서 해시 함수를 통해 실행할 수 있습니까?해시 테이블의 키로 GMP 유형 (mpf_t/mpz_t) 사용

이미 설명서를 읽었지만 지금은 더 스마트하지 않습니다. ;)

고마워요! 감사합니다. Ethon

+1

그런 작업은 현재 지원되지 않습니다. 향후 릴리스에서 원시 표현에 액세스하기 위해 문서화 된 API를 추가 할 계획이 있습니다. 그동안 소스를 읽는 것이 도움이 될 수 있습니다 (의견이 있습니다!). –

답변

1

호기심에서 벗어나 값으로 정렬 할 수있는 이유는 무엇입니까? 비교는 MSB의 바이트/팔다리를 LSB로 비교하여 결과가 서로 다르게 반환되므로 매우 빠릅니다.

플랫폼에 종속적 인 mp_limb_t 유형을 사용하여 원시 데이터에 액세스 할 수 있습니다. mpz_tmpf_t은 모두 으로 지정된 주소에 저장되는 mp_limb_t 벡터를 가지며, _mp_size 필드의 절대 값으로 주어진 중요한 다리의 수를 갖습니다. (정의는 gmp.h입니다.)

물론 해시 함수가 8 비트 바이트 벡터에 의존하는 경우에는 사지 벡터를 변환해야합니다. 다행히도 mp_limb_t - GMP_LIMB_BITS의 비트 수는 정상적인 플랫폼에서 항상 8로 나눌 수 있습니다.

+0

일반적으로 'GMP_NUMB_BITS' 비트는 사지와 관련이 있으며 손톱 수가 8의 배수가 아닌 숫자가 될 수 있습니다. 그러나 손톱은 요즘 사용되지 않으므로 현재는 중요하지 않습니다. –