libgmp を使用するコードがいくつかあります。ある時点で、ユーザーは非常に大きな数の階乗を要求することがあります。残念ながら、これにより libgmp が中止シグナルを発生させてしまいます。
たとえば、次のコード:
#include <cmath>
#include <gmp.h>
#include <iostream>
int main() {
mpz_t result;
mpz_init(result);
mpz_fac_ui(result, 20922789888000);
std::cout << mpz_get_si(result) << std::endl;
}
結果:
$ ./test
gmp: overflow in mpz type
Aborted
どうやら、生産された数は本当に大きいです。とにかく、中止よりもエラーをより適切に処理する方法はありますか? これは GUI ベースのアプリケーションであり、この種の問題を処理するには、アプリケーションを中止することはほとんど望ましくありません。