2015-05-01 37 views
1

我試圖exponentiate使用GMP庫mpz_ui_pow_ui()大位的數字,但我通過在mpz_class值給我的錯誤給錯誤mpz_class類型。爲什麼我會收到錯誤,以及如何使其工作?GMP使用mpz_pow功能

回答

1

https://gmplib.org/manual/Integer-Exponentiation.html

— Function: void mpz_ui_pow_ui (mpz_t rop, unsigned long int base, unsigned long int exp)

該函數unsigned long,不mpz_t

+0

它是如此奇怪,**任意精度算術庫**使用__normal__值左右。 – Slav

+0

@Slav還有另一個函數,它將基數作爲任意精度。在不是0或±1的基礎上使用不適合unsigned long的指數(或者在諸如win64等奇怪平臺上的某些變體)會產生無法放入內存的結果。 –

+0

那又是什麼功能?可悲的是我必須** mpz_pow_ui(...,exp.get_ui())**,但是** mpz_pow_ui(....,exp)**看起來更乾淨。除了美學之外,還可能會出現用硬盤驅動器的交換內存的使用情況,並且只用大於32位的實際指數進行計算。 – Slav