2011-06-10 41 views
6

在我的追求爲尋找一個BIGINT圖書館,我碰到這個帖子: C or C++ BigInt library on Microsoft Windows對於任意精度,GMP是否有一個通用的替代方案?

接受的答案提到了GMP庫,但評論者之一聲稱庫不報錯了很優雅,也不會適合生產代碼。有沒有人用這個庫做任何長期的發展?有沒有什麼好的選擇?提前致謝。

+1

還有一些更類似的問題,例如:http://stackoverflow.com/questions/3191002/are-there-any-solid-大整數的實現-在-C/3191064#3191064。其中一個答案提到了幾個備選方案...... – 2011-06-10 14:56:21

回答

3

那麼,像GCC這樣的大型項目使用它的printf和編譯時計算(糾正我,如果我在這裏錯了),我認爲它足夠穩定。我認爲有些方法可以限制評論者擔心的內存不足錯誤,但是我沒有親自使用它,所以我無法幫助您。我只是說它是一個久經考驗的穩定圖書館。它甚至有一個C++接口庫。

+0

這可能是一個關於它自己的問題,但會將問題保留在帖子的上下文中。當你說「限制錯誤」時,我認爲你的意思是通過例外handeling,或者你會盡可能修改源代碼(嚇人)? – 2011-06-10 14:27:48

+0

不,我想象GMP有限制記憶的功能/定義。編輯GMP的來源是ludacris。查看[這裏](http://gmplib.org/manual/Memory-Management.html#Memory-Management)鏈接問題中的評論者似乎錯過了所有信息。 – rubenvb 2011-06-10 14:39:54

+1

AFAIU GCC使用GMP/MPFR/MPC進行恆定摺疊,因此在固定精度模式下工作。我想象如果你想進行任意的精確算術(例如精確的有理算術),任何可能的內存問題都可能出現。 – janneb 2011-06-10 15:34:34

4

Tcl語言的實現使用libtommath作爲其bigint庫,它看起來確實適合生產使用。 (這是一個C庫,不是C++,但它肯定是合適的。)

+1

@Vlad:不。實際上,C完全適合生產使用。由於它更容易控制某些平臺上的依賴關係,它肯定曾經是C比C++更適合的情況,但我不知道這是否仍然如此。 (Tcl的實現對連接的要求特別嚴格,作爲支持某些部署模型的一部分;大多數代碼不受這些限制,它需要比我需要的更多空間,而且它是無關緊要的無論如何,這個問題。) – 2011-06-10 14:26:23

相關問題